[isis] 01/04: ISIS-1939: overrides ObjectInputStream's class-loading to use Isis' default class-loader

2018-04-27 Thread ahuber
This is an automated email from the ASF dual-hosted git repository.

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

commit ce91cd599a2f427a35698829c8b36e236fd1d82d
Author: Andi Huber 
AuthorDate: Fri Apr 27 13:18:51 2018 +0200

ISIS-1939: overrides ObjectInputStream's class-loading to use Isis'
default class-loader
---
 .../applib/internal/memento/_Mementos_MementoDefault.java   | 13 -
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos_MementoDefault.java
 
b/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos_MementoDefault.java
index 9b58f00..deb3af0 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos_MementoDefault.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos_MementoDefault.java
@@ -21,8 +21,10 @@ package org.apache.isis.applib.internal.memento;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.io.ObjectStreamClass;
 import java.io.Serializable;
 import java.util.Map;
 import java.util.Objects;
@@ -34,6 +36,7 @@ import org.apache.isis.applib.internal.base._Casts;
 import org.apache.isis.applib.internal.base._NullSafe;
 import org.apache.isis.applib.internal.collections._Maps;
 import org.apache.isis.applib.internal.collections._Sets;
+import org.apache.isis.applib.internal.context._Context;
 import org.apache.isis.applib.internal.memento._Mementos.Memento;
 import org.apache.isis.applib.internal.memento._Mementos.SerializingAdapter;
 import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
@@ -108,7 +111,15 @@ class _Mementos_MementoDefault implements 
_Mementos.Memento {
if(_NullSafe.isEmpty(str)) {
return null;
}
-   try(ObjectInputStream ois = new ObjectInputStream(new 
ByteArrayInputStream(codec.decode(str {
+   try(ObjectInputStream ois = new ObjectInputStream(new 
ByteArrayInputStream(codec.decode(str))) {
+   //override ObjectInputStream's classloading
+   protected Class resolveClass(ObjectStreamClass desc)
+   throws IOException, ClassNotFoundException
+   {
+   String name = desc.getName();
+   return Class.forName(name, false, 
_Context.getDefaultClassLoader());
+   }
+   }) {
// read in the entire map
final Map valuesByKey = 
_Casts.uncheckedCast(ois.readObject());
return new _Mementos_MementoDefault(codec, serializer, 
valuesByKey);

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


[isis] branch master updated (9340178 -> 9a51b98)

2018-04-27 Thread ahuber
This is an automated email from the ASF dual-hosted git repository.

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


from 9340178  ISIS-898 remove temporary class
 new ce91cd5  ISIS-1939: overrides ObjectInputStream's class-loading to use 
Isis' default class-loader
 new 3bc8e4f  ISIS-1940 uses the invocation-preprocessor for support method 
validation
 new e7224f4  ISIS-1942 New Facet: XmlAccessorTypeFacet
 new 9a51b98  ISIS-1940 let the SortedSet-of-list adapter return a 
comparator=null

The 4 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:
 .../collections/_Collections_SortedSetOfList.java  |  5 +-
 .../internal/memento/_Mementos_MementoDefault.java | 13 -
 .../isis/core/commons/lang/MethodExtensions.java   |  2 +-
 .../lang/MethodInvocationPreprocessor.java}| 16 +--
 .../isis/core/metamodel/facets/Annotations.java|  2 +
 ...ctionInvocationFacetForDomainEventAbstract.java |  5 +-
 ...pterFacetFactory.java => JaxbFacetFactory.java} | 55 ++
 .../XmlAccessorTypeFacet.java} |  8 ++--
 ...ault.java => XmlAccessorTypeFacetAbstract.java} | 19 +---
 ...fault.java => XmlAccessorTypeFacetDefault.java} | 11 +++--
 .../specloader/specimpl/ObjectActionDefault.java   |  1 +
 .../dflt/ProgrammingModelFacetsJava5.java  |  4 +-
 12 files changed, 107 insertions(+), 34 deletions(-)
 rename 
core/metamodel/src/main/java/org/apache/isis/core/{metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
 => commons/lang/MethodInvocationPreprocessor.java} (85%)
 rename 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/{XmlJavaTypeAdapterFacetFactory.java
 => JaxbFacetFactory.java} (90%)
 copy 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/{collparam/semantics/CollectionSemanticsFacet.java
 => jaxb/XmlAccessorTypeFacet.java} (78%)
 copy 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/{XmlJavaTypeAdapterFacetDefault.java
 => XmlAccessorTypeFacetAbstract.java} (66%)
 copy 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/{XmlTransientFacetDefault.java
 => XmlAccessorTypeFacetDefault.java} (76%)

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


[isis] 03/04: ISIS-1942 New Facet: XmlAccessorTypeFacet

2018-04-27 Thread ahuber
This is an automated email from the ASF dual-hosted git repository.

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

commit e7224f42c7740de987be726f9deed03914b2a1da
Author: Andi Huber 
AuthorDate: Fri Apr 27 20:41:08 2018 +0200

ISIS-1942 New Facet: XmlAccessorTypeFacet

also adds XmlTransient to the list the 'Annotations' scanner searches
fields for
---
 .../isis/core/metamodel/facets/Annotations.java|  2 +
 ...pterFacetFactory.java => JaxbFacetFactory.java} | 55 ++
 .../facets/jaxb/XmlAccessorTypeFacet.java  | 31 
 .../facets/jaxb/XmlAccessorTypeFacetAbstract.java  | 40 
 .../facets/jaxb/XmlAccessorTypeFacetDefault.java   | 33 +
 .../dflt/ProgrammingModelFacetsJava5.java  |  4 +-
 6 files changed, 154 insertions(+), 11 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Annotations.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Annotations.java
index 972f06e..1b92a47 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Annotations.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Annotations.java
@@ -33,6 +33,7 @@ import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import javax.validation.constraints.Pattern;
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.apache.isis.applib.annotation.Collection;
@@ -583,6 +584,7 @@ public final class Annotations  {
 javax.annotation.Nullable.class,
 Title.class,
 XmlJavaTypeAdapter.class,
+XmlTransient.class,
 javax.jdo.annotations.Column.class
 )
 );
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/XmlJavaTypeAdapterFacetFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/JaxbFacetFactory.java
similarity index 90%
rename from 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/XmlJavaTypeAdapterFacetFactory.java
rename to 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/JaxbFacetFactory.java
index 1477cb8..b3fe9f0 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/XmlJavaTypeAdapterFacetFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/JaxbFacetFactory.java
@@ -23,7 +23,10 @@ import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.List;
+import java.util.Optional;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
@@ -51,7 +54,7 @@ import com.google.common.collect.Lists;
 /**
  * just adds a validator
  */
