private NavigationProperty clone(NavigationProperty property) { if (property == null) { return null; } NavigationProperty newProperty = new NavigationProperty(); newProperty.setAnnotationAttributes(property.getAnnotationAttributes()); newProperty.setAnnotationElements(property.getAnnotationElements()); newProperty.setDocumentation(property.getDocumentation()); newProperty.setFromRole(property.getFromRole()); newProperty.setMapping(property.getMapping()); newProperty.setName(property.getName()); newProperty.setRelationship(property.getRelationship()); newProperty.setToRole(property.getToRole()); return newProperty; }
@Override public EdmAnnotations getAnnotations() throws EdmException { if (annotations == null) { annotations = new EdmAnnotationsImplProv(navigationProperty.getAnnotationAttributes(), navigationProperty.getAnnotationElements()); } return annotations; }
private NavigationProperty createNavigationProperty(final String namespace, final EdmNavigationProperty enp, final Field field) { NavigationProperty navProp = new NavigationProperty(); navProp.setName(ANNOTATION_HELPER.getPropertyName(field)); String fromRole = ANNOTATION_HELPER.extractFromRoleName(enp, field); navProp.setFromRole(fromRole); String toRole = ANNOTATION_HELPER.extractToRoleName(enp, field); navProp.setToRole(toRole); String relationshipName = ANNOTATION_HELPER.extractRelationshipName(enp, field); navProp.setRelationship(new FullQualifiedName(namespace, relationshipName)); return navProp; }
reader.require(XMLStreamConstants.START_ELEMENT, edmNamespace, XmlMetadataConstants.EDM_NAVIGATION_PROPERTY); NavigationProperty navProperty = new NavigationProperty(); List<AnnotationElement> annotationElements = new ArrayList<AnnotationElement>(); navProperty.setName(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAME)); String relationship = reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAVIGATION_RELATIONSHIP); if (relationship != null) { FullQualifiedName fqName = extractFQName(relationship); navProperty.setRelationship(fqName); navProperty.setFromRole(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAVIGATION_FROM_ROLE)); navProperty.setToRole(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAVIGATION_TO_ROLE)); navProperty.setAnnotationAttributes(readAnnotationAttribute(reader)); while (reader.hasNext() && !(reader.isEndElement() && edmNamespace.equals(reader.getNamespaceURI()) && XmlMetadataConstants.EDM_NAVIGATION_PROPERTY.equals(reader.getLocalName()))) { navProperty.setAnnotationElements(annotationElements);
for (NavigationProperty navigationProperty : navigationProperties) { xmlStreamWriter.writeStartElement(XmlMetadataConstants.EDM_NAVIGATION_PROPERTY); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAME, navigationProperty.getName()); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAVIGATION_RELATIONSHIP, navigationProperty .getRelationship().toString()); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAVIGATION_FROM_ROLE, navigationProperty .getFromRole()); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAVIGATION_TO_ROLE, navigationProperty .getToRole()); writeAnnotationAttributes(navigationProperty.getAnnotationAttributes(), predefinedNamespaces, null, xmlStreamWriter); writeDocumentation(navigationProperty.getDocumentation(), predefinedNamespaces, xmlStreamWriter); writeAnnotationElements(navigationProperty.getAnnotationElements(), predefinedNamespaces, xmlStreamWriter);
navProp.setRelationship(new FullQualifiedName(namespace, association .getName())); ((Mapping) mapping).setInternalName(jpaAttribute.getName()); mapping.setJPAType(jpaAttribute.getJavaType()); navProp.setMapping((Mapping) mapping); navProp.setName(navPropName); if (jpaAttribute.isCollection()) { if (association.getEnd2().getMultiplicity().equals(EdmMultiplicity.MANY)) { navProp.setToRole(association.getEnd2().getRole()); navProp.setFromRole(association.getEnd1().getRole()); } else { navProp.setToRole(association.getEnd1().getRole()); navProp.setFromRole(association.getEnd2().getRole()); navProp.setToRole(association.getEnd2().getRole()); navProp.setFromRole(association.getEnd1().getRole()); } else { navProp.setToRole(association.getEnd1().getRole()); navProp.setFromRole(association.getEnd2().getRole()); navProp.setFromRole(association.getEnd2().getRole()); navProp.setToRole(association.getEnd1().getRole()); } else if (toName.equals(associationEndTypeTwo.getName())) { navProp.setToRole(association.getEnd2().getRole()); navProp.setFromRole(association.getEnd1().getRole());
private void validateRelationship() throws EntityProviderException { for (NavigationProperty navProperty : navProperties) { if (associationsMap.containsKey(navProperty.getRelationship())) { Association assoc = associationsMap.get(navProperty.getRelationship()); if (!(assoc.getEnd1().getRole().equals(navProperty.getFromRole()) ^ assoc.getEnd1().getRole().equals(navProperty.getToRole()) && (assoc.getEnd2().getRole().equals(navProperty.getFromRole()) ^ assoc.getEnd2().getRole().equals( navProperty.getToRole())))) { throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT .addContent("Invalid end of association")); } if (!entityTypesMap.containsKey(assoc.getEnd1().getType())) { validateEntityTypeWithAlias(assoc.getEnd1().getType()); } if (!entityTypesMap.containsKey(assoc.getEnd2().getType())) { validateEntityTypeWithAlias(assoc.getEnd2().getType()); } } else { throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT.addContent("Invalid Relationship")); } } }
for (NavigationProperty property : newType .getNavigationProperties()) { property.setRelationship(new FullQualifiedName(targetSchema .getNamespace(), property.getRelationship().getName()));
@Override public EdmAssociation getRelationship() throws EdmException { final FullQualifiedName relationship = navigationProperty.getRelationship(); return edm.getAssociation(relationship.getNamespace(), relationship.getName()); }
@Override public String getToRole() throws EdmException { return navigationProperty.getToRole(); }
@Override public void build() throws ODataJPAModelException { currentNavigationProperty = new NavigationProperty(); JPAEdmNameBuilder.build(associationView, propertyView, JPAEdmNavigationProperty.this, skipDefaultNaming, count); consistentNavigationProperties.add(currentNavigationProperty); }
if (navigationProperty.getRelationship().getName().toLowerCase().contains("many_many")) { manymany = true; JPAEdmMappingImpl mapping = ((JPAEdmMappingImpl) navigationProperty.getMapping()); property = mapping.getInternalName();
@Override public String getFromRole() throws EdmException { return navigationProperty.getFromRole(); }
@Override public EdmMapping getMapping() throws EdmException { return navigationProperty.getMapping(); }
private NavigationProperty createNavigationProperty(final String namespace, Field field, AnnotationHelper.AnnotatedNavInfo navInfo) { NavigationProperty navProp = new NavigationProperty(); navProp.setName(ANNOTATION_HELPER.getPropertyName(field)); String fromRole = navInfo.getFromRoleName(); navProp.setFromRole(fromRole); navProp.setToRole(navInfo.getToRoleName()); String relationshipName = navInfo.getRelationshipName(); navProp.setRelationship(new FullQualifiedName(namespace, relationshipName)); return navProp; }
reader.require(XMLStreamConstants.START_ELEMENT, edmNamespace, XmlMetadataConstants.EDM_NAVIGATION_PROPERTY); NavigationProperty navProperty = new NavigationProperty(); List<AnnotationElement> annotationElements = new ArrayList<AnnotationElement>(); navProperty.setName(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAME)); String relationship = reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAVIGATION_RELATIONSHIP); if (relationship != null) { FullQualifiedName fqName = extractFQName(relationship); navProperty.setRelationship(fqName); navProperty.setFromRole(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAVIGATION_FROM_ROLE)); navProperty.setToRole(reader.getAttributeValue(null, XmlMetadataConstants.EDM_NAVIGATION_TO_ROLE)); navProperty.setAnnotationAttributes(readAnnotationAttribute(reader)); while (reader.hasNext() && !(reader.isEndElement() && edmNamespace.equals(reader.getNamespaceURI()) && XmlMetadataConstants.EDM_NAVIGATION_PROPERTY.equals(reader.getLocalName()))) { navProperty.setAnnotationElements(annotationElements);
for (NavigationProperty navigationProperty : navigationProperties) { xmlStreamWriter.writeStartElement(XmlMetadataConstants.EDM_NAVIGATION_PROPERTY); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAME, navigationProperty.getName()); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAVIGATION_RELATIONSHIP, navigationProperty .getRelationship().toString()); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAVIGATION_FROM_ROLE, navigationProperty .getFromRole()); xmlStreamWriter.writeAttribute(XmlMetadataConstants.EDM_NAVIGATION_TO_ROLE, navigationProperty .getToRole()); writeAnnotationAttributes(navigationProperty.getAnnotationAttributes(), predefinedNamespaces, null, xmlStreamWriter); writeDocumentation(navigationProperty.getDocumentation(), predefinedNamespaces, xmlStreamWriter); writeAnnotationElements(navigationProperty.getAnnotationElements(), predefinedNamespaces, xmlStreamWriter);
navProp.setRelationship(new FullQualifiedName(namespace, association .getName())); ((Mapping) mapping).setInternalName(jpaAttribute.getName()); mapping.setJPAType(jpaAttribute.getJavaType()); navProp.setMapping((Mapping) mapping); navProp.setName(navPropName); if (jpaAttribute.isCollection()) { if (association.getEnd2().getMultiplicity().equals(EdmMultiplicity.MANY)) { navProp.setToRole(association.getEnd2().getRole()); navProp.setFromRole(association.getEnd1().getRole()); } else { navProp.setToRole(association.getEnd1().getRole()); navProp.setFromRole(association.getEnd2().getRole()); navProp.setToRole(association.getEnd2().getRole()); navProp.setFromRole(association.getEnd1().getRole()); } else { navProp.setToRole(association.getEnd1().getRole()); navProp.setFromRole(association.getEnd2().getRole()); navProp.setFromRole(association.getEnd2().getRole()); navProp.setToRole(association.getEnd1().getRole()); } else if (toName.equals(associationEndTypeTwo.getName())) { navProp.setToRole(association.getEnd2().getRole()); navProp.setFromRole(association.getEnd1().getRole());
private void validateRelationship() throws EntityProviderException { for (NavigationProperty navProperty : navProperties) { if (associationsMap.containsKey(navProperty.getRelationship())) { Association assoc = associationsMap.get(navProperty.getRelationship()); if (!(assoc.getEnd1().getRole().equals(navProperty.getFromRole()) ^ assoc.getEnd1().getRole().equals(navProperty.getToRole()) && (assoc.getEnd2().getRole().equals(navProperty.getFromRole()) ^ assoc.getEnd2().getRole().equals( navProperty.getToRole())))) { throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT .addContent("Invalid end of association")); } if (!entityTypesMap.containsKey(assoc.getEnd1().getType())) { validateEntityTypeWithAlias(assoc.getEnd1().getType()); } if (!entityTypesMap.containsKey(assoc.getEnd2().getType())) { validateEntityTypeWithAlias(assoc.getEnd2().getType()); } } else { throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT.addContent("Invalid Relationship")); } } }
@Override public EdmAssociation getRelationship() throws EdmException { final FullQualifiedName relationship = navigationProperty.getRelationship(); return edm.getAssociation(relationship.getNamespace(), relationship.getName()); }