/** * Returns guaranteed non-null MappingNamespace of this relationship. If it happens to * be null, and exception is thrown. This method is intended for internal use by * Relationship class. */ final MappingNamespace getNonNullNamespace() { if (entity == null) { throw new CayenneRuntimeException("Embedded attribute '%s' has no parent Entity.", getName()); } return entity.getNonNullNamespace(); } }
protected void createEmbeddedAttributeProperty(PersistentDescriptor descriptor, EmbeddedAttribute embeddedAttribute, ObjAttribute attribute) { Class<?> embeddableClass = embeddedAttribute.getJavaClass(); String propertyPath = attribute.getName(); int lastDot = propertyPath.lastIndexOf('.'); if (lastDot <= 0 || lastDot == propertyPath.length() - 1) { throw new IllegalArgumentException("Invalid embeddable path: " + propertyPath); } String embeddableName = propertyPath.substring(lastDot + 1); EmbeddableDescriptor embeddableDescriptor = createEmbeddableDescriptor(embeddedAttribute); Accessor embeddedAccessor = createAccessor(descriptor, embeddedAttribute.getName(), embeddableClass); Accessor embeddedableAccessor = createEmbeddableAccessor(embeddableDescriptor, embeddableName, attribute.getJavaClass()); Accessor accessor = new EmbeddedFieldAccessor(embeddableDescriptor, embeddedAccessor, embeddedableAccessor); descriptor.addDeclaredProperty(new SimpleAttributeProperty(descriptor, accessor, attribute)); }
private ObjAttribute makeObjAttribute( EmbeddableAttribute embeddableAttribute, String dbPath) { String fullName = getName() + "." + embeddableAttribute.getName(); ObjAttribute oa = new ObjAttribute( fullName, embeddableAttribute.getType(), (ObjEntity) getEntity()); oa.setDbAttributePath(dbPath); return oa; }
"EmbeddedAttribute '%s' has incorrect Embeddable"; addFailure(validationResult, attribute, msg, attribute.getName()); return; addFailure(validationResult, attribute, "EmbeddedAttribute '%s' has no DbAttribute mapping", attribute.getName()); } else if (attribute.getEntity() .getDbEntity() addFailure(validationResult, attribute, "EmbeddedAttribute '%s' has incorrect DbAttribute mapping", attribute.getName());
@Override public void encodeAsXML(XMLEncoder encoder) { encoder.print("<embedded-attribute name=\"" + getName() + '\"'); if (getType() != null) { encoder.print(" type=\""); encoder.print(getType()); encoder.print('\"'); } if (attributeOverrides.isEmpty()) { encoder.println("/>"); return; } encoder.println('>'); encoder.indent(1); for (Map.Entry<String, String> e : attributeOverrides.entrySet()) { encoder.print("<embeddable-attribute-override name=\""); encoder.print(e.getKey()); encoder.print("\" db-attribute-path=\""); encoder.print(e.getValue()); encoder.println("\"/>"); } encoder.indent(-1); encoder.println("</embedded-attribute>"); }