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;
+ }
+
+}