-public class XmlJavaTypeAdapterFacetFactory extends FacetFactoryAbstract
+public class JaxbFacetFactory extends FacetFactoryAbstract
 implements MetaModelValidatorRefiner {
 
 public static final String 
ISIS_REFLECTOR_VALIDATOR_JAXB_VIEW_MODEL_NOT_ABSTRACT =
@@ -74,42 +77,74 @@ public class XmlJavaTypeAdapterFacetFactory extends 
FacetFactoryAbstract
 "isis.reflector.validator.jaxbViewModelDateTimeTypeAdapter";
 public static final boolean 
ISIS_REFLECTOR_VALIDATOR_JAXB_VIEW_MODEL_DATE_TIME_TYPE_ADAPTER_DEFAULT = true;
 
-public XmlJavaTypeAdapterFacetFactory() {
+public JaxbFacetFactory() {
 super(FeatureType.OBJECTS_AND_PROPERTIES);
 }
+
+// -- CLASS CONTEXT
 
 @Override
 public void process(final ProcessClassContext processClassContext) {
+   processXmlJavaTypeAdapter(processClassContext);
+   processXmlAccessorTypeFacet(processClassContext);
+}
+
+private void processXmlJavaTypeAdapter(final ProcessClassContext 
processClassContext) {
 final Class cls = processClassContext.getCls();
 
 final XmlJavaTypeAdapter annotation = Annotations.getAnnotation(cls, 
XmlJavaTypeAdapter.class);
 if(annotation == null) {
 return;
 }
-
+
 final FacetHolder holder = processClassContext.getFacetHolder();
 final XmlJavaTypeAdapterFacetDefault facet = new 
XmlJavaTypeAdapterFacetDefault(holder,
 annotation.value(), getSpecificationLoader());
 
 FacetUtil.addFacet(facet);
 }
+
+private void processXmlAccessorTypeFacet(final ProcessClassContext 
processClassContext) {
+final Class cls = processClassContext.getCls();
+
+final XmlAccessorType annotation = Annotations.getAnnotation(cls, 
XmlAccessorType.class);
+if(annotation == null) {
+ 

[isis] 02/04: ISIS-1940 uses the invocation-preprocessor for support method validation

2018-04-27 Thread ahuber
This is an automated email from the ASF dual-hosted git repository.

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

commit 3bc8e4fcbc706f6fe65dc87bdb7f2ee754d1e1f2
Author: Andi Huber 
AuthorDate: Fri Apr 27 14:48:16 2018 +0200

ISIS-1940 uses the invocation-preprocessor for support method validation
---
 .../apache/isis/core/commons/lang/MethodExtensions.java  |  2 +-
 .../lang/MethodInvocationPreprocessor.java}  | 16 +++-
 .../ActionInvocationFacetForDomainEventAbstract.java |  5 +++--
 .../specloader/specimpl/ObjectActionDefault.java |  1 +
 4 files changed, 16 insertions(+), 8 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodExtensions.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodExtensions.java
index 7215a47..6341054 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodExtensions.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodExtensions.java
@@ -41,7 +41,7 @@ public class MethodExtensions {
 public static Object invoke(final Method method, final Object object, 
final Object[] arguments) {
 try {
 Object[] defaultAnyPrimitive = 
defaultAnyPrimitive(method.getParameterTypes(), arguments);
-return method.invoke(object, defaultAnyPrimitive);
+return MethodInvocationPreprocessor.invoke(method, object, 
defaultAnyPrimitive);
 } catch (Exception e) {
return ThrowableExtensions.handleInvocationException(e, 
method.getName());
} 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodInvocationPreprocessor.java
similarity index 85%
rename from 
core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
rename to 
core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodInvocationPreprocessor.java
index 52dc432..aba3707 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/MethodInvocationPreprocessor.java
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.isis.core.metamodel.facets.actions.action.invocation;
+package org.apache.isis.core.commons.lang;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -32,12 +32,18 @@ import org.apache.isis.applib.internal.collections._Arrays;
 import org.apache.isis.applib.internal.collections._Collections;
 
 /**
- * Package private utility for method invocation pre-processing. 
- * Adapts supported collection parameter types List, Set, SortedSet, 
Collection and Arrays.
+ * Utility for method invocation pre-processing.
+ * 
+ * For a given array of parameters, we intercept and adapt those, 
+ * that are not compatible with the expected target parameter type.
+ * 
+ * 
+ * By now we do this for collection parameter types List, Set, SortedSet, 
Collection and Arrays.
+ * 
  */
-class RelaxedMethodInvoker {
+public class MethodInvocationPreprocessor {
 
-   static Object invoke(Method method, Object targetPojo, Object[] 
executionParameters) 
+   public static Object invoke(Method method, Object targetPojo, Object[] 
executionParameters) 
throws IllegalAccessException, 
InvocationTargetException {
 
if (_NullSafe.isEmpty(executionParameters)) {
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 5f987d1..a071efe 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -51,6 +51,7 @@ import 
org.apache.isis.core.commons.authentication.AuthenticationSessionProvider
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.ArrayExtensions;
+import org.apache.isis.core.commons.lang.MethodInvocationPreprocessor;
 import org.apache.isis.core.commons.lang.ThrowableExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
@@ -389,11 +390,11 @@ public abstract class 

[isis] 04/04: ISIS-1940 let the SortedSet-of-list adapter return a comparator=null

2018-04-27 Thread ahuber
This is an automated email from the ASF dual-hosted git repository.

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

commit 9a51b98515fa864d175297e3eae2937a59732b2b
Author: Andi Huber 
AuthorDate: Fri Apr 27 20:43:40 2018 +0200

ISIS-1940 let the SortedSet-of-list adapter return a comparator=null

otherwise streaming the elements will throw an exception
---
 .../applib/internal/collections/_Collections_SortedSetOfList.java| 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/collections/_Collections_SortedSetOfList.java
 
b/core/applib/src/main/java/org/apache/isis/applib/internal/collections/_Collections_SortedSetOfList.java
index add7d8a..d78558c 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/internal/collections/_Collections_SortedSetOfList.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/collections/_Collections_SortedSetOfList.java
@@ -113,7 +113,10 @@ class _Collections_SortedSetOfList implements 
SortedSet {
 
@Override
public Comparator comparator() {
-   throw new UnsupportedOperationException(JUST_AN_ADAPTER);
+   return null; 
+   // this set was created from a list, we have no 
+   // info about the intended comparator, 
+   // but a least let stream traverse the elements
}
 
@Override

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