List of usage examples for org.springframework.util ReflectionUtils doWithFields
public static void doWithFields(Class<?> clazz, FieldCallback fc)
From source file:com.kcs.core.utilities.Utility.java
public static void nullToEmptyString(final Object obj) { ReflectionUtils.doWithFields(obj.getClass(), new ReflectionUtils.FieldCallback() { @Override// w ww .j a v a2 s . c o m public void doWith(final Field field) throws IllegalArgumentException, IllegalAccessException { field.setAccessible(true); if (Utility.isNull(field.get(obj))) { Class<?> clazz = field.getType(); if (clazz == String.class) { field.set(obj, StringUtil.BLANK); } } } }); }
From source file:org.apache.camel.spring.postprocessor.MagicAnnotationPostProcessor.java
@Override public boolean postProcessAfterInstantiation(final Object bean, final String beanName) throws BeansException { ReflectionUtils.doWithFields(bean.getClass(), new ReflectionUtils.FieldCallback() { public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException { MagicAnnotation annotation = field.getAnnotation(MagicAnnotation.class); if (annotation != null && field.getType() == String.class) { log.info("Found MagicAnnotation on field " + field + " of class " + bean.getClass()); ReflectionUtils.makeAccessible(field); field.set(bean, annotation.value()); }/* w ww . jav a 2s . c o m*/ } }); return true; }
From source file:org.apache.dubbo.config.spring.beans.factory.annotation.CompatibleReferenceAnnotationBeanPostProcessor.java
/** * Finds {@link InjectionMetadata.InjectedElement} Metadata from annotated {@link Reference @Reference} fields * * @param beanClass The {@link Class} of Bean * @return non-null {@link List}//from ww w .j a v a 2s. c o m */ private List<ReferenceFieldElement> findFieldReferenceMetadata(final Class<?> beanClass) { final List<ReferenceFieldElement> elements = new LinkedList<ReferenceFieldElement>(); ReflectionUtils.doWithFields(beanClass, new ReflectionUtils.FieldCallback() { @Override public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException { Reference reference = getAnnotation(field, Reference.class); if (reference != null) { if (Modifier.isStatic(field.getModifiers())) { if (logger.isWarnEnabled()) { logger.warn("@Reference annotation is not supported on static fields: " + field); } return; } elements.add(new ReferenceFieldElement(field, reference)); } } }); return elements; }
From source file:org.compass.spring.support.CompassContextBeanPostProcessor.java
private synchronized List<AnnotatedMember> findClassMetadata(Class<? extends Object> clazz) { List<AnnotatedMember> metadata = this.classMetadata.get(clazz); if (metadata == null) { final List<AnnotatedMember> newMetadata = new LinkedList<AnnotatedMember>(); ReflectionUtils.doWithFields(clazz, new ReflectionUtils.FieldCallback() { public void doWith(Field f) { addIfPresent(newMetadata, f); }// www . j a v a2s . co m }); // TODO is it correct to walk up the hierarchy for methods? Otherwise inheritance // is implied? CL to resolve ReflectionUtils.doWithMethods(clazz, new ReflectionUtils.MethodCallback() { public void doWith(Method m) { addIfPresent(newMetadata, m); } }); metadata = newMetadata; this.classMetadata.put(clazz, metadata); } return metadata; }
From source file:org.lexevs.dao.database.utility.DaoUtility.java
public static void updateBean(final Object changes, Object beanToUpdate) { final String asReferenceSuffix = "AsReference"; final List<String> nullProperties = new ArrayList<String>(); ReflectionUtils.doWithFields(changes.getClass(), new FieldCallback() { @Override/*from www . jav a2s . c o m*/ public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException { field.setAccessible(true); Object value = field.get(changes); if (value == null) { nullProperties.add(removeLeadingUnderscore(field.getName())); } if (value instanceof Collection && ((Collection<?>) value).size() == 0) { nullProperties.add(removeTrailingList(removeLeadingUnderscore(field.getName()))); nullProperties .add(removeTrailingList(removeLeadingUnderscore(field.getName())) + asReferenceSuffix); } } }); BeanUtils.copyProperties(changes, beanToUpdate, nullProperties.toArray(new String[nullProperties.size()])); }
From source file:org.openlegacy.support.DefaultRegistryLoader.java
protected void fillEntityReferences(final EntitiesRegistry<?, ?, ?> entitiesRegistry, final EntityDefinition<?> entityDefinition) { if (entityDefinition == null) { return;//www . j a v a2s . c o m } Collection<?> parts = entityDefinition.getPartsDefinitions().values(); for (Object object : parts) { final PartEntityDefinition<?> part = (PartEntityDefinition<?>) object; ReflectionUtils.doWithFields(part.getPartClass(), new FieldCallback() { @Override public void doWith(Field field) { FieldDefinition fieldDefinition = part.getFieldsDefinitions() .get(MessageFormat.format("{0}.{1}", part.getPartName(), field.getName())); assignFieldWithValues(entitiesRegistry, fieldDefinition, field); if (TypesUtil.isPrimitive(field.getType())) { return; } if (List.class.isAssignableFrom(field.getType())) { return; } } }); } ReflectionUtils.doWithFields(entityDefinition.getEntityClass(), new FieldCallback() { @Override public void doWith(Field field) { FieldDefinition fieldDefinition = entityDefinition.getFieldsDefinitions().get(field.getName()); assignFieldWithValues(entitiesRegistry, fieldDefinition, field); if (TypesUtil.isPrimitive(field.getType())) { return; } if (List.class.isAssignableFrom(field.getType())) { return; } EntityDefinition<?> childEntity = entitiesRegistry.get(field.getType()); if (childEntity != null) { entityDefinition.getChildEntitiesDefinitions().add(childEntity); } } }); }
From source file:org.openlegacy.support.DefaultRegistryLoader.java
private static void handleEntityAnnotationFields( final Collection<FieldAnnotationsLoader> fieldAnnotationLoadersCollection, final EntitiesRegistry<?, ?, ?> entitiesRegistry, final Class<?> beanClass) { final List<FieldAnnotationsLoader> fieldAnnotationLoaders = sortFieldAnnoationLoaders( fieldAnnotationLoadersCollection); final CounterContainer counterContainer = new CounterContainer(); ReflectionUtils.doWithFields(beanClass, new FieldCallback() { @Override/* ww w . j av a 2 s . c o m*/ public void doWith(Field field) { loadDefinitionFromAnnotations(entitiesRegistry, beanClass, fieldAnnotationLoaders, field); counterContainer.counter++; } private void loadDefinitionFromAnnotations(final EntitiesRegistry<?, ?, ?> entitiesRegistry, final Class<?> beanClass, final Collection<FieldAnnotationsLoader> fieldAnnotationLoaders, Field field) { Annotation[] annotations = field.getAnnotations(); for (FieldAnnotationsLoader fieldAnnotationsLoader : fieldAnnotationLoaders) { for (Annotation annotation : annotations) { if (fieldAnnotationsLoader.match(annotation)) { if (logger.isDebugEnabled()) { logger.debug(MessageFormat.format( "Loading annotation {0} for field {1} in entity {2} into registry", annotation.annotationType().getSimpleName(), field.getName(), beanClass)); } fieldAnnotationsLoader.load(entitiesRegistry, field, annotation, beanClass, counterContainer.counter); } } } } }); }
From source file:org.openlegacy.support.DefaultRegistryLoader.java
private static void handleEntityFields(final Collection<FieldLoader> fieldLoaders, final EntitiesRegistry<?, ?, ?> entitiesRegistry, final Class<?> beanClass) { final CounterContainer counterContainer = new CounterContainer(); ReflectionUtils.doWithFields(beanClass, new FieldCallback() { @Override//ww w. j a v a 2s. co m public void doWith(Field field) { loadDefinition(entitiesRegistry, beanClass, fieldLoaders, field); // If the direction is NONE, do not increment the field order counter if (field.isAnnotationPresent(RpcField.class)) { RpcField rpcFieldAnnotation = field.getAnnotation(RpcField.class); if (rpcFieldAnnotation.direction() == Direction.NONE) { return; } } counterContainer.counter++; } private void loadDefinition(final EntitiesRegistry<?, ?, ?> entitiesRegistry, final Class<?> beanClass, final Collection<FieldLoader> fieldLoaders, Field field) { for (FieldLoader fieldLoader : fieldLoaders) { if (fieldLoader.match(entitiesRegistry, field)) { if (logger.isDebugEnabled()) { logger.debug( MessageFormat.format("Loading field {0} setting for entity {1} into registry", field.getName(), beanClass)); } fieldLoader.load(entitiesRegistry, field, beanClass, counterContainer.counter); } } } }); }
From source file:org.openspaces.core.context.GigaSpaceContextBeanPostProcessor.java
private synchronized List<AnnotatedMember> findClassMetadata(Class<?> clazz) { List<AnnotatedMember> metadata = this.classMetadata.get(clazz); if (metadata == null) { final List<AnnotatedMember> newMetadata = new LinkedList<AnnotatedMember>(); ReflectionUtils.doWithFields(clazz, new ReflectionUtils.FieldCallback() { public void doWith(Field f) { addIfPresent(newMetadata, f); }/*from w ww . j a va 2 s. co m*/ }); ReflectionUtils.doWithMethods(clazz, new ReflectionUtils.MethodCallback() { public void doWith(Method m) { addIfPresent(newMetadata, m); } }); metadata = newMetadata; this.classMetadata.put(clazz, metadata); } return metadata; }
From source file:org.openspaces.remoting.RemotingAnnotationBeanPostProcessor.java
@Override public boolean postProcessAfterInstantiation(final Object bean, String beanName) throws BeansException { Class beanClass = AopUtils.getTargetClass(bean); if (beanClass == null) { return true; }//from w w w . j a va2 s . co m ReflectionUtils.doWithFields(beanClass, new ReflectionUtils.FieldCallback() { public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException { ExecutorScriptingExecutor executorScriptingExecutor = field .getAnnotation(ExecutorScriptingExecutor.class); if (executorScriptingExecutor != null) { ExecutorSpaceRemotingProxyFactoryBean factoryBean = new ExecutorSpaceRemotingProxyFactoryBean(); factoryBean.setGigaSpace(findGigaSpaceByName(executorScriptingExecutor.gigaSpace())); factoryBean.setTimeout(executorScriptingExecutor.timeout()); factoryBean.setMetaArgumentsHandler(new ScriptingMetaArgumentsHandler()); factoryBean.setRemoteInvocationAspect(new LazyLoadingRemoteInvocationAspect()); factoryBean.setRemoteRoutingHandler(new ScriptingRemoteRoutingHandler()); factoryBean.setServiceInterface(ScriptingExecutor.class); factoryBean.afterPropertiesSet(); field.setAccessible(true); field.set(bean, factoryBean.getObject()); } EventDrivenScriptingExecutor eventDrivenScriptingExecutor = field .getAnnotation(EventDrivenScriptingExecutor.class); if (eventDrivenScriptingExecutor != null) { EventDrivenSpaceRemotingProxyFactoryBean factoryBean = new EventDrivenSpaceRemotingProxyFactoryBean(); factoryBean.setTimeout(eventDrivenScriptingExecutor.timeout()); factoryBean.setFifo(eventDrivenScriptingExecutor.fifo()); factoryBean.setGigaSpace(findGigaSpaceByName(eventDrivenScriptingExecutor.gigaSpace())); factoryBean.setMetaArgumentsHandler(new ScriptingMetaArgumentsHandler()); factoryBean.setRemoteInvocationAspect(new LazyLoadingRemoteInvocationAspect()); factoryBean.setRemoteRoutingHandler(new ScriptingRemoteRoutingHandler()); factoryBean.setServiceInterface(ScriptingExecutor.class); factoryBean.afterPropertiesSet(); field.setAccessible(true); field.set(bean, factoryBean.getObject()); } EventDrivenProxy eventDrivenProxy = field.getAnnotation(EventDrivenProxy.class); if (eventDrivenProxy != null) { EventDrivenSpaceRemotingProxyFactoryBean factoryBean = new EventDrivenSpaceRemotingProxyFactoryBean(); factoryBean.setTimeout(eventDrivenProxy.timeout()); factoryBean.setFifo(eventDrivenProxy.fifo()); factoryBean.setGigaSpace(findGigaSpaceByName(eventDrivenProxy.gigaSpace())); factoryBean.setAsyncMethodPrefix(eventDrivenProxy.asyncMethodPrefix()); factoryBean.setMetaArgumentsHandler((MetaArgumentsHandler) createByClassOrFindByName( applicationContext, eventDrivenProxy.metaArgumentsHandler(), eventDrivenProxy.metaArgumentsHandlerType())); factoryBean.setRemoteInvocationAspect((RemoteInvocationAspect) createByClassOrFindByName( applicationContext, eventDrivenProxy.remoteInvocationAspect(), eventDrivenProxy.remoteInvocationAspectType())); factoryBean.setRemoteRoutingHandler((RemoteRoutingHandler) createByClassOrFindByName( applicationContext, eventDrivenProxy.remoteRoutingHandler(), eventDrivenProxy.remoteRoutingHandlerType())); factoryBean.setServiceInterface(field.getType()); factoryBean.afterPropertiesSet(); field.setAccessible(true); field.set(bean, factoryBean.getObject()); } ExecutorProxy executorProxy = field.getAnnotation(ExecutorProxy.class); if (executorProxy != null) { ExecutorSpaceRemotingProxyFactoryBean factoryBean = new ExecutorSpaceRemotingProxyFactoryBean(); factoryBean.setGigaSpace(findGigaSpaceByName(executorProxy.gigaSpace())); factoryBean.setTimeout(executorProxy.timeout()); factoryBean.setBroadcast(executorProxy.broadcast()); factoryBean.setMetaArgumentsHandler((MetaArgumentsHandler) createByClassOrFindByName( applicationContext, executorProxy.metaArgumentsHandler(), executorProxy.metaArgumentsHandlerType())); factoryBean.setRemoteInvocationAspect((RemoteInvocationAspect) createByClassOrFindByName( applicationContext, executorProxy.remoteInvocationAspect(), executorProxy.remoteInvocationAspectType())); factoryBean.setRemoteRoutingHandler((RemoteRoutingHandler) createByClassOrFindByName( applicationContext, executorProxy.remoteRoutingHandler(), executorProxy.remoteRoutingHandlerType())); factoryBean.setRemoteResultReducer( (RemoteResultReducer) createByClassOrFindByName(applicationContext, executorProxy.remoteResultReducer(), executorProxy.remoteResultReducerType())); factoryBean.setReturnFirstResult(executorProxy.returnFirstResult()); factoryBean.setServiceInterface(field.getType()); factoryBean.afterPropertiesSet(); field.setAccessible(true); field.set(bean, factoryBean.getObject()); } } }); return true; }