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 2018/02/21 15:36:28 UTC

[isis] branch master updated (75a936e -> 01af65d)

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 75a936e  ISIS-1866 fix tests after changed default behavior
     new e31e3c1  ISIS-1867: cache JAXBContext by class
     new 1921a34  ISIS-1867: caches JAXBContext by class in JaxbService.Default implementation
     new 4de6220  ISIS-1867: caches JAXBContext by class (in JaxbUtil utility class in applib)
     new bf1daf6  ISIS-1867: refactors MemberExecutionDtoUtils #jaxbContextFor so handles exception, same as JaxbUtil
     new 2ed6fac  ISIS-1867: refactors MemberExecutionDtoUtils#jaxbContextFor to delegate to JaxbUtil
     new 2da9f90  ISIS-1867: refactors JaxbService#jaxbContextFor so handles exception, similar to JaxbUtil
     new a265623  ISIS-1867: refactors JaxbService to use JaxbUtil#jaxbContextFor
     new 29278da  ISIS-1867: refactors ChangesDtoUtil to use JaxbUtil#jaxbContextFor
     new 1eb350d  ISIS-1867: caches JAXBContext within JaxbMatchers (unit test support)
     new 88a2f66  ISIS-1867: refactors GridLoaderServiceDefault to cache its JAXBContext during initialization
     new 01af65d  Merge branch 'ISIS-1867'

The 11 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../isis/applib/services/jaxb/JaxbService.java     | 36 +++++++++++-----------
 .../java/org/apache/isis/applib/util/JaxbUtil.java | 27 ++++++++++------
 .../apache/isis/schema/utils/ChangesDtoUtils.java  |  7 ++---
 .../apache/isis/schema/utils/CommandDtoUtils.java  |  7 ++---
 .../isis/schema/utils/InteractionDtoUtils.java     |  7 ++---
 .../isis/schema/utils/MemberExecutionDtoUtils.java |  7 ++++-
 .../services/grid/GridLoaderServiceDefault.java    | 36 +++++++++++++---------
 .../core/unittestsupport/jaxb/JaxbMatchers.java    | 25 ++++++++++-----
 8 files changed, 86 insertions(+), 66 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 01/11: ISIS-1867: cache JAXBContext by class

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit e31e3c11b596cd980dde38381bb3c999abcca971
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 14:45:22 2018 +0000

    ISIS-1867: cache JAXBContext by class
---
 .../isis/schema/utils/MemberExecutionDtoUtils.java       | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
index 7015738..5090d0e 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
@@ -20,6 +20,7 @@ package org.apache.isis.schema.utils;
 
 import java.io.StringReader;
 import java.io.StringWriter;
+import java.util.Map;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
@@ -29,6 +30,8 @@ import javax.xml.bind.Unmarshaller;
 import javax.xml.namespace.QName;
 import javax.xml.transform.stream.StreamSource;
 
+import com.google.common.collect.MapMaker;
+
 import org.apache.isis.applib.internal.base._Casts;
 import org.apache.isis.schema.common.v1.DifferenceDto;
 import org.apache.isis.schema.common.v1.PeriodDto;
