You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/11/17 21:50:06 UTC

isis git commit: ISIS-1250: some more docs, minor refactoring/renaming of RestfulObjectsMessageBodyWriter to RestfulObjectsJaxbWriterForXml.

Repository: isis
Updated Branches:
  refs/heads/master e0de7da81 -> a1c7e2690


ISIS-1250: some more docs, minor refactoring/renaming of RestfulObjectsMessageBodyWriter to RestfulObjectsJaxbWriterForXml.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/a1c7e269
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/a1c7e269
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/a1c7e269

Branch: refs/heads/master
Commit: a1c7e269014c0f20bbd416bee1affb6988edf4c4
Parents: e0de7da
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Nov 17 20:49:56 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Nov 17 20:49:56 2015 +0000

----------------------------------------------------------------------
 .../_rg_annotations_manpage-XmlRootElement.adoc | 23 ++++---
 .../server/RestfulObjectsApplication.java       |  4 +-
 .../conneg/RestfulObjectsJaxbWriterForXml.java  | 67 +++++++++++++++++++
 .../conneg/RestfulObjectsMessageBodyWriter.java | 68 --------------------
 .../restfulobjects/server/conneg/Util.java      | 33 ++++++++++
 5 files changed, 113 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a1c7e269/adocs/documentation/src/main/asciidoc/guides/_rg_annotations_manpage-XmlRootElement.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rg_annotations_manpage-XmlRootElement.adoc b/adocs/documentation/src/main/asciidoc/guides/_rg_annotations_manpage-XmlRootElement.adoc
index 241b419..66682b9 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rg_annotations_manpage-XmlRootElement.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rg_annotations_manpage-XmlRootElement.adoc
@@ -55,26 +55,28 @@ This example is taken from the (non-ASF) http://github.com/isisaddons/isis-app-t
 @XmlType(
         namespace = "http://viewmodels.app.todoapp/v1/todoitem",    // <2>
         propOrder = {                                               // <3>
-            "toDoItem",
             "description",
-            "cost",
-            "similarItems"
+            "category",
+            "subcategory",
+            "cost"
         }
 )
 @XmlRootElement(name = "toDoItemDto")                               // <4>
 public class ToDoItemDto implements Dto {
 
     @XmlElement(required = true)                                    // <5>
-    protected ToDoItem toDoItem;                                    // <6>
+    @Getter @Setter
+    protected String description;
 
     @XmlElement(required = true)
-    protected String description;
+    @Getter @Setter
+    protected String category;
 
-    protected BigDecimal cost;
+    @Getter @Setter
+    protected String subcategory;
 
-    @XmlElementWrapper                                              // <7>
-    @XmlElement(name = "todoItem")                                  // <8>
-    protected List<ToDoItem> similarItems = Lists.newArrayList();
+    @Getter @Setter
+    protected BigDecimal cost;
 
     // getters and setters omitted
 }
@@ -84,6 +86,3 @@ public class ToDoItemDto implements Dto {
 <3> all properties in the class must be listed; (they can be ignored using `@XmlTransient`)
 <4> mandatory, identifies this class as a view model and defines the root element for JAXB serialization
 <5> optional; JAXB metadata can specify such attributes as required/optional
-<6> reference to a persistent entity (`ToDoItem`).  Further discussion below.
-<7> collections must be wrapped in `XmlElementWraper`.
-<8> collections should specify the name of the elements within the collection
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/a1c7e269/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java
index 637a358..7adc430 100644
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.viewer.restfulobjects.server;
 
-import org.apache.isis.viewer.restfulobjects.server.conneg.RestfulObjectsMessageBodyWriter;
+import org.apache.isis.viewer.restfulobjects.server.conneg.RestfulObjectsJaxbWriterForXml;
 import org.apache.isis.viewer.restfulobjects.server.resources.DomainObjectResourceServerside;
 import org.apache.isis.viewer.restfulobjects.server.resources.DomainServiceResourceServerside;
 import org.apache.isis.viewer.restfulobjects.server.resources.DomainTypeResourceServerside;
@@ -38,7 +38,7 @@ public class RestfulObjectsApplication extends AbstractJaxRsApplication {
         addClass(DomainServiceResourceServerside.class);
         addClass(VersionResourceServerside.class);
 
-        final RestfulObjectsMessageBodyWriter roWriter = new RestfulObjectsMessageBodyWriter();
+        final RestfulObjectsJaxbWriterForXml roWriter = new RestfulObjectsJaxbWriterForXml();
         addSingleton(roWriter);
         addSingleton(new RestfulObjectsApplicationExceptionMapper());
         addSingleton(new RuntimeExceptionMapper());

http://git-wip-us.apache.org/repos/asf/isis/blob/a1c7e269/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
new file mode 100644
index 0000000..b259fdc
--- /dev/null
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsJaxbWriterForXml.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.server.conneg;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.ext.Provider;
+import javax.xml.bind.Marshaller;
+
+import org.jboss.resteasy.plugins.providers.jaxb.JAXBXmlRootElementProvider;
+
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter;
+
+@Provider
+@Produces({"application/xml", "application/*+xml", "text/*+xml"})
+public class RestfulObjectsJaxbWriterForXml extends JAXBXmlRootElementProvider {
+
+    public RestfulObjectsJaxbWriterForXml(){
+        ;
+    }
+
+    @Override protected boolean isReadWritable(
+            final Class<?> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType) {
+        return super.isReadWritable(type, genericType, annotations, mediaType) && hasXRoDomainTypeParameter(mediaType);
+    }
+
+    protected boolean hasXRoDomainTypeParameter(final MediaType mediaType) {
+        return Util.hasXRoDomainTypeParameter(mediaType);
+    }
+
+    @Override protected Marshaller getMarshaller(
+            final Class<?> type, final Annotation[] annotations, final MediaType mediaType) {
+        final Marshaller marshaller = super.getMarshaller(type, annotations, mediaType);
+        marshaller.setAdapter(PersistentEntityAdapter.class, new PersistentEntityAdapter() {
+            @Override
+            protected BookmarkService getBookmarkService() {
+                final PersistenceSession persistenceSession = IsisContext.getPersistenceSession();
+                final ServicesInjectorSpi servicesInjector = persistenceSession.getServicesInjector();
+                return servicesInjector.lookupService(BookmarkService.class);
+            }
+        });
+        return marshaller;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a1c7e269/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsMessageBodyWriter.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsMessageBodyWriter.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsMessageBodyWriter.java
deleted file mode 100644
index 8a6b2ce..0000000
--- a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/RestfulObjectsMessageBodyWriter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.server.conneg;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.ext.Provider;
-import javax.xml.bind.Marshaller;
-
-import org.jboss.resteasy.plugins.providers.jaxb.JAXBXmlRootElementProvider;
-
-import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.core.metamodel.services.ServicesInjectorSpi;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter;
-
-@Provider
-@Produces({"application/xml", "application/*+xml", "text/*+xml"})
-public class RestfulObjectsMessageBodyWriter extends JAXBXmlRootElementProvider {
-
-    public RestfulObjectsMessageBodyWriter(){
-        ;
-    }
-
-    @Override protected boolean isReadWritable(
-            final Class<?> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType) {
-        return super.isReadWritable(type, genericType, annotations, mediaType) && hasXRoDomainTypeParameter(mediaType);
-    }
-
-    protected static boolean hasXRoDomainTypeParameter(final MediaType mediaType) {
-        final boolean retval = mediaType.getParameters().containsKey("x-ro-domain-type");
-        return retval;
-    }
-
-    @Override protected Marshaller getMarshaller(
-            final Class<?> type, final Annotation[] annotations, final MediaType mediaType) {
-        final Marshaller marshaller = super.getMarshaller(type, annotations, mediaType);
-        marshaller.setAdapter(PersistentEntityAdapter.class, new PersistentEntityAdapter() {
-            @Override
-            protected BookmarkService getBookmarkService() {
-                final PersistenceSession persistenceSession = IsisContext.getPersistenceSession();
-                final ServicesInjectorSpi servicesInjector = persistenceSession.getServicesInjector();
-                return servicesInjector.lookupService(BookmarkService.class);
-            }
-        });
-        return marshaller;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/a1c7e269/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/Util.java
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/Util.java b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/Util.java
new file mode 100644
index 0000000..e7663ad
--- /dev/null
+++ b/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/conneg/Util.java
@@ -0,0 +1,33 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.restfulobjects.server.conneg;
+
+import javax.ws.rs.core.MediaType;
+
+final class Util {
+
+    private Util(){
+    }
+
+    static boolean hasXRoDomainTypeParameter(final MediaType mediaType) {
+        final boolean retval = mediaType.getParameters().containsKey("x-ro-domain-type");
+        return retval;
+    }
+
+}