public ComponentAttributeSourceImpl( XMLComponentElement componentElement, AttributeSourceContainer parentContainer, LocalBindingContext bindingContext) { this.componentElement = componentElement; this.parentContainer = parentContainer; this.componentClassReference = bindingContext.makeClassReference( bindingContext.qualifyClassName(componentElement.getClazz())); this.path = parentContainer.getPath() + '.' + componentElement.getName(); }
@Override public String getExplicitTuplizerClassName() { if (componentElement.getTuplizer() == null) { return null; } final EntityMode entityMode = StringHelper.isEmpty(componentElement.getClazz()) ? EntityMode.MAP : EntityMode.POJO; for (XMLTuplizerElement tuplizerElement : componentElement.getTuplizer()) { if (entityMode == EntityMode.parse(tuplizerElement.getEntityMode())) { return tuplizerElement.getClazz(); } } return null; }
@Override public Iterable<AttributeSource> attributeSources() { List<AttributeSource> attributeSources = new ArrayList<AttributeSource>(); for (Object attributeElement : componentElement.getPropertyOrManyToOneOrOneToOne()) { if (XMLPropertyElement.class.isInstance(attributeElement)) { attributeSources.add( new PropertyAttributeSourceImpl( XMLPropertyElement.class.cast(attributeElement), getLocalBindingContext())); } else if (XMLComponentElement.class.isInstance(attributeElement)) { attributeSources.add( new ComponentAttributeSourceImpl( (XMLComponentElement) attributeElement, this, getLocalBindingContext())); } else if (XMLManyToOneElement.class.isInstance(attributeElement)) { attributeSources.add( new ManyToOneAttributeSourceImpl( XMLManyToOneElement.class.cast(attributeElement), getLocalBindingContext())); } else if (XMLOneToOneElement.class.isInstance(attributeElement)) { // todo : implement } else if (XMLAnyElement.class.isInstance(attributeElement)) { // todo : implement } else if (XMLOneToManyElement.class.isInstance(attributeElement)) { // todo : implement } else if (XMLManyToManyElement.class.isInstance(attributeElement)) { // todo : implement } } return attributeSources; }
@Override public String getParentReferenceAttributeName() { return componentElement.getParent() == null ? null : componentElement.getParent().getName(); }
@Override public String getClassName() { return componentElement.getClazz(); }
@Override public Iterable<MetaAttributeSource> metaAttributes() { return Helper.buildMetaAttributeSources(componentElement.getMeta()); }
@Override public boolean isIncludedInOptimisticLocking() { return componentElement.isOptimisticLock(); }
@Override public boolean isLazy() { return componentElement.isLazy(); }
@Override public boolean isUpdatable() { return componentElement.isUpdate(); }
@Override public boolean isInsertable() { return componentElement.isInsert(); }
@Override public String getPropertyAccessorName() { return componentElement.getAccess(); }