@@ -45,7 +48,7 @@ public final class MemberExecutionDtoUtils {
 
     private static <T> T clone(final T dto, final Class<T> dtoClass) {
         try {
-            JAXBContext jaxbContext = JAXBContext.newInstance(dtoClass);
+            JAXBContext jaxbContext = jaxbContextFor(dtoClass);
 
             final Marshaller marshaller = jaxbContext.createMarshaller();
 
@@ -68,6 +71,17 @@ public final class MemberExecutionDtoUtils {
         }
     }
 
+    private static Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
+
+    private static <T> JAXBContext jaxbContextFor(final Class<T> dtoClass) throws JAXBException {
+        JAXBContext jaxbContext = jaxbContextByClass.get(dtoClass);
+        if(jaxbContext == null) {
+            jaxbContext = JAXBContext.newInstance(dtoClass);
+            jaxbContextByClass.put(dtoClass, jaxbContext);
+        }
+        return jaxbContext;
+    }
+
     public static MetricsDto metricsFor(final MemberExecutionDto executionDto) {
         MetricsDto metrics = executionDto.getMetrics();
         if(metrics == null) {

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 09/11: ISIS-1867: caches JAXBContext within JaxbMatchers (unit test support)

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 1eb350d0646f06928f6ff0cb204a96c2c4b51b53
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 15:07:18 2018 +0000

    ISIS-1867: caches JAXBContext within JaxbMatchers (unit test support)
---
 .../core/unittestsupport/jaxb/JaxbMatchers.java    | 25 +++++++++++++++-------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jaxb/JaxbMatchers.java b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jaxb/JaxbMatchers.java
index 10e67e4..c126f57 100644
--- a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jaxb/JaxbMatchers.java
+++ b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jaxb/JaxbMatchers.java
@@ -23,6 +23,7 @@ import java.io.StringReader;
 import java.io.Writer;
 import java.net.URL;
 import java.nio.charset.Charset;
+import java.util.Map;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
@@ -30,6 +31,7 @@ import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 
 import com.google.common.base.Objects;
+import com.google.common.collect.MapMaker;
 import com.google.common.io.Resources;
 
 import org.hamcrest.Matcher;
@@ -73,8 +75,8 @@ class JaxbUtil2 {
             final Class<T> dtoClass) {
         Unmarshaller un = null;
         try {
-            un = getJaxbContext(dtoClass).createUnmarshaller();
-            return (T) un.unmarshal(reader);
+            un = jaxbContextFor(dtoClass).createUnmarshaller();
+            return (T)un.unmarshal(reader);
         } catch (JAXBException e) {
             throw new RuntimeException(e);
         }
@@ -100,7 +102,7 @@ class JaxbUtil2 {
         Marshaller m = null;
         try {
             final Class<?> aClass = dto.getClass();
-            m = getJaxbContext(aClass).createMarshaller();
+            m = jaxbContextFor(aClass).createMarshaller();
             m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
             m.marshal(dto, writer);
         } catch (JAXBException e) {
@@ -108,11 +110,18 @@ class JaxbUtil2 {
         }
     }
 
-    private static JAXBContext getJaxbContext(Class<?> dtoClass) {
-        try {
-            return JAXBContext.newInstance(dtoClass);
-        } catch (JAXBException e) {
-            throw new RuntimeException(e);
+    private static Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
+
+    public static <T> JAXBContext jaxbContextFor(final Class<T> dtoClass)  {
+        JAXBContext jaxbContext = jaxbContextByClass.get(dtoClass);
+        if(jaxbContext == null) {
+            try {
+                jaxbContext = JAXBContext.newInstance(dtoClass);
+            } catch (JAXBException e) {
+                throw new RuntimeException(e);
+            }
+            jaxbContextByClass.put(dtoClass, jaxbContext);
         }
+        return jaxbContext;
     }
 }

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 08/11: ISIS-1867: refactors ChangesDtoUtil to use JaxbUtil#jaxbContextFor

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 29278da178e1cfd16e8a32f516f6f5db48ee263c
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 15:03:31 2018 +0000

    ISIS-1867: refactors ChangesDtoUtil to use JaxbUtil#jaxbContextFor
---
 .../main/java/org/apache/isis/schema/utils/ChangesDtoUtils.java    | 7 ++-----
 .../main/java/org/apache/isis/schema/utils/CommandDtoUtils.java    | 7 ++-----
 .../java/org/apache/isis/schema/utils/InteractionDtoUtils.java     | 7 ++-----
 3 files changed, 6 insertions(+), 15 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/ChangesDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/ChangesDtoUtils.java
index 25f8627..575ca9d 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/ChangesDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/ChangesDtoUtils.java
@@ -34,6 +34,7 @@ import javax.xml.bind.Unmarshaller;
 
 import com.google.common.io.Resources;
 
+import org.apache.isis.applib.util.JaxbUtil;
 import org.apache.isis.schema.chg.v1.ChangesDto;
 
 public final class ChangesDtoUtils {
@@ -46,11 +47,7 @@ public final class ChangesDtoUtils {
     static JAXBContext jaxbContext;
     static JAXBContext getJaxbContext() {
         if(jaxbContext == null) {
-            try {
-                jaxbContext = JAXBContext.newInstance(ChangesDto.class);
-            } catch (JAXBException e) {
-                throw new RuntimeException(e);
-            }
+            jaxbContext = JaxbUtil.jaxbContextFor(ChangesDto.class);
         }
         return jaxbContext;
     }
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java
index f61260c..dddebc6 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/CommandDtoUtils.java
@@ -33,6 +33,7 @@ import javax.xml.bind.Unmarshaller;
 
 import com.google.common.io.Resources;
 
+import org.apache.isis.applib.util.JaxbUtil;
 import org.apache.isis.schema.cmd.v1.ActionDto;
 import org.apache.isis.schema.cmd.v1.CommandDto;
 import org.apache.isis.schema.cmd.v1.MapDto;
@@ -50,11 +51,7 @@ public final class CommandDtoUtils {
     static JAXBContext jaxbContext;
     static JAXBContext getJaxbContext() {
         if(jaxbContext == null) {
-            try {
-                jaxbContext = JAXBContext.newInstance(CommandDto.class);
-            } catch (JAXBException e) {
-                throw new RuntimeException(e);
-            }
+            jaxbContext = JaxbUtil.jaxbContextFor(CommandDto.class);
         }
         return jaxbContext;
     }
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
index f056398..650d29a 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
@@ -41,6 +41,7 @@ import com.google.common.io.Resources;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.util.JaxbUtil;
 import org.apache.isis.schema.cmd.v1.ParamDto;
 import org.apache.isis.schema.cmd.v1.ParamsDto;
 import org.apache.isis.schema.common.v1.InteractionType;
@@ -65,11 +66,7 @@ public final class InteractionDtoUtils {
     static JAXBContext jaxbContext;
     static JAXBContext getJaxbContext() {
         if(jaxbContext == null) {
-            try {
-                jaxbContext = JAXBContext.newInstance(InteractionDto.class);
-            } catch (JAXBException e) {
-                throw new RuntimeException(e);
-            }
+            jaxbContext = JaxbUtil.jaxbContextFor(InteractionDto.class);
         }
         return jaxbContext;
     }

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 04/11: ISIS-1867: refactors MemberExecutionDtoUtils #jaxbContextFor so handles exception, same as JaxbUtil

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit bf1daf67959f830f3f7ca58243da81ee00a0f6d7
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 14:58:22 2018 +0000

    ISIS-1867: refactors MemberExecutionDtoUtils #jaxbContextFor so handles exception, same as JaxbUtil
---
 .../org/apache/isis/schema/utils/MemberExecutionDtoUtils.java     | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
index 5090d0e..86eccab 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
@@ -73,10 +73,14 @@ public final class MemberExecutionDtoUtils {
 
     private static Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
 
-    private static <T> JAXBContext jaxbContextFor(final Class<T> dtoClass) throws JAXBException {
+    private static <T> JAXBContext jaxbContextFor(final Class<T> dtoClass)  {
         JAXBContext jaxbContext = jaxbContextByClass.get(dtoClass);
         if(jaxbContext == null) {
-            jaxbContext = JAXBContext.newInstance(dtoClass);
+            try {
+                jaxbContext = JAXBContext.newInstance(dtoClass);
+            } catch (JAXBException e) {
+                throw new RuntimeException(e);
+            }
             jaxbContextByClass.put(dtoClass, jaxbContext);
         }
         return jaxbContext;

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 11/11: Merge branch 'ISIS-1867'

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 01af65dd5aa247efa5de5ad021a6c4507213dc98
Merge: 75a936e 88a2f66
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 15:36:08 2018 +0000

    Merge branch 'ISIS-1867'

 .../isis/applib/services/jaxb/JaxbService.java     | 36 +++++++++++-----------
 .../java/org/apache/isis/applib/util/JaxbUtil.java | 27 ++++++++++------
 .../apache/isis/schema/utils/ChangesDtoUtils.java  |  7 ++---
 .../apache/isis/schema/utils/CommandDtoUtils.java  |  7 ++---
 .../isis/schema/utils/InteractionDtoUtils.java     |  7 ++---
 .../isis/schema/utils/MemberExecutionDtoUtils.java |  7 ++++-
 .../services/grid/GridLoaderServiceDefault.java    | 36 +++++++++++++---------
 .../core/unittestsupport/jaxb/JaxbMatchers.java    | 25 ++++++++++-----
 8 files changed, 86 insertions(+), 66 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 03/11: ISIS-1867: caches JAXBContext by class (in JaxbUtil utility class in applib)

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 4de622087a5cd750a3efa7d617c68cee61e78103
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 14:56:52 2018 +0000

    ISIS-1867: caches JAXBContext by class (in JaxbUtil utility class in applib)
---
 .../java/org/apache/isis/applib/util/JaxbUtil.java | 27 ++++++++++++++--------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java b/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
index 0bac18a..5127bf5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
@@ -23,16 +23,18 @@ import java.io.StringReader;
 import java.io.Writer;
 import java.net.URL;
 import java.nio.charset.Charset;
+import java.util.Map;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 
-import org.apache.isis.applib.internal.base._Casts;
-
+import com.google.common.collect.MapMaker;
 import com.google.common.io.Resources;
 
+import org.apache.isis.applib.internal.base._Casts;
+
 /**
  * Helper methods for converting {@link javax.xml.bind.annotation.XmlRootElement}-annotated class to-and-from XML.  Intended primarily for
  * test use only (the {@link JAXBContext} is not cached).
@@ -50,7 +52,7 @@ public class JaxbUtil {
             final Class<T> dtoClass) {
         Unmarshaller un = null;
         try {
-            un = getJaxbContext(dtoClass).createUnmarshaller();
+            un = jaxbContextFor(dtoClass).createUnmarshaller();
             return _Casts.uncheckedCast(un.unmarshal(reader));
         } catch (JAXBException e) {
             throw new RuntimeException(e);
@@ -77,7 +79,7 @@ public class JaxbUtil {
         Marshaller m = null;
         try {
             final Class<?> aClass = dto.getClass();
-            m = getJaxbContext(aClass).createMarshaller();
+            m = jaxbContextFor(aClass).createMarshaller();
             m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
             m.marshal(dto, writer);
         } catch (JAXBException e) {
@@ -85,11 +87,18 @@ public class JaxbUtil {
         }
     }
 
-    private static JAXBContext getJaxbContext(Class<?> dtoClass) {
-        try {
-            return JAXBContext.newInstance(dtoClass);
-        } catch (JAXBException e) {
-            throw new RuntimeException(e);
+    private static Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
+
+    private static <T> JAXBContext jaxbContextFor(final Class<T> dtoClass)  {
+        JAXBContext jaxbContext = jaxbContextByClass.get(dtoClass);
+        if(jaxbContext == null) {
+            try {
+                jaxbContext = JAXBContext.newInstance(dtoClass);
+            } catch (JAXBException e) {
+                throw new RuntimeException(e);
+            }
+            jaxbContextByClass.put(dtoClass, jaxbContext);
         }
+        return jaxbContext;
     }
 }

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 02/11: ISIS-1867: caches JAXBContext by class in JaxbService.Default implementation

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 1921a342d9a2d2a7b7bdb06f12b46df359b6e172
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 14:49:06 2018 +0000

    ISIS-1867: caches JAXBContext by class in JaxbService.Default implementation
---
 .../isis/applib/services/jaxb/JaxbService.java     | 34 +++++++++++++---------
 1 file changed, 21 insertions(+), 13 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
index 9df01a3..dae78d2 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
@@ -29,16 +29,16 @@ import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 
+import com.google.common.collect.MapMaker;
+import com.google.common.collect.Maps;
+
 import org.apache.isis.applib.ApplicationException;
-import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.internal.base._Casts;
 import org.apache.isis.applib.internal.base._NullSafe;
 import org.apache.isis.applib.services.dto.Dto_downloadXsd;
 
-import com.google.common.collect.Maps;
-
 public interface JaxbService {
 
     @Programmatic
@@ -103,7 +103,7 @@ public interface JaxbService {
 
         @Override
         public Object fromXml(final JAXBContext jaxbContext, final String xml) {
-            return fromXml(jaxbContext, xml, Maps.<String,Object>newHashMap());
+            return fromXml(jaxbContext, xml, Maps.newHashMap());
         }
         @Override
         public Object fromXml(final JAXBContext jaxbContext, final String xml, final Map<String, Object> unmarshallerProperties) {
@@ -127,12 +127,12 @@ public interface JaxbService {
 
         @Override
         public <T> T fromXml(final Class<T> domainClass, final String xml) {
-            return fromXml(domainClass, xml, Maps.<String,Object>newHashMap());
+            return fromXml(domainClass, xml, Maps.newHashMap());
         }
         @Override
         public <T> T fromXml(final Class<T> domainClass, final String xml, final Map<String, Object> unmarshallerProperties) {
             try {
-                final JAXBContext context = JAXBContext.newInstance(domainClass);
+                final JAXBContext context = jaxbContextFor(domainClass);
                 return _Casts.uncheckedCast(fromXml(context, xml, unmarshallerProperties));
 
             } catch (final JAXBException ex) {
@@ -140,9 +140,21 @@ public interface JaxbService {
             }
         }
 
+        private Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
+
+        private <T> JAXBContext jaxbContextFor(final Class<T> dtoClass) throws JAXBException {
+            JAXBContext jaxbContext = jaxbContextByClass.get(dtoClass);
+            if(jaxbContext == null) {
+                jaxbContext = JAXBContext.newInstance(dtoClass);
+                jaxbContextByClass.put(dtoClass, jaxbContext);
+            }
+            return jaxbContext;
+        }
+
+
         @Override
         public String toXml(final Object domainObject) {
-            return toXml(domainObject, Maps.<String,Object>newHashMap());
+            return toXml(domainObject, Maps.newHashMap());
         }
 
         @Override
@@ -150,7 +162,7 @@ public interface JaxbService {
 
             final Class<?> domainClass = domainObject.getClass();
             try {
-                final JAXBContext context = JAXBContext.newInstance(domainClass);
+                final JAXBContext context = jaxbContextFor(domainClass);
 
                 final Marshaller marshaller = context.createMarshaller();
 
@@ -218,7 +230,7 @@ public interface JaxbService {
 
             try {
                 final Class<?> domainClass = domainObject.getClass();
-                final JAXBContext context = JAXBContext.newInstance(domainClass);
+                final JAXBContext context = jaxbContextFor(domainClass);
 
                 final CatalogingSchemaOutputResolver outputResolver = new CatalogingSchemaOutputResolver(isisSchemas);
                 context.generateSchema(outputResolver);
@@ -228,10 +240,6 @@ public interface JaxbService {
                 throw new ApplicationException(ex);
             }
         }
-
-
-        @javax.inject.Inject
-        DomainObjectContainer container;
     }
 
 

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 06/11: ISIS-1867: refactors JaxbService#jaxbContextFor so handles exception, similar to JaxbUtil

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 2da9f90fb5b127ca2029d7de45563af987de6080
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 15:01:00 2018 +0000

    ISIS-1867: refactors JaxbService#jaxbContextFor so handles exception, similar to JaxbUtil
---
 .../isis/applib/services/jaxb/JaxbService.java     | 23 +++++++++++-----------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
index dae78d2..41cbcd0 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
@@ -131,22 +131,21 @@ public interface JaxbService {
         }
         @Override
         public <T> T fromXml(final Class<T> domainClass, final String xml, final Map<String, Object> unmarshallerProperties) {
-            try {
-                final JAXBContext context = jaxbContextFor(domainClass);
-                return _Casts.uncheckedCast(fromXml(context, xml, unmarshallerProperties));
-
-            } catch (final JAXBException ex) {
-                throw new NonRecoverableException("Error unmarshalling XML to class '" + domainClass.getName() + "'", ex);
-            }
+            final JAXBContext context = jaxbContextFor(domainClass);
+            return _Casts.uncheckedCast(fromXml(context, xml, unmarshallerProperties));
         }
 
         private Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
 
-        private <T> JAXBContext jaxbContextFor(final Class<T> dtoClass) throws JAXBException {
-            JAXBContext jaxbContext = jaxbContextByClass.get(dtoClass);
+        private <T> JAXBContext jaxbContextFor(final Class<T> clazz)  {
+            JAXBContext jaxbContext = jaxbContextByClass.get(clazz);
             if(jaxbContext == null) {
-                jaxbContext = JAXBContext.newInstance(dtoClass);
-                jaxbContextByClass.put(dtoClass, jaxbContext);
+                try {
+                    jaxbContext = JAXBContext.newInstance(clazz);
+                } catch (JAXBException e) {
+                    throw new NonRecoverableException("Error obtaining JAXBContext for class '" + clazz + "'", e);
+                }
+                jaxbContextByClass.put(clazz, jaxbContext);
             }
             return jaxbContext;
         }
@@ -236,7 +235,7 @@ public interface JaxbService {
                 context.generateSchema(outputResolver);
 
                 return outputResolver.asMap();
-            } catch (final JAXBException | IOException ex) {
+            } catch (final IOException ex) {
                 throw new ApplicationException(ex);
             }
         }

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 05/11: ISIS-1867: refactors MemberExecutionDtoUtils#jaxbContextFor to delegate to JaxbUtil

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 2ed6facddcef88882b90df874a22fd96916e1fb6
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 14:59:14 2018 +0000

    ISIS-1867: refactors MemberExecutionDtoUtils#jaxbContextFor to delegate to JaxbUtil
---
 .../main/java/org/apache/isis/applib/util/JaxbUtil.java |  2 +-
 .../isis/schema/utils/MemberExecutionDtoUtils.java      | 17 ++---------------
 2 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java b/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
index 5127bf5..f71ccdf 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
@@ -89,7 +89,7 @@ public class JaxbUtil {
 
     private static Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
 
-    private static <T> JAXBContext jaxbContextFor(final Class<T> dtoClass)  {
+    public static <T> JAXBContext jaxbContextFor(final Class<T> dtoClass)  {
         JAXBContext jaxbContext = jaxbContextByClass.get(dtoClass);
         if(jaxbContext == null) {
             try {
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
index 86eccab..f31ff9c 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/MemberExecutionDtoUtils.java
@@ -20,7 +20,6 @@ package org.apache.isis.schema.utils;
 
 import java.io.StringReader;
 import java.io.StringWriter;
-import java.util.Map;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
@@ -30,9 +29,8 @@ import javax.xml.bind.Unmarshaller;
 import javax.xml.namespace.QName;
 import javax.xml.transform.stream.StreamSource;
 
-import com.google.common.collect.MapMaker;
-
 import org.apache.isis.applib.internal.base._Casts;
+import org.apache.isis.applib.util.JaxbUtil;
 import org.apache.isis.schema.common.v1.DifferenceDto;
 import org.apache.isis.schema.common.v1.PeriodDto;
 import org.apache.isis.schema.ixn.v1.MemberExecutionDto;
@@ -71,19 +69,8 @@ public final class MemberExecutionDtoUtils {
         }
     }
 
-    private static Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
-
     private static <T> JAXBContext jaxbContextFor(final Class<T> dtoClass)  {
-        JAXBContext jaxbContext = jaxbContextByClass.get(dtoClass);
-        if(jaxbContext == null) {
-            try {
-                jaxbContext = JAXBContext.newInstance(dtoClass);
-            } catch (JAXBException e) {
-                throw new RuntimeException(e);
-            }
-            jaxbContextByClass.put(dtoClass, jaxbContext);
-        }
-        return jaxbContext;
+        return JaxbUtil.jaxbContextFor(dtoClass);
     }
 
     public static MetricsDto metricsFor(final MemberExecutionDto executionDto) {

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 10/11: ISIS-1867: refactors GridLoaderServiceDefault to cache its JAXBContext during initialization

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 88a2f665cfa1473873b2db4ed8f5ec52309ceddb
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 15:21:11 2018 +0000

    ISIS-1867: refactors GridLoaderServiceDefault to cache its JAXBContext during initialization
---
 .../services/grid/GridLoaderServiceDefault.java    | 36 +++++++++++++---------
 1 file changed, 21 insertions(+), 15 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
index cd1a2ef..95cc52f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
@@ -25,6 +25,7 @@ import java.util.Objects;
 
 import javax.annotation.PostConstruct;
 import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
 
 import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
@@ -60,20 +61,22 @@ public class GridLoaderServiceDefault implements GridLoaderService {
     // cache (used only in prototyping mode)
     private final Map<String, Grid> gridByXml = Maps.newHashMap();
 
-    private List<Class<? extends Grid>> pageImplementations;
-
-
+    private JAXBContext jaxbContext;
 
     @PostConstruct
     public void init(){
-        pageImplementations = FluentIterable.from(gridSystemServices)
-                .transform(new Function<GridSystemService, Class<? extends Grid>>() {
-                    @Override
-                    public Class<? extends Grid> apply(final GridSystemService gridSystemService) {
-                        return gridSystemService.gridImplementation();
-                    }
-                })
-                .toList();
+        final List<Class<? extends Grid>> pageImplementations =
+                FluentIterable.from(gridSystemServices)
+                    .transform(
+                            (Function<GridSystemService, Class<? extends Grid>>) gss -> gss.gridImplementation())
+                    .toList();
+
+        final Class[] clazz = pageImplementations.toArray(_Constants.emptyClasses);
+        try {
+            jaxbContext = JAXBContext.newInstance(clazz);
+        } catch (JAXBException e) {
+            // leave as null
+        }
     }
 
     @Override
@@ -126,11 +129,14 @@ public class GridLoaderServiceDefault implements GridLoaderService {
             }
         }
 
-        try {
-            // all known implementations of Page
-            final JAXBContext context = JAXBContext.newInstance(pageImplementations.toArray(_Constants.emptyClasses));
 
-            final Grid grid = (Grid) jaxbService.fromXml(context, xml);
+        try {
+            if(jaxbContext == null) {
+                // shouldn't occur, indicates that initialization failed to locate any GridSystemService implementations.
+                return null;
+            }
+            
+            final Grid grid = (Grid) jaxbService.fromXml(jaxbContext, xml);
             grid.setDomainClass(domainClass);
             if(supportsReloading()) {
                 gridByXml.put(xml, grid);

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.

[isis] 07/11: ISIS-1867: refactors JaxbService to use JaxbUtil#jaxbContextFor

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit a265623ae61089438c196e2b24ebc179c3450ece
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 15:02:13 2018 +0000

    ISIS-1867: refactors JaxbService to use JaxbUtil#jaxbContextFor
---
 .../apache/isis/applib/services/jaxb/JaxbService.java   | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
index 41cbcd0..18fe039 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
@@ -38,6 +38,7 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.internal.base._Casts;
 import org.apache.isis.applib.internal.base._NullSafe;
 import org.apache.isis.applib.services.dto.Dto_downloadXsd;
+import org.apache.isis.applib.util.JaxbUtil;
 
 public interface JaxbService {
 
@@ -135,22 +136,14 @@ public interface JaxbService {
             return _Casts.uncheckedCast(fromXml(context, xml, unmarshallerProperties));
         }
 
-        private Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
-
         private <T> JAXBContext jaxbContextFor(final Class<T> clazz)  {
-            JAXBContext jaxbContext = jaxbContextByClass.get(clazz);
-            if(jaxbContext == null) {
-                try {
-                    jaxbContext = JAXBContext.newInstance(clazz);
-                } catch (JAXBException e) {
-                    throw new NonRecoverableException("Error obtaining JAXBContext for class '" + clazz + "'", e);
-                }
-                jaxbContextByClass.put(clazz, jaxbContext);
+            try {
+                return JaxbUtil.jaxbContextFor(clazz);
+            } catch (RuntimeException e) {
+                throw new NonRecoverableException("Error obtaining JAXBContext for class '" + clazz + "'", e.getCause());
             }
-            return jaxbContext;
         }
 
-
         @Override
         public String toXml(final Object domainObject) {
             return toXml(domainObject, Maps.newHashMap());

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.