/** since Teiid only deals with primitive types, merge does not apply */ @Override public void updateProperty( DataRequest request, Property property, boolean rawValue, boolean merge, String entityETag, PropertyResponse response) throws ODataLibraryException, ODataApplicationException { // TODO: need to match entityETag. checkETag(entityETag); UpdateResponse updateResponse = null; EdmProperty edmProperty = request.getUriResourceProperty().getProperty(); try { ODataSQLBuilder visitor = new ODataSQLBuilder( this.odata, getClient().getMetadataStore(), this.prepared, false, request.getODataRequest().getRawBaseUri(), this.serviceMetadata, this.nameGenerator); visitor.visit(request.getUriInfo()); Update update = visitor.updateProperty(edmProperty, property, this.prepared, rawValue); updateResponse = getClient().executeUpdate(update, visitor.getParameters()); } catch (SQLException e) { throw new ODataApplicationException( e.getMessage(), HttpStatusCode.INTERNAL_SERVER_ERROR.getStatusCode(), Locale.getDefault(), e); } catch (TeiidException e) { throw new ODataApplicationException( e.getMessage(), HttpStatusCode.INTERNAL_SERVER_ERROR.getStatusCode(), Locale.getDefault(), e); } if (updateResponse != null && updateResponse.getUpdateCount() > 0) { response.writePropertyUpdated(); } else { response.writeNotModified(); } }