in lightning-core/src/main/java/org/apache/directmemory/lightning/base/AbstractSerializerDefinition.java [91:142]
public final void acceptVisitor( DefinitionVisitor visitor )
{
// Start visiting
visitor.visitSerializerDefinition( this );
// Visit the attribute annotation if set
Class<? extends Annotation> attributeAnnotation = findAttributeAnnotation( this );
if ( attributeAnnotation != null )
{
visitor.visitAttributeAnnotation( attributeAnnotation );
}
// Visit all direct marshallers
Iterator<ObjectObjectCursor<Type, Marshaller>> iterator = marshallerContext.getInternalMap().iterator();
while ( iterator.hasNext() )
{
ObjectObjectCursor<Type, Marshaller> entry = iterator.next();
visitor.visitClassDefine( entry.key, entry.value );
}
// Visit annotated properties
Iterator<AnnotationBinderDefinition<?>> annotationIterator = annotationBinders.values().iterator();
while ( annotationIterator.hasNext() )
{
AnnotationBinderDefinition<?> annotationBinderDefinition = annotationIterator.next();
annotationBinderDefinition.acceptVisitor( visitor );
}
// Visit all property definitions
for ( Entry<PropertyDescriptor, Marshaller> entry : propertyMarshallers.entrySet() )
{
visitor.visitPropertyDescriptor( entry.getKey(), entry.getValue() );
Class<?> type = entry.getKey().getType();
if ( type.isPrimitive() || type.isArray() && type.getComponentType().isPrimitive() )
{
continue;
}
visitor.visitClassDefine( type, entry.getValue() );
}
// Visit all children
for ( SerializerDefinition child : children )
{
child.configure( definitionBuildingContext, objectInstantiatorFactory );
child.acceptVisitor( visitor );
}
// Finalize visit
visitor.visitFinalizeSerializerDefinition( this );
}