private void readReturnType(XMLEventReader reader, StartElement element, CsdlOperation operation) throws XMLStreamException { CsdlReturnType returnType = new CsdlReturnType(); returnType.setType(readType(element)); returnType.setCollection(isCollectionType(element)); returnType.setNullable(Boolean.parseBoolean(attr(element, "Nullable"))); String maxLength = attr(element, "MaxLength"); if (maxLength != null) { returnType.setMaxLength(Integer.parseInt(maxLength)); } String precision = attr(element, "Precision"); if (precision != null) { returnType.setPrecision(Integer.parseInt(precision)); } String scale = attr(element, "Scale"); if (scale != null) { returnType.setScale(Integer.parseInt(scale)); } String srid = attr(element, "SRID"); if (srid != null) { returnType.setSrid(SRID.valueOf(srid)); } peekAnnotations(reader, element.getName().getLocalPart(), returnType); operation.setReturnType(returnType); }
@Override public boolean isCollection() { return returnType.isCollection(); }
@Override public FullQualifiedName getTypeFQN() { return jpaOperation.getReturnType().getTypeFQN(); }
EdmPrimitiveTypeKind odataType = ODataTypeManager.odataType(pp); if (pp.getType().equals(ProcedureParameter.Type.ReturnValue)) { edmFunction.setReturnType(new CsdlReturnType().setType(odataType.getFullQualifiedName()).setCollection(DataTypeManager.isArrayType(pp.getRuntimeType()))); continue; complexTypes.add(complexType); FullQualifiedName odataType = new FullQualifiedName(schemaName, complexType.getName()); edmFunction.setReturnType((new CsdlReturnType().setType(odataType).setCollection(true)));
if (isSimple(returnType.getType())) { mf.addProcedureParameter("return", ODataTypeManager.teiidType(returnType.getType(), returnType.isCollection()), ProcedureParameter.Type.ReturnValue, procedure); else if (isComplexType(metadata, returnType.getType())) { addProcedureTableReturn(mf, metadata, procedure, getComplexType(metadata, returnType.getType()), null); procedure.getResultSet().setProperty(ODATA_TYPE, returnType.isCollection()?ODataType.COMPLEX_COLLECTION.name():ODataType.COMPLEX.name()); else if (isEntityType(metadata, returnType.getType())){ addProcedureTableReturn(mf, metadata, procedure, getEntityType(metadata, returnType.getType()), null); procedure.getResultSet().setProperty(ODATA_TYPE, returnType.isCollection()?ODataType.ENTITY_COLLECTION.name():ODataType.ENTITY.name()); returnType.getType()));
public static CommonJavaObjectForEdmx convertFromActionsNfunctions(CommonJavaObjectForEdmx comModel, CDXEdmProvider edmxProvider, Map<String, String> namespaceToServMap) { CommonJavaObjectForEdmx updatedComModel = comModel; try { List<CsdlAction> actions = edmxProvider.getSchemas().get(0).getActions(); for (CsdlAction action : actions) { if (action.getReturnType() != null && !action.getReturnType().getType().startsWith("Edm")) { FullQualifiedName fqn = action.getReturnType().getTypeFQN(); updatedComModel = addCsdlComplexOrEntityToComModel(comModel, edmxProvider, fqn, namespaceToServMap); } } List<CsdlFunction> functions = edmxProvider.getSchemas().get(0).getFunctions(); for (CsdlFunction function : functions) { if (function.getReturnType() != null && function.getReturnType().getType().startsWith("Edm")) { FullQualifiedName fqn = function.getReturnType().getTypeFQN(); updatedComModel = addCsdlComplexOrEntityToComModel(updatedComModel, edmxProvider, fqn, namespaceToServMap); } } } catch (ODataException e) { PojoGenUtil.logDebug(log, "Could not parse Action/Function return type"); } return updatedComModel; }
@Override public EdmType getType() { if (typeImpl == null) { if (returnType.getType() == null) { throw new EdmException("Return types must hava a full qualified type."); } typeImpl = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(returnType.getType()).build().getType(); if (typeImpl == null) { throw new EdmException("Cannot find type with name: " + returnType.getType()); } } return typeImpl; } }
EdmPrimitiveTypeKind odatatype = ODataTypeManager.odataType(pp); if (pp.getType().equals(ProcedureParameter.Type.ReturnValue)) { edmAction.setReturnType(new CsdlReturnType().setType(odatatype.getFullQualifiedName()).setCollection(DataTypeManager.isArrayType(pp.getRuntimeType()))); continue; CsdlComplexType complexType = buildComplexType(proc, returnColumns, csdlSchema); complexTypes.add(complexType); edmAction.setReturnType((new CsdlReturnType() .setType(new FullQualifiedName(schemaName, complexType .getName())).setCollection(true)));
@Override public EdmType getType() { if (typeImpl == null) { if (returnType.getType() == null) { throw new EdmException("Return types must hava a full qualified type."); } typeImpl = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(returnType.getType()).build().getType(); if (typeImpl == null) { throw new EdmException("Cannot find type with name: " + returnType.getType()); } } return typeImpl; } }
private void readReturnType(XMLEventReader reader, StartElement element, CsdlOperation operation) throws XMLStreamException { CsdlReturnType returnType = new CsdlReturnType(); returnType.setType(readType(element)); returnType.setCollection(isCollectionType(element)); returnType.setNullable(Boolean.parseBoolean(attr(element, "Nullable"))); String maxLength = attr(element, "MaxLength"); if (maxLength != null) { returnType.setMaxLength(Integer.parseInt(maxLength)); } String precision = attr(element, "Precision"); if (precision != null) { returnType.setPrecision(Integer.parseInt(precision)); } String scale = attr(element, "Scale"); if (scale != null) { returnType.setScale(Integer.parseInt(scale)); } String srid = attr(element, "SRID"); if (srid != null) { returnType.setSrid(SRID.valueOf(srid)); } peekAnnotations(reader, element.getName().getLocalPart(), returnType); operation.setReturnType(returnType); }
@Override public boolean isCollection() { return returnType.isCollection(); }
@Override protected CsdlReturnType determineEdmResultType(final ReturnType returnType) throws ODataJPAModelException { final CsdlReturnType edmResultType = new CsdlReturnType(); edmResultType.setType(determineReturnType(returnType)); edmResultType.setCollection(returnType.isCollection()); edmResultType.setNullable(returnType.isNullable()); if (returnType.maxLength() >= 0) edmResultType.setMaxLength(returnType.maxLength()); if (returnType.precision() >= 0) edmResultType.setPrecision(returnType.precision()); if (returnType.scale() >= 0) edmResultType.setScale(returnType.scale()); if (returnType.srid() != null && !returnType.srid().srid().isEmpty()) { final SRID srid = SRID.valueOf(returnType.srid().srid()); srid.setDimension(returnType.srid().dimension()); edmResultType.setSrid(srid); } return edmResultType; }
private String setEntitySetPath() throws ODataJPAModelException { if (jpaAction.entitySetPath() == null || jpaAction.entitySetPath().isEmpty()) return null; if (!jpaAction.isBound()) // Entity Set Path shall only provided for bound actions. Action method %1$s of class %2$s is unbound. throw new ODataJPAModelException(ODataJPAModelException.MessageKeys.ACTION_UNBOUND_ENTITY_SET, javaAction.getName(), javaAction.getDeclaringClass().getName()); if (!edmAction.getReturnType().isCollection() && schema.getEntityType(javaAction.getReturnType()) == null) throw new ODataJPAModelException(ODataJPAModelException.MessageKeys.ACTION_UNBOUND_ENTITY_SET, javaAction.getName(), javaAction.getDeclaringClass().getName()); return jpaAction.entitySetPath(); }
private CsdlReturnType determineEdmResultType(final ReturnType definedReturnType, final Method javaOperation) throws ODataJPAModelException { final CsdlReturnType edmResultType = new CsdlReturnType(); final Class<?> declairedReturnType = javaOperation.getReturnType(); if (declairedReturnType == void.class) return null; if (IntermediateOperationHelper.isCollection(declairedReturnType)) { if (definedReturnType.type() == Object.class) // Type parameter expected for %1$s throw new ODataJPAModelException(MessageKeys.ACTION_RETURN_TYPE_EXP, javaOperation.getName(), javaOperation .getName()); edmResultType.setCollection(true); edmResultType.setType(IntermediateOperationHelper.determineReturnType(definedReturnType, definedReturnType.type(), schema, javaOperation.getName())); } else { edmResultType.setCollection(false); edmResultType.setType(IntermediateOperationHelper.determineReturnType(definedReturnType, declairedReturnType, schema, javaOperation.getName())); } edmResultType.setNullable(definedReturnType.isNullable()); edmResultType.setPrecision(nullIfNotSet(definedReturnType.precision())); edmResultType.setScale(nullIfNotSet(definedReturnType.scale())); edmResultType.setMaxLength(nullIfNotSet(definedReturnType.maxLength())); if (definedReturnType.srid() != null && !definedReturnType.srid().srid().isEmpty()) { final SRID srid = SRID.valueOf(definedReturnType.srid().srid()); srid.setDimension(definedReturnType.srid().dimension()); edmResultType.setSrid(srid); } return edmResultType; }
@Override protected CsdlReturnType determineEdmResultType(final ReturnType definedReturnType) throws ODataJPAModelException { final CsdlReturnType edmResultType = new CsdlReturnType(); Class<?> declairedReturnType = javaFunction.getReturnType(); edmResultType.setCollection(true); edmResultType.setType(IntermediateOperationHelper.determineReturnType(definedReturnType, definedReturnType.type(), schema, javaFunction.getName())); } else { declairedReturnType.getName(), javaFunction.getName()); edmResultType.setCollection(false); edmResultType.setType(IntermediateOperationHelper.determineReturnType(definedReturnType, declairedReturnType, schema, javaFunction.getName())); edmResultType.setNullable(definedReturnType.isNullable()); if (definedReturnType.maxLength() >= 0) edmResultType.setMaxLength(definedReturnType.maxLength()); if (definedReturnType.precision() >= 0) edmResultType.setPrecision(definedReturnType.precision()); if (definedReturnType.scale() >= 0) edmResultType.setScale(definedReturnType.scale()); if (definedReturnType.srid() != null && !definedReturnType.srid().srid().isEmpty()) { final SRID srid = SRID.valueOf(definedReturnType.srid().srid()); srid.setDimension(definedReturnType.srid().dimension()); edmResultType.setSrid(srid);