/** * @param bindingParameterTypeName * @param parameter * @return * @throws ODataException */ private boolean isEntityPreviousTypeCompatibleToBindingParam(final FullQualifiedName bindingParameterTypeName, final CsdlParameter parameter) throws ODataException { return provider.getEntityType(bindingParameterTypeName) != null && provider.getEntityType(bindingParameterTypeName).getBaseTypeFQN() != null && provider.getEntityType(bindingParameterTypeName).getBaseTypeFQN().equals(parameter.getTypeFQN()); }
/** * @param bindingParameterTypeName * @param parameter * @return * @throws ODataException */ private boolean isEntityPreviousTypeCompatibleToBindingParam(final FullQualifiedName bindingParameterTypeName, final CsdlParameter parameter) throws ODataException { return provider.getEntityType(bindingParameterTypeName) != null && provider.getEntityType(bindingParameterTypeName).getBaseTypeFQN() != null && provider.getEntityType(bindingParameterTypeName).getBaseTypeFQN().equals(parameter.getTypeFQN()); }
/** * This fetches the last Base Type entity from a hierarchy of base type derived types * @param baseTypeFQName * @return CsdlEntityType */ private CsdlEntityType fetchLastCsdlBaseType(FullQualifiedName baseTypeFQName) { CsdlEntityType baseEntityType = null; while (baseTypeFQName != null) { if (!(csdlEntityTypesMap.containsKey(baseTypeFQName))) { baseTypeFQName = validateCsdlEntityTypeWithAlias(baseTypeFQName); } baseEntityType = csdlEntityTypesMap.get(baseTypeFQName); if (baseEntityType != null) { if (baseEntityType.getKey() != null) { break; } else if (baseEntityType.getBaseType() != null) { baseTypeFQName = baseEntityType.getBaseTypeFQN(); } else if (baseEntityType.getBaseType() == null) { break; } } } return baseEntityType; }
/** * This method validates Csdl Entity types. * Looks for correct namespace aliases and correct base types */ private void validateCsdlEntityTypes() { for (Map.Entry<FullQualifiedName, CsdlEntityType> entityTypes : csdlEntityTypesMap.entrySet()) { if (entityTypes.getValue() != null && entityTypes.getKey() != null) { CsdlEntityType entityType = entityTypes.getValue(); if (entityType.getBaseType() != null) { CsdlEntityType baseEntityType; FullQualifiedName baseTypeFQName = entityType.getBaseTypeFQN(); if (!csdlEntityTypesMap.containsKey(baseTypeFQName)) { FullQualifiedName fqName = validateCsdlEntityTypeWithAlias(baseTypeFQName); baseEntityType = fetchLastCsdlBaseType(fqName); } else { baseEntityType = fetchLastCsdlBaseType(baseTypeFQName); } if (baseEntityType != null && (baseEntityType.getKey() == null || baseEntityType.getKey().isEmpty())) { throw new RuntimeException("Missing key for EntityType " + baseEntityType.getName()); } } else if (entityType.getKey() == null || entityType.getKey().isEmpty()) { throw new RuntimeException("Missing key for EntityType " + entityType.getName()); } } } }
/** * This fetches the last Base Type entity from a hierarchy of base type derived types * @param baseTypeFQName * @return CsdlEntityType */ private CsdlEntityType fetchLastCsdlBaseType(FullQualifiedName baseTypeFQName) { CsdlEntityType baseEntityType = null; while (baseTypeFQName != null) { if (!(csdlEntityTypesMap.containsKey(baseTypeFQName))) { baseTypeFQName = validateCsdlEntityTypeWithAlias(baseTypeFQName); } baseEntityType = csdlEntityTypesMap.get(baseTypeFQName); if (baseEntityType != null) { if (baseEntityType.getKey() != null) { break; } else if (baseEntityType.getBaseType() != null) { baseTypeFQName = baseEntityType.getBaseTypeFQN(); } else if (baseEntityType.getBaseType() == null) { break; } } } return baseEntityType; }
/** * This fetches the last Base Type entity from a hierarchy of base type derived types * @param baseTypeFQName * @return CsdlNavigationProperty */ private CsdlNavigationProperty fetchLastBaseEntityHavingNavigationProperty( FullQualifiedName baseTypeFQName, String navBindingProperty) { CsdlEntityType baseEntityType = null; while (baseTypeFQName != null) { if (!(csdlEntityTypesMap.containsKey(baseTypeFQName))) { baseTypeFQName = validateCsdlEntityTypeWithAlias(baseTypeFQName); } baseEntityType = csdlEntityTypesMap.get(baseTypeFQName); if (baseEntityType != null) { if (baseEntityType.getNavigationProperty(navBindingProperty) != null) { break; } else if (baseEntityType.getBaseType() != null) { baseTypeFQName = baseEntityType.getBaseTypeFQN(); } else if (baseEntityType.getBaseType() == null) { break; } } } if (baseEntityType == null) { throw new RuntimeException("Entity Type is null with fully qualified name:" + baseTypeFQName); } return baseEntityType.getNavigationProperty(navBindingProperty); }
/** * This method validates Csdl Entity types. * Looks for correct namespace aliases and correct base types */ private void validateCsdlEntityTypes() { for (Map.Entry<FullQualifiedName, CsdlEntityType> entityTypes : csdlEntityTypesMap.entrySet()) { if (entityTypes.getValue() != null && entityTypes.getKey() != null) { CsdlEntityType entityType = entityTypes.getValue(); if (entityType.getBaseType() != null) { CsdlEntityType baseEntityType; FullQualifiedName baseTypeFQName = entityType.getBaseTypeFQN(); if (!csdlEntityTypesMap.containsKey(baseTypeFQName)) { FullQualifiedName fqName = validateCsdlEntityTypeWithAlias(baseTypeFQName); baseEntityType = fetchLastCsdlBaseType(fqName); } else { baseEntityType = fetchLastCsdlBaseType(baseTypeFQName); } if (baseEntityType != null && (baseEntityType.getKey() == null || baseEntityType.getKey().isEmpty())) { throw new RuntimeException("Missing key for EntityType " + baseEntityType.getName()); } } else if (entityType.getKey() == null || entityType.getKey().isEmpty()) { throw new RuntimeException("Missing key for EntityType " + entityType.getName()); } } } }
/** * This fetches the last Base Type entity from a hierarchy of base type derived types * @param baseTypeFQName * @return CsdlNavigationProperty */ private CsdlNavigationProperty fetchLastBaseEntityHavingNavigationProperty( FullQualifiedName baseTypeFQName, String navBindingProperty) { CsdlEntityType baseEntityType = null; while (baseTypeFQName != null) { if (!(csdlEntityTypesMap.containsKey(baseTypeFQName))) { baseTypeFQName = validateCsdlEntityTypeWithAlias(baseTypeFQName); } baseEntityType = csdlEntityTypesMap.get(baseTypeFQName); if (baseEntityType != null) { if (baseEntityType.getNavigationProperty(navBindingProperty) != null) { break; } else if (baseEntityType.getBaseType() != null) { baseTypeFQName = baseEntityType.getBaseTypeFQN(); } else if (baseEntityType.getBaseType() == null) { break; } } } if (baseEntityType == null) { throw new RuntimeException("Entity Type is null with fully qualified name:" + baseTypeFQName); } return baseEntityType.getNavigationProperty(navBindingProperty); }
if (navProperty == null) { navProperty = fetchLastBaseEntityHavingNavigationProperty( sourceEntityType.getBaseTypeFQN(), navBindingPath); csdlEntityTypesMap.get(new FullQualifiedName(targetType)), navProperty); if (!(navFQName.getFullQualifiedNameAsString().equals(targetType)) && !(csdlEntityTypesMap.get(navFQName).getBaseTypeFQN() != null && fetchCorrectNamespaceFromAlias(csdlEntityTypesMap.get(navFQName). getBaseTypeFQN()).getFullQualifiedNameAsString().equals(targetType))) { throw new RuntimeException("Navigation Property Type " + navFQName +" does not match "
if (navProperty == null) { navProperty = fetchLastBaseEntityHavingNavigationProperty( sourceEntityType.getBaseTypeFQN(), navBindingPath); csdlEntityTypesMap.get(new FullQualifiedName(targetType)), navProperty); if (!(navFQName.getFullQualifiedNameAsString().equals(targetType)) && !(csdlEntityTypesMap.get(navFQName).getBaseTypeFQN() != null && fetchCorrectNamespaceFromAlias(csdlEntityTypesMap.get(navFQName). getBaseTypeFQN()).getFullQualifiedNameAsString().equals(targetType))) { throw new RuntimeException("Navigation Property Type " + navFQName +" does not match "
public static String resolveBaseTypesForEntity(CsdlEntityType csdlEntity, String edmxNamespace, CommonJavaObjectForEdmx comModel, CDXEdmProvider edmxMetadataProvider, Map<String, String> namespaceToServMap) { String baseTypeName = csdlEntity.getBaseType(); // build entity model for base type entity FullQualifiedName fqnEntity = csdlEntity.getBaseTypeFQN(); if (fqnEntity != null) { try { CsdlEntityType csdlBaseEntity = edmxMetadataProvider.getEntityType(fqnEntity); if (!EdmxToCommonModelHelper.isEntityTypeAlreadyParsed(csdlBaseEntity, comModel)) { EntityTypeModel comEntity = EdmxToCommonJavaObjectConverter.convertCsdlEntityToCommonModel( csdlBaseEntity, edmxNamespace, comModel, edmxMetadataProvider, namespaceToServMap); comModel.addEntityType(comEntity); } } catch (ODataException e) { PojoGenUtil.logDebug(log, "Could not fetch Base Type from EdmxProvider called by resolveBaseTypesForEntity"); } } return baseTypeName != null ? baseTypeName : ""; }