public final void acceptVisitor()

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 );
    }