Add Delete and update queries
diff --git a/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/PersistenceContext.java b/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/PersistenceContext.java
index cdf9133..604cf20 100644
--- a/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/PersistenceContext.java
+++ b/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/PersistenceContext.java
@@ -461,7 +461,7 @@
      * @return

      */

     public Object query(String name, Map<?, ?> parameters) {

-        return query(name, parameters, null, false);

+        return query(name, parameters, null, false, false);

     }

     

     /**

@@ -474,7 +474,7 @@
      * @return

      */

     @SuppressWarnings("rawtypes")

-    public Object query(String name, Map<?, ?> parameters, Map<String, ?> hints, boolean returnSingleResult) {

+    public Object query(String name, Map<?, ?> parameters, Map<String, ?> hints, boolean returnSingleResult, boolean executeUpdate) {

         EntityManager em = getEmf().createEntityManager();

         try{

             Query query = em.createNamedQuery(name);

@@ -500,7 +500,9 @@
                     query.setHint(key, hints.get(key));

                 }

             }

-            if (returnSingleResult){

+            if (executeUpdate){

+                return query.executeUpdate();

+            } else if (returnSingleResult){

                 return query.getSingleResult();

             } else {

                 return query.getResultList();

diff --git a/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/Service.java b/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/Service.java
index 683bcd5..e676dfe 100644
--- a/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/Service.java
+++ b/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/Service.java
@@ -266,6 +266,18 @@
         return new StreamingOutputMarshaller(app, entity, hh.getAcceptableMediaTypes());

     }

 

+    @DELETE

+    @Path("{context}/entity/{type}")

+    public Response delete(@PathParam("context") String persistenceUnit, @PathParam("type") String type, @Context HttpHeaders hh, @Context UriInfo ui) {

+        ResponseBuilder rb = new ResponseBuilderImpl();

+        PersistenceContext app = get(persistenceUnit, ui.getBaseUri());

+        String tenantId = getTenantId(hh);

+        Object id = IdHelper.buildId(app, type, ui.getQueryParameters());

+        app.delete(tenantId, type, id);

+        rb.status(com.sun.jersey.api.client.ClientResponse.Status.OK);

+        return rb.build();

+    }

+    

     @GET

     @Path("{context}/query")

     public StreamingOutput adhocQuery(@PathParam("context") String persistenceUnit, @Context HttpHeaders hh, @Context UriInfo ui) {

@@ -278,19 +290,27 @@
         long millis = System.currentTimeMillis();

         System.out.println("Start Named Query " + name);

         PersistenceContext app = get(persistenceUnit, ui.getBaseUri());

-        Object result = app.query(name, Service.getParameterMap(ui), Service.getHintMap(ui), false);

+        Object result = app.query(name, Service.getParameterMap(ui), Service.getHintMap(ui), false, false);

 

 

         System.out.println("Named Query " + name + " Marshalling. time: " + (System.currentTimeMillis() - millis));

         return new StreamingOutputMarshaller(app, result, hh.getAcceptableMediaTypes());

     }

     

+    @POST

+    @Path("{context}/query/{name}")

+    public StreamingOutput namedQueryUpdate(@PathParam("context") String persistenceUnit, @PathParam("name") String name, @Context HttpHeaders hh, @Context UriInfo ui) {

+        PersistenceContext app = get(persistenceUnit, ui.getBaseUri());

+        Object result = app.query(name, Service.getParameterMap(ui), Service.getHintMap(ui), false, true);

+        return new StreamingOutputMarshaller(app, result, hh.getAcceptableMediaTypes());

+    }

+    

     @GET

     @Path("{context}/singleResultQuery/{name}")

     @Produces(MediaType.WILDCARD)

     public StreamingOutput namedQuerySingleResult(@PathParam("context") String persistenceUnit, @PathParam("name") String name, @Context HttpHeaders hh, @Context UriInfo ui) {

         PersistenceContext app = get(persistenceUnit, ui.getBaseUri());

-        Object result = app.query(name, Service.getParameterMap(ui), Service.getHintMap(ui), true);

+        Object result = app.query(name, Service.getParameterMap(ui), Service.getHintMap(ui), true, false);

         return new StreamingOutputMarshaller(app, result, hh.getAcceptableMediaTypes());

     }

     

diff --git a/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/util/StreamingOutputMarshaller.java b/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/util/StreamingOutputMarshaller.java
index 5ef7963..d284e3c 100644
--- a/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/util/StreamingOutputMarshaller.java
+++ b/JPA-RS/org.eclipse.persistence.jpars/src/org/eclipse/persistence/jpa/rs/util/StreamingOutputMarshaller.java
@@ -64,7 +64,7 @@
     public void write(OutputStream output) throws IOException, WebApplicationException {

         long millis = System.currentTimeMillis();

         System.out.println("StreamingOutputMarshaller About to write ");

-        if (this.context != null && this.context.getJAXBContext() != null && this.result != null && !this.mediaType.equals(MediaType.WILDCARD_TYPE)) {

+        if (this.context != null && this.context.getJAXBContext() != null && this.result != null && !(this.result instanceof Integer) &&  !this.mediaType.equals(MediaType.WILDCARD_TYPE)) {

             try {

                 Marshaller marshaller = createMarshaller(context, mediaType);

                 if (result instanceof Collection) {