Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Hibernate OGM, Domain model persistence for NoSQL datastores
   *
   * License: GNU Lesser General Public License (LGPL), version 2.1 or later
   * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
   */
  package org.hibernate.ogm.options.navigation.source.impl;
  
 import java.util.Map;
 
An OptionValueSource which retrieves option values from Java annotations.

Author(s):
Davide D'Alto <davide@hibernate.org>
Gunnar Morling
 
 public class AnnotationOptionValueSource implements OptionValueSource {
 
 	private static final Log log = LoggerFactory.make();
 
 	}
 
 	public OptionsContainer getEntityOptions(Class<?> entityType) {
 		return options != null ? options.build() : .;
 	}
 
 	public OptionsContainer getPropertyOptions(Class<?> entityTypeString propertyName) {
 		OptionsContainerBuilder options = getPropertyOptionsentityType ).getnew PropertyKeyentityTypepropertyName ) );
 		return options != null ? options.build() : .;
 	}
 
 	private Map<PropertyKeyOptionsContainerBuildergetPropertyOptions(final Class<?> entityClass) {
 
 		for ( final Method method : entityClass.getMethods() ) {
 			String propertyName = ReflectionHelper.getPropertyNamemethod );
 			if ( propertyName == null ) {
 				continue;
 			}
 
 			final OptionsContainerBuilder optionsOfProperty = convertOptionAnnotationsmethod.getAnnotations() );
 			if ( optionsOfProperty != null ) {
 				optionsByProperty.putnew PropertyKeyentityClasspropertyName ), optionsOfProperty );
 			}
 		}
 
 		for ( final Field field : entityClass.getDeclaredFields() ) {
 			PropertyKey key = new PropertyKeyentityClassfield.getName() );
 
 			if ( optionsOfField != null ) {
 				OptionsContainerBuilder optionsOfProperty = optionsByProperty.getkey );
 				if ( optionsOfProperty != null ) {
 					optionsOfProperty.addAlloptionsOfField );
 				}
 				else {
 					optionsByProperty.putkeyoptionsOfField );
 				}
 			}
 		}
 
 		return optionsByProperty;
 	}
 
 		OptionsContainerBuilder builder = null;
 
 		for ( Annotation annotation : annotations ) {
 			builder = processAnnotationbuilderannotation );
 		}
 
 		return builder;
 	}
 
 	private <A extends AnnotationOptionsContainerBuilder processAnnotation(OptionsContainerBuilder builder, A annotation) {
 		AnnotationConverter<Annotationconverter = getConverterannotation );
 
 		if ( converter != null ) {
 			if ( builder == null ) {
				builder = new OptionsContainerBuilder();
			}
			addbuilderconverter.convertannotation ) );
		}
		return builder;
	}

Returns a converter instance for the given annotation.

Parameters:
annotation the annotation
Returns:
a converter instance or null if the given annotation is no option annotation
	private <A extends AnnotationAnnotationConverter<A> getConverter(Annotation annotation) {
		MappingOption mappingOption = annotation.annotationType().getAnnotationMappingOption.class );
		// wrong type would be a programming error of the annotation developer
		@SuppressWarnings("unchecked")
		Class<? extends AnnotationConverter<A>> converterClass = (Class<? extends AnnotationConverter<A>>) ( mappingOption != null ? mappingOption.value()
null );
		try {
			return converterClass != null ? converterClass.newInstance() : null;
		}
		catch (Exception e) {
			throw .cannotConvertAnnotationconverterClasse );
		}
	}
	private <V> void add(OptionsContainerBuilder builderOptionValuePair<V> optionValue) {
		builder.addoptionValue.getOption(), optionValue.getValue() );
	}
New to GrepCode? Check out our FAQ X