Search in sources :

Example 1 with EdmComplexType

use of org.odata4j.edm.EdmComplexType in project teiid by teiid.

the class BaseQueryExecution method executeWithComplexReturn.

protected ODataEntitiesResponse executeWithComplexReturn(String method, String uri, String payload, String complexTypeName, EdmDataServices edsMetadata, String eTag, Status... expectedStatus) throws TranslatorException {
    Map<String, List<String>> headers = getDefaultHeaders();
    if (eTag != null) {
        // $NON-NLS-1$
        headers.put("If-Match", Arrays.asList(eTag));
    }
    if (payload != null) {
        // $NON-NLS-1$ //$NON-NLS-2$
        headers.put("Content-Type", Arrays.asList("application/atom+xml"));
    }
    BinaryWSProcedureExecution execution = executeDirect(method, uri, payload, headers);
    for (Status status : expectedStatus) {
        if (status.getStatusCode() == execution.getResponseCode()) {
            if (execution.getResponseCode() != Status.NO_CONTENT.getStatusCode()) {
                Blob blob = (Blob) execution.getOutputParameterValues().get(0);
                // ODataVersion version = getDataServiceVersion((String)execution.getResponseHeader(ODataConstants.Headers.DATA_SERVICE_VERSION));
                EdmComplexType complexType = edsMetadata.findEdmComplexType(complexTypeName);
                if (complexType == null) {
                    throw new RuntimeException(ODataPlugin.Util.gs(ODataPlugin.Event.TEIID17016, complexType));
                }
                try {
                    return parserComplex(StaxUtil.newXMLEventReader(new InputStreamReader(blob.getBinaryStream())), complexType, edsMetadata);
                } catch (SQLException e) {
                    throw new TranslatorException(ODataPlugin.Event.TEIID17010, e, e.getMessage());
                }
            }
            // this is success with no-data
            return new ODataEntitiesResponse();
        }
    }
    // throw an error
    return new ODataEntitiesResponse(buildError(execution));
}
Also used : Status(javax.ws.rs.core.Response.Status) Blob(java.sql.Blob) InputStreamReader(java.io.InputStreamReader) SQLException(java.sql.SQLException) BinaryWSProcedureExecution(org.teiid.translator.ws.BinaryWSProcedureExecution) ArrayList(java.util.ArrayList) List(java.util.List) TranslatorException(org.teiid.translator.TranslatorException) EdmComplexType(org.odata4j.edm.EdmComplexType)

Aggregations

InputStreamReader (java.io.InputStreamReader)1 Blob (java.sql.Blob)1 SQLException (java.sql.SQLException)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Status (javax.ws.rs.core.Response.Status)1 EdmComplexType (org.odata4j.edm.EdmComplexType)1 TranslatorException (org.teiid.translator.TranslatorException)1 BinaryWSProcedureExecution (org.teiid.translator.ws.BinaryWSProcedureExecution)1