public DynamicGenericInfo( @NotNull final DomInvocationHandler handler, final StaticGenericInfo staticGenericInfo) { myInvocationHandler = handler; myStaticGenericInfo = staticGenericInfo; myAttributes = staticGenericInfo.getAttributes(); myFixeds = staticGenericInfo.getFixed(); myCollections = staticGenericInfo.getCollections(); }
private void applyExtensions(DomExtensionsRegistrarImpl registrar) { final List<DomExtensionImpl> fixeds = registrar.getFixeds(); final List<DomExtensionImpl> collections = registrar.getCollections(); final List<DomExtensionImpl> attributes = registrar.getAttributes(); if (!attributes.isEmpty()) { ChildrenDescriptionsHolder<AttributeChildDescriptionImpl> newAttributes = new ChildrenDescriptionsHolder<AttributeChildDescriptionImpl>( myStaticGenericInfo.getAttributes()); for (final DomExtensionImpl extension : attributes) { newAttributes.addDescription( extension.addAnnotations( new AttributeChildDescriptionImpl(extension.getXmlName(), extension.getType()))); } myAttributes = newAttributes; } if (!fixeds.isEmpty()) { ChildrenDescriptionsHolder<FixedChildDescriptionImpl> newFixeds = new ChildrenDescriptionsHolder<FixedChildDescriptionImpl>(myStaticGenericInfo.getFixed()); for (final DomExtensionImpl extension : fixeds) { //noinspection unchecked newFixeds.addDescription( extension.addAnnotations( new FixedChildDescriptionImpl( extension.getXmlName(), extension.getType(), extension.getCount(), ArrayUtil.EMPTY_COLLECTION_ARRAY))); } myFixeds = newFixeds; } if (!collections.isEmpty()) { ChildrenDescriptionsHolder<CollectionChildDescriptionImpl> newCollections = new ChildrenDescriptionsHolder<CollectionChildDescriptionImpl>( myStaticGenericInfo.getCollections()); for (final DomExtensionImpl extension : collections) { newCollections.addDescription( extension.addAnnotations( new CollectionChildDescriptionImpl( extension.getXmlName(), extension.getType(), Collections.<JavaMethod>emptyList()))); } myCollections = newCollections; } final DomExtensionImpl extension = registrar.getCustomChildrenType(); if (extension != null) { myCustomChildren = new CustomDomChildrenDescriptionImpl( null, extension.getType(), extension.getTagNameDescriptor()); } }