/** * Create a BeanDescriptor for an ElementCollection target. */ public <A> BeanDescriptor<A> createElementDescriptor(DeployBeanDescriptor<A> elementDescriptor, ManyType manyType, boolean scalar) { ElementHelp elementHelp = elementHelper(manyType); if (manyType.isMap()) { if (scalar) { return new BeanDescriptorElementScalarMap<>(this, elementDescriptor, elementHelp); } else { return new BeanDescriptorElementEmbeddedMap<>(this, elementDescriptor, elementHelp); } } if (scalar) { return new BeanDescriptorElementScalar<>(this, elementDescriptor, elementHelp); } else { return new BeanDescriptorElementEmbedded<>(this, elementDescriptor, elementHelp); } }
BeanDescriptorElementScalarMap(BeanDescriptorMap owner, DeployBeanDescriptor<T> deploy, ElementHelp elementHelp) { super(owner, deploy, elementHelp); BeanProperty[] props = propertiesNonTransient(); if (props.length != 2) { throw new IllegalStateException("Expecting 2 properties for key and value but got " + Arrays.toString(props)); } this.scalarTypeKey = props[0].getScalarType(); this.scalarTypeVal = props[1].getScalarType(); this.stringKey = String.class.equals(scalarTypeKey.getType()); }
BeanDescriptorElementScalarMap(BeanDescriptorMap owner, DeployBeanDescriptor<T> deploy, ElementHelp elementHelp) { super(owner, deploy, elementHelp); BeanProperty[] props = propertiesNonTransient(); if (props.length != 2) { throw new IllegalStateException("Expecting 2 properties for key and value but got " + Arrays.toString(props)); } this.scalarTypeKey = props[0].getScalarType(); this.scalarTypeVal = props[1].getScalarType(); this.stringKey = String.class.equals(scalarTypeKey.getType()); }
/** * Create a BeanDescriptor for an ElementCollection target. */ public <A> BeanDescriptor<A> createElementDescriptor(DeployBeanDescriptor<A> elementDescriptor, ManyType manyType, boolean scalar) { ElementHelp elementHelp = elementHelper(manyType); if (manyType.isMap()) { if (scalar) { return new BeanDescriptorElementScalarMap<>(this, elementDescriptor, elementHelp); } else { return new BeanDescriptorElementEmbeddedMap<>(this, elementDescriptor, elementHelp); } } if (scalar) { return new BeanDescriptorElementScalar<>(this, elementDescriptor, elementHelp); } else { return new BeanDescriptorElementEmbedded<>(this, elementDescriptor, elementHelp); } }