/** * This method validates Csdl Complex types. * Looks for correct namespace aliases and correct complex base types */ private void validateCsdlComplexTypes() { for (Map.Entry<FullQualifiedName, CsdlComplexType> complexTypes : csdlComplexTypesMap.entrySet()) { if (complexTypes.getValue() != null && complexTypes.getKey() != null) { CsdlComplexType complexType = complexTypes.getValue(); if (complexType.getBaseType() != null) { FullQualifiedName baseTypeFQName = complexType.getBaseTypeFQN(); if (!csdlComplexTypesMap.containsKey(baseTypeFQName)) { validateCsdlComplexTypeWithAlias(baseTypeFQName); } } } } }
/** * This method validates Csdl Complex types. * Looks for correct namespace aliases and correct complex base types */ private void validateCsdlComplexTypes() { for (Map.Entry<FullQualifiedName, CsdlComplexType> complexTypes : csdlComplexTypesMap.entrySet()) { if (complexTypes.getValue() != null && complexTypes.getKey() != null) { CsdlComplexType complexType = complexTypes.getValue(); if (complexType.getBaseType() != null) { FullQualifiedName baseTypeFQName = complexType.getBaseTypeFQN(); if (!csdlComplexTypesMap.containsKey(baseTypeFQName)) { validateCsdlComplexTypeWithAlias(baseTypeFQName); } } } } }
/** * @param bindingParameterTypeName * @param parameter * @param isBindingParameterCollection * @return * @throws ODataException */ private boolean isComplexPreviousTypeCompatibleToBindingParam( final FullQualifiedName bindingParameterTypeName, final CsdlParameter parameter, Boolean isBindingParameterCollection) throws ODataException { CsdlComplexType complexType = provider.getComplexType(bindingParameterTypeName); if(provider.getEntityType(parameter.getTypeFQN()) == null){ return false; } List<CsdlProperty> properties = provider.getEntityType(parameter.getTypeFQN()).getProperties(); for (CsdlProperty property : properties) { String paramPropertyTypeName = property.getTypeAsFQNObject().getFullQualifiedNameAsString(); if ((complexType != null && complexType.getBaseType() != null && complexType.getBaseTypeFQN().getFullQualifiedNameAsString().equals(paramPropertyTypeName)) || paramPropertyTypeName.equals(bindingParameterTypeName.getFullQualifiedNameAsString()) && isBindingParameterCollection.booleanValue() == property.isCollection()) { return true; } } return false; }
/** * @param bindingParameterTypeName * @param parameter * @param isBindingParameterCollection * @return * @throws ODataException */ private boolean isComplexPreviousTypeCompatibleToBindingParam( final FullQualifiedName bindingParameterTypeName, final CsdlParameter parameter, Boolean isBindingParameterCollection) throws ODataException { CsdlComplexType complexType = provider.getComplexType(bindingParameterTypeName); if(provider.getEntityType(parameter.getTypeFQN()) == null){ return false; } List<CsdlProperty> properties = provider.getEntityType(parameter.getTypeFQN()).getProperties(); for (CsdlProperty property : properties) { String paramPropertyTypeName = property.getTypeAsFQNObject().getFullQualifiedNameAsString(); if ((complexType != null && complexType.getBaseType() != null && complexType.getBaseTypeFQN().getFullQualifiedNameAsString().equals(paramPropertyTypeName)) || paramPropertyTypeName.equals(bindingParameterTypeName.getFullQualifiedNameAsString()) && isBindingParameterCollection.booleanValue() == property.isCollection()) { return true; } } return false; }
public static String resolveBaseTypesForComplex(CsdlComplexType csdlComplexType, CommonJavaObjectForEdmx comModel, CDXEdmProvider edmxProvider, Map<String, String> namespaceToServMap) { String baseTypeName = csdlComplexType.getBaseType(); // build entity model for base type entity FullQualifiedName fqnComplex = csdlComplexType.getBaseTypeFQN(); if (fqnComplex != null) { try { CsdlComplexType csdlBaseComplex = edmxProvider.getComplexType(fqnComplex); if (!EdmxToCommonModelHelper.isComplexTypeAlreadyAdded(csdlBaseComplex.getName(), comModel)) { ComplexTypeModel comComplex = EdmxToCommonJavaObjectConverter.convertCsdlComplexToCommonModel( csdlBaseComplex, comModel, edmxProvider, namespaceToServMap); comModel.addComplexType(comComplex); } } catch (ODataException e) { PojoGenUtil.logDebug(log, "Could not fetch Base Type from EdmxProvider called by resolveBaseTypesForComplex"); } } return baseTypeName != null ? baseTypeName : ""; }