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/28 13:31:03 UTC

[isis] branch master updated (575a23f -> 4768203)

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 575a23f  ISIS 1841 move deprecated classes to deprecated modules (runtime)
     add 1ff68a7  bumps maint-1.16.2 branch versions to 1.16.2-SNAPSHOT
     add 5b37fbc  ISIS-1876: converts applib module to inherit from ModuleAbstract
     add 7dce4f6  ISIS-1875: tiny fixes for logging.properties in archetypes (suppress noisy SQLWarnings)
     add 6adc5ed  ISIS-1874: adds guard against NPE, and ensures choices facet not installed on incompatible parameters
     add 0d92ae7  ISIS-1867: caches JAXBContext (backported from 2.0.0-M1)
     add 9bd76ac  ISIS-1867: caches JAXBContext (backported from 2.0.0-M1)
     add b9e6002  ISIS-1872: moves withAdditionalDependency/ies from AppManifestAbstract2.Builder up to ModuleOrBuilderAbstract
     add 0153518  ISIS-1877: adds 'up' link to action result representation
     add ff0aee4  ISIS-1879: uses ClockService to set Date header for HTTP responses in RO viewer.
     add b2d720f  ISIS-1884: restricts contribution of choices and default only if @Action(associatedWith) is used...
     add d6fddad  ISIS-1882: adds DomainObjectList, special cases support within JaxbServiceDefault, adds support for new Accept type for action invocation.
     add 90b05d4  ISIS-1882: moves DomainObjectList into new package, use objectType rather than FQCN for the element type, and adds domain events etc.
     add 236adc8  ISIS-1882: handles case when action result returns a single adapter, not a collection
     add b0d3b6e  ISIS-1882: updates to docs
     add 804f103  ISIS-1882: extends DomainObjectList to contain details of the action invocation.
     add bc7253b  Merge branch 'ISIS-1882' into maint-1.16.2
     new e3ecefd  Merge branch 'maint-1.16.2'
     new 4768203  Merge remote-tracking branch 'origin/master'

The 2 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:
 ...esentation-layer_ContentNegotiationService.adoc |  10 +-
 .../apache/isis/applib/AppManifestAbstract2.java   |  32 ----
 .../org/apache/isis/applib/IsisApplibModule.java   |  27 +++-
 .../isis/applib/ModuleOrBuilderAbstract.java       |  39 ++++-
 .../isis/applib/domain/DomainObjectList.java       | 176 +++++++++++++++++++++
 .../isis/applib/services/jaxb/JaxbService.java     |  42 +++--
 .../applib/services/jaxb/JaxbServiceDefault.java   |  67 +++++++-
 .../java/org/apache/isis/applib/util/JaxbUtil.java |   8 +-
 .../apache/isis/schema/utils/ChangesDtoUtils.java  |   1 +
 .../jaxbadapters/PersistentEntitiesAdapter.java    |  70 ++++++++
 .../action/ActionAnnotationFacetFactory.java       |  12 +-
 .../action/associateWith/AssociatedWithFacet.java} |   9 +-
 .../AssociatedWithFacetAbstract.java}              |  18 ++-
 .../AssociatedWithFacetForActionAnnotation.java}   |   9 +-
 ...onParameterDefaultsAndChoicesPostProcessor.java |  91 +++++++----
 ...eterDefaultsFacetFromAssociatedCollection.java} |   4 +-
 .../services/swagger/internal/Generation.java      |   1 +
 .../core/metamodel/spec/feature/ObjectAction.java  |  15 +-
 .../viewer/restfulobjects/rendering/Responses.java |  15 ++
 .../domainobjects/ActionResultReprRenderer.java    |   7 +
 .../domainobjects/ObjectAndActionInvocation.java   |   9 ++
 ...entNegotiationServiceForRestfulObjectsV1_0.java | 174 ++++++++++++++++++--
 .../server/resources/DomainResourceHelper.java     |   2 +-
 .../ui/components/collection/CollectionPanel.java  |   7 +-
 .../linkandlabel/ActionLinkFactoryAbstract.java    |   6 +-
 .../application/logging-integtest.properties       |  10 ++
 .../application/DomainAppApplicationModule.java    |   3 +
 .../module-simple/logging-integtest.properties     |   9 ++
 .../domainapp/modules/simple/SimpleModule.java     |   5 +-
 29 files changed, 728 insertions(+), 150 deletions(-)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
 create mode 100644 core/applib/src/main/java/org/apache/isis/schema/utils/jaxbadapters/PersistentEntitiesAdapter.java
 copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/{all/help/HelpFacet.java => actions/action/associateWith/AssociatedWithFacet.java} (76%)
 copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/{objectvalue/fileaccept/FileAcceptFacetAbstract.java => actions/action/associateWith/AssociatedWithFacetAbstract.java} (69%)
 copy core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/{publishing/PublishedActionFacetForActionAnnotationAsConfigured.java => associateWith/AssociatedWithFacetForActionAnnotation.java} (77%)
 rename core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/{ActionParameterDefaultsFacetFromParentedCollection.java => ActionParameterDefaultsFacetFromAssociatedCollection.java} (91%)

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

[isis] 01/02: Merge branch 'maint-1.16.2'

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 e3ecefd11686294dee3c9080a418b9a10bc14f6f
Merge: 4485ce6 bc7253b
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 28 13:28:30 2018 +0000

    Merge branch 'maint-1.16.2'

 ...esentation-layer_ContentNegotiationService.adoc |  10 +-
 .../apache/isis/applib/AppManifestAbstract2.java   |  32 ----
 .../org/apache/isis/applib/IsisApplibModule.java   |  27 +++-
 .../isis/applib/ModuleOrBuilderAbstract.java       |  39 ++++-
 .../isis/applib/domain/DomainObjectList.java       | 176 +++++++++++++++++++++
 .../isis/applib/services/jaxb/JaxbService.java     |  42 +++--
 .../applib/services/jaxb/JaxbServiceDefault.java   |  67 +++++++-
 .../java/org/apache/isis/applib/util/JaxbUtil.java |   8 +-
 .../apache/isis/schema/utils/ChangesDtoUtils.java  |   1 +
 .../jaxbadapters/PersistentEntitiesAdapter.java    |  70 ++++++++
 .../action/ActionAnnotationFacetFactory.java       |  12 +-
 .../action/associateWith/AssociatedWithFacet.java  |  21 +--
 .../associateWith/AssociatedWithFacetAbstract.java |  28 ++--
 .../AssociatedWithFacetForActionAnnotation.java    |  19 +--
 ...onParameterDefaultsAndChoicesPostProcessor.java |  91 +++++++----
 ...eterDefaultsFacetFromAssociatedCollection.java} |   4 +-
 .../services/swagger/internal/Generation.java      |   1 +
 .../core/metamodel/spec/feature/ObjectAction.java  |  15 +-
 .../viewer/restfulobjects/rendering/Responses.java |  15 ++
 .../domainobjects/ActionResultReprRenderer.java    |   7 +
 .../domainobjects/ObjectAndActionInvocation.java   |   9 ++
 ...entNegotiationServiceForRestfulObjectsV1_0.java | 174 ++++++++++++++++++--
 .../server/resources/DomainResourceHelper.java     |   2 +-
 .../ui/components/collection/CollectionPanel.java  |   7 +-
 .../linkandlabel/ActionLinkFactoryAbstract.java    |   6 +-
 .../application/logging-integtest.properties       |  10 ++
 .../application/DomainAppApplicationModule.java    |   3 +
 .../module-simple/logging-integtest.properties     |   9 ++
 .../domainapp/modules/simple/SimpleModule.java     |   5 +-
 29 files changed, 737 insertions(+), 173 deletions(-)

diff --cc core/applib/src/main/java/org/apache/isis/applib/IsisApplibModule.java
index 5ef90ac,20771a0..a98a5ef
--- a/core/applib/src/main/java/org/apache/isis/applib/IsisApplibModule.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/IsisApplibModule.java
@@@ -18,22 -18,85 +18,39 @@@
   */
  package org.apache.isis.applib;
  
- public final class IsisApplibModule {
+ import java.util.List;
 -
+ import javax.xml.bind.annotation.XmlRootElement;
  
-     private IsisApplibModule(){}
+ @XmlRootElement(name = "module")
+ public class IsisApplibModule extends ModuleAbstract {
+ 
+     //region > ui event classes
++    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
+     public abstract static class TitleUiEvent<S>
+             extends org.apache.isis.applib.services.eventbus.TitleUiEvent<S> { }
++    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
+     public abstract static class IconUiEvent<S>
+             extends org.apache.isis.applib.services.eventbus.IconUiEvent<S> { }
++    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
+     public abstract static class CssClassUiEvent<S>
+             extends org.apache.isis.applib.services.eventbus.CssClassUiEvent<S> { }
+     //endregion
+ 
++
+     //region > domain event classes
 -    public abstract static class ActionDomainEvent<S> extends org.apache.isis.applib.services.eventbus.ActionDomainEvent<S> {
 -        public ActionDomainEvent() {}
  
 -        /**
 -         * @deprecated - use the {@link #ActionDomainEvent() no-arg constructor} instead to avoid boilerplate.
 -         */
 -        @Deprecated
 -        public ActionDomainEvent(final S source, final Identifier identifier) {
 -            super(source, identifier);
 -        }
 -        /**
 -         * @deprecated - use the {@link #ActionDomainEvent() no-arg constructor} instead to avoid boilerplate.
 -         */
 -        @Deprecated
 -        public ActionDomainEvent(final S source, final Identifier identifier, final Object... arguments) {
 -            super(source, identifier, arguments);
 -        }
 -        /**
 -         * @deprecated - use the {@link #ActionDomainEvent() no-arg constructor} instead to avoid boilerplate.
 -         */
 -        @Deprecated
 -        public ActionDomainEvent(final S source, final Identifier identifier, final List<Object> arguments) {
 -            super(source, identifier, arguments);
 -        }
 +    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
 +	public abstract static class ActionDomainEvent<S> extends org.apache.isis.applib.services.eventbus.ActionDomainEvent<S> {
-         public ActionDomainEvent() {}
      }
  
 +    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
      public abstract static class CollectionDomainEvent<S,T> extends org.apache.isis.applib.services.eventbus.CollectionDomainEvent<S,T> {
--        public CollectionDomainEvent() { }
 -        /**
 -         * @deprecated - use the {@link #CollectionDomainEvent() no-arg constructor} instead to avoid boilerplate.
 -         */
 -        @Deprecated
 -        public CollectionDomainEvent(final S source, final Identifier identifier, final Of of) {
 -            super(source, identifier, of);
 -        }
 -        /**
 -         * @deprecated - use the {@link #CollectionDomainEvent() no-arg constructor} instead to avoid boilerplate.
 -         */
 -        @Deprecated
 -        public CollectionDomainEvent(final S source, final Identifier identifier, final Of of, final T value) {
 -            super(source, identifier, of, value);
 -        }
      }
  
 +    @SuppressWarnings("serial") // serial versionId to be provided by concrete class
      public abstract static class PropertyDomainEvent<S,T> extends org.apache.isis.applib.services.eventbus.PropertyDomainEvent<S,T> {
--        public PropertyDomainEvent() { }
 -        /**
 -         * @deprecated - use the {@link #PropertyDomainEvent() no-arg constructor} instead to avoid boilerplate.
 -         */
 -        @Deprecated
 -        public PropertyDomainEvent(final S source, final Identifier identifier) {
 -            super(source, identifier);
 -        }
 -        /**
 -         * @deprecated - use the {@link #PropertyDomainEvent() no-arg constructor} instead to avoid boilerplate.
 -         */
 -        @Deprecated
 -        public PropertyDomainEvent(final S source, final Identifier identifier, final T oldValue, final T newValue) {
 -            super(source, identifier, oldValue, newValue);
 -        }
      }
+ 
+     //endregion
+ 
  }
diff --cc core/applib/src/main/java/org/apache/isis/applib/ModuleOrBuilderAbstract.java
index 07e2841,2f9f474..5f905c6
--- a/core/applib/src/main/java/org/apache/isis/applib/ModuleOrBuilderAbstract.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/ModuleOrBuilderAbstract.java
@@@ -25,25 -26,58 +26,61 @@@ import java.util.Set
  
  import javax.xml.bind.annotation.XmlTransient;
  
 -import com.google.common.collect.Lists;
 -import com.google.common.collect.Maps;
+ import com.google.common.collect.Sets;
+ 
 +import org.apache.isis.applib.internal.collections._Lists;
 +import org.apache.isis.applib.internal.collections._Maps;
 +import org.apache.isis.applib.internal.collections._Sets;
 +
  /**
   * Factors out the commonality between {@link AppManifestAbstract.Builder} and {@link ModuleAbstract}.
   *
   * @param <B>
   */
 -abstract class ModuleOrBuilderAbstract<B extends ModuleOrBuilderAbstract> {
 +abstract class ModuleOrBuilderAbstract<B extends ModuleOrBuilderAbstract<B>> {
  
 -    final Set<Class<?>> additionalModules = Sets.newLinkedHashSet();
 -    final Set<Class<?>> additionalServices  = Sets.newLinkedHashSet();
 +    final Set<Class<?>> additionalModules = _Sets.newLinkedHashSet();
 +    final Set<Class<?>> additionalServices  = _Sets.newLinkedHashSet();
  
 -    final Map<String,String> individualConfigProps = Maps.newLinkedHashMap();
 -    final List<PropertyResource> propertyResources = Lists.newArrayList();
 +    final Map<String,String> individualConfigProps = _Maps.newLinkedHashMap();
 +    final List<PropertyResource> propertyResources = _Lists.newArrayList();
  
      ModuleOrBuilderAbstract() {}
-     
+ 
+     public B withAdditionalDependency(final Module dependency) {
+         withTransitiveFrom(dependency);
 -        return (B) this;
++        return self();
+     }
+ 
+     public B withAdditionalDependencies(final Set<Module> dependencies) {
+         for (final Module dependency : dependencies) {
+             withAdditionalDependency(dependency);
+         }
 -        return (B) this;
++        return self();
+     }
+ 
+     public B withAdditionalDependencies(final Module... dependencies) {
+         return withAdditionalDependencies(Sets.newHashSet(dependencies));
+     }
+ 
+     void withTransitiveFrom(final Module module) {
+         withAdditionalModules(asClasses(Module.Util.transitiveDependenciesOf(module)));
+         withAdditionalModules(Module.Util.transitiveAdditionalModulesOf(module));
+         withAdditionalServices(Module.Util.transitiveAdditionalServicesOf(module));
+         withConfigurationPropertyResources(Module.Util.transitivePropertyResourcesOf(module));
+         withConfigurationProperties(Module.Util.transitiveIndividualConfigPropsOf(module));
+     }
+ 
 -    private static Class[] asClasses(final List<Module> dependencies) {
++    @SuppressWarnings("unchecked") //[ahuber] it's safe to assume correct type casting here
++    private static Class<? extends Module>[] asClasses(final List<Module> dependencies) {
+         final List<Class<? extends Module>> list = new ArrayList<>();
+         for (Module dependency : dependencies) {
+             Class<? extends Module> aClass = dependency.getClass();
+             list.add(aClass);
+         }
+         return list.toArray(new Class[] {});
+     }
+ 
      public B withAdditionalModules(final Class<?>... modules) {
          return withAdditionalModules(Arrays.asList(modules));
      }
diff --cc core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
index 5fb3432,f5681b1..6c9e02f
--- 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
@@@ -102,8 -103,9 +102,9 @@@ 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) {
              try {
@@@ -124,17 -117,33 +116,33 @@@
              }
          }
  
+         protected Object internalFromXml(
+                 final JAXBContext jaxbContext,
+                 final String xml,
+                 final Map<String, Object> unmarshallerProperties) throws JAXBException {
+             final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ 
+             for (Map.Entry<String, Object> entry : unmarshallerProperties.entrySet()) {
+                 unmarshaller.setProperty(entry.getKey(), entry.getValue());
+             }
+ 
+             configure(unmarshaller);
+ 
+             return unmarshaller.unmarshal(new StringReader(xml));
+         }
+ 
          @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) {
              final JAXBContext context = jaxbContextFor(domainClass);
 -            return (T) fromXml(context, xml, unmarshallerProperties);
 +            return _Casts.uncheckedCast(fromXml(context, xml, unmarshallerProperties));
          }
  
-         private <T> JAXBContext jaxbContextFor(final Class<T> clazz)  {
+         private static <T> JAXBContext jaxbContextFor(final Class<T> clazz)  {
              try {
                  return JaxbUtil.jaxbContextFor(clazz);
              } catch (RuntimeException e) {
@@@ -151,9 -160,9 +159,8 @@@
          public String toXml(final Object domainObject, final Map<String, Object> marshallerProperties)  {
  
              final Class<?> domainClass = domainObject.getClass();
+             final JAXBContext context = jaxbContextFor(domainObject);
 -
              try {
-                 final JAXBContext context = jaxbContextFor(domainClass);
- 
                  final Marshaller marshaller = context.createMarshaller();
  
                  marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
@@@ -207,6 -216,16 +214,14 @@@
          /**
           * Optional hook
           */
+         protected JAXBContext jaxbContextFor(final Object domainObject) {
+             final Class<?> domainClass = domainObject.getClass();
 -            final JAXBContext context;
 -                context = jaxbContextFor(domainClass);
 -            return context;
++            return jaxbContextFor(domainClass);
+         }
+ 
+         /**
+          * Optional hook
+          */
          protected void configure(final Unmarshaller unmarshaller) {
          }
  
diff --cc core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
index 5cf3018,0000000..49bd59f
mode 100644,000000..100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
@@@ -1,49 -1,0 +1,102 @@@
 +/**
 + *  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.applib.services.jaxb;
 +
++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.NonRecoverableException;
 +import org.apache.isis.applib.annotation.DomainService;
 +import org.apache.isis.applib.annotation.NatureOfService;
- import org.apache.isis.applib.services.jaxb.JaxbService;
++import org.apache.isis.applib.domain.DomainObjectList;
++import org.apache.isis.applib.services.metamodel.MetaModelService;
 +import org.apache.isis.applib.services.registry.ServiceRegistry;
++import org.apache.isis.schema.utils.jaxbadapters.PersistentEntitiesAdapter;
 +import org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter;
 +
 +@DomainService(
 +        nature = NatureOfService.DOMAIN,
 +        menuOrder = "" + Integer.MAX_VALUE
 +)
 +public class JaxbServiceDefault extends JaxbService.Simple {
 +
++    @Override
++    public Object fromXml(final JAXBContext jaxbContext, final String xml, final Map<String, Object> unmarshallerProperties) {
++        try {
++            Object pojo = internalFromXml(jaxbContext, xml, unmarshallerProperties);
++
++            if(pojo instanceof DomainObjectList) {
++
++                // go around the loop again, so can properly deserialize the contents
++                DomainObjectList list = (DomainObjectList) pojo;
++                JAXBContext jaxbContextForList = jaxbContextFor(list);
++                
++                return internalFromXml(jaxbContextForList, xml, unmarshallerProperties);
++            }
++
++            return pojo;
++
++        } catch (final JAXBException ex) {
++            throw new NonRecoverableException("Error unmarshalling XML", ex);
++        }
++    }
++
++    @Override
++    protected JAXBContext jaxbContextFor(final Object domainObject) {
++        final Class<?> domainClass = domainObject.getClass();
++        if(domainObject instanceof DomainObjectList) {
++            DomainObjectList list = (DomainObjectList) domainObject;
++            try {
++                final String elementObjectType = list.getElementObjectType();
++                final Class<?> elementType = metaModelService5.fromObjectType(elementObjectType);
++                return JAXBContext.newInstance(domainClass, elementType);
++            } catch (JAXBException e) {
++                throw new RuntimeException(e);
++            }
++        }
++        return super.jaxbContextFor(domainObject);
++    }
++
++
++    @Override
 +    protected void configure(final Unmarshaller unmarshaller) {
-         final PersistentEntityAdapter adapter = new PersistentEntityAdapter();
-         serviceRegistry.injectServicesInto(adapter);
-         unmarshaller.setAdapter(PersistentEntityAdapter.class, adapter);
++        unmarshaller.setAdapter(PersistentEntityAdapter.class,
++                serviceRegistry.injectServicesInto(new PersistentEntityAdapter()));
++        unmarshaller.setAdapter(PersistentEntitiesAdapter.class,
++                serviceRegistry.injectServicesInto(new PersistentEntitiesAdapter()));
 +    }
 +
++    @Override
 +    protected void configure(final Marshaller marshaller) {
-         final PersistentEntityAdapter adapter = new PersistentEntityAdapter();
-         serviceRegistry.injectServicesInto(adapter);
-         marshaller.setAdapter(PersistentEntityAdapter.class, adapter);
++        marshaller.setAdapter(PersistentEntityAdapter.class,
++                serviceRegistry.injectServicesInto(new PersistentEntityAdapter()));
++        marshaller.setAdapter(PersistentEntitiesAdapter.class,
++                serviceRegistry.injectServicesInto(new PersistentEntitiesAdapter()));
 +    }
 +
++
 +    @javax.inject.Inject
 +    ServiceRegistry serviceRegistry;
++
++    @javax.inject.Inject
++    MetaModelService metaModelService5;
 +}
 +
diff --cc core/applib/src/main/java/org/apache/isis/applib/util/JaxbUtil.java
index 85e2341,e8be77f..f699028
--- 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
@@@ -29,17 -30,16 +29,18 @@@ 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.io.Resources;
 +import org.apache.isis.applib.internal.base._Casts;
 +import org.apache.isis.applib.internal.collections._Maps;
 +import org.apache.isis.applib.internal.resources._Resource;
  
+ 
  /**
 - * 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).
 + * 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).
   *
   * <p>
 - * For example usage, see <a href="https://github.com/isisaddons/isis-module-publishmq">Isis addons' publishmq module</a> (non-ASF)
 + * For example usage, see <a href="https://github.com/isisaddons/isis-module-publishmq">Isis addons' publishmq module</a> 
 + * (non-ASF)
   * </p>
   */
  public class JaxbUtil {
@@@ -75,10 -75,10 +76,9 @@@
      }
  
      public static <T> void toXml(final T dto, final Writer writer) {
--        Marshaller m = null;
          try {
              final Class<?> aClass = dto.getClass();
--            m = jaxbContextFor(aClass).createMarshaller();
++            final Marshaller m = jaxbContextFor(aClass).createMarshaller();
              m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
              m.marshal(dto, writer);
          } catch (JAXBException e) {
@@@ -86,18 -86,18 +86,18 @@@
          }
      }
  
-     private static Map<Class<?>, JAXBContext> jaxbContextByClass = _Maps.newConcurrentHashMap(); 
 -    private static Map<Class<?>, JAXBContext> jaxbContextByClass = new MapMaker().concurrencyLevel(10).makeMap();
++    private static Map<Class<?>, JAXBContext> jaxbContextByClass = _Maps.newConcurrentHashMap();
  
      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 jaxbContextByClass.computeIfAbsent(dtoClass, JaxbUtil::contextOf );
 +    }
-     
++
 +    private static <T> JAXBContext contextOf(final Class<T> dtoClass) {
 +    	try {
 +            return JAXBContext.newInstance(dtoClass);
 +        } catch (JAXBException e) {
 +            throw new RuntimeException(e);
          }
 -        return jaxbContext;
      }
 +    
  }
diff --cc core/applib/src/main/java/org/apache/isis/schema/utils/ChangesDtoUtils.java
index 5aee28f,575ca9d..7dbcb4f
--- 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
@@@ -31,7 -32,8 +31,8 @@@ import javax.xml.bind.JAXBException
  import javax.xml.bind.Marshaller;
  import javax.xml.bind.Unmarshaller;
  
 -import com.google.common.io.Resources;
 +import org.apache.isis.applib.internal.resources._Resource;
+ 
  import org.apache.isis.applib.util.JaxbUtil;
  import org.apache.isis.schema.chg.v1.ChangesDto;
  
diff --cc core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 6c21f1c,b26586d..053eaf8
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@@ -25,9 -24,22 +25,8 @@@ import java.util.List
  import com.google.common.base.Strings;
  
  import org.apache.isis.applib.annotation.Action;
 -import org.apache.isis.applib.annotation.ActionInteraction;
 -import org.apache.isis.applib.annotation.ActionSemantics;
 -import org.apache.isis.applib.annotation.Bulk;
 -import org.apache.isis.applib.annotation.Command;
 -import org.apache.isis.applib.annotation.Disabled;
 -import org.apache.isis.applib.annotation.Hidden;
 -import org.apache.isis.applib.annotation.Idempotent;
 -import org.apache.isis.applib.annotation.PostsActionInvokedEvent;
 -import org.apache.isis.applib.annotation.Prototype;
 -import org.apache.isis.applib.annotation.PublishedAction;
 -import org.apache.isis.applib.annotation.QueryOnly;
 -import org.apache.isis.applib.annotation.TypeOf;
  import org.apache.isis.applib.services.HasTransactionId;
  import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 -import org.apache.isis.applib.services.eventbus.ActionInvokedEvent;
--import org.apache.isis.core.commons.config.IsisConfiguration;
  import org.apache.isis.core.metamodel.facetapi.FacetHolder;
  import org.apache.isis.core.metamodel.facetapi.FacetUtil;
  import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@@ -35,10 -48,15 +34,11 @@@ import org.apache.isis.core.metamodel.f
  import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
  import org.apache.isis.core.metamodel.facets.FacetedMethod;
  import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+ import org.apache.isis.core.metamodel.facets.actions.action.associateWith.AssociatedWithFacetForActionAnnotation;
  import org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation;
 -import org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForBulkAnnotation;
  import org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetObjectOnly;
  import org.apache.isis.core.metamodel.facets.actions.action.command.CommandFacetForActionAnnotation;
 -import org.apache.isis.core.metamodel.facets.actions.action.command.CommandFacetForCommandAnnotation;
 -import org.apache.isis.core.metamodel.facets.actions.action.disabled.DisabledFacetForDisabledAnnotationOnAction;
  import org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation;
 -import org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForHiddenAnnotationOnAction;
  import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetAbstract;
  import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault;
  import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation;
@@@ -55,15 -83,30 +55,12 @@@ import org.apache.isis.core.metamodel.f
  import org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionFacet;
  import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
  import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
- import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 -import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
  import org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetForActionAnnotation;
--import org.apache.isis.core.metamodel.services.ServicesInjector;
  import org.apache.isis.core.metamodel.spec.ObjectSpecification;
  import org.apache.isis.core.metamodel.specloader.CollectionUtils;
--import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
 -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
  import org.apache.isis.core.metamodel.util.EventUtil;
  
 -public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
 -            implements MetaModelValidatorRefiner {
 -
 -    private final MetaModelValidatorForDeprecatedAnnotation actionSemanticsValidator = new MetaModelValidatorForDeprecatedAnnotation(ActionSemantics.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation actionInteractionValidator = new MetaModelValidatorForDeprecatedAnnotation(ActionInteraction.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation postsActionInvokedEventValidator = new MetaModelValidatorForDeprecatedAnnotation(PostsActionInvokedEvent.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation bulkValidator = new MetaModelValidatorForDeprecatedAnnotation(Bulk.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation commandValidator = new MetaModelValidatorForDeprecatedAnnotation(Command.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation queryOnlyValidator = new MetaModelValidatorForDeprecatedAnnotation(QueryOnly.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation idempotentValidator = new MetaModelValidatorForDeprecatedAnnotation(Idempotent.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation publishedActionValidator = new MetaModelValidatorForDeprecatedAnnotation(PublishedAction.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation typeOfValidator = new MetaModelValidatorForDeprecatedAnnotation(TypeOf.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation hiddenValidator = new MetaModelValidatorForDeprecatedAnnotation(Hidden.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation disabledValidator = new MetaModelValidatorForDeprecatedAnnotation(Disabled.class);
 -    private final MetaModelValidatorForDeprecatedAnnotation prototypeValidator = new MetaModelValidatorForDeprecatedAnnotation(Prototype.class);
 +public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
  
  
  
diff --cc core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
index d9518d0,7a39344..42f6190
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionCollectionParameterDefaultsAndChoicesPostProcessor.java
@@@ -62,17 -62,13 +62,14 @@@ public class ActionCollectionParameterD
  
          // all the actions of this type
          final List<ActionType> actionTypes = inferActionTypes();
 -        List<ObjectAction> objectActions = objectSpecification.getObjectActions(actionTypes, Contributed.INCLUDED, Filters.<ObjectAction>any());
 +        List<ObjectAction> objectActions = objectSpecification.getObjectActions(actionTypes, Contributed.INCLUDED,
 +                Predicates.alwaysTrue());
  
          // and all the collections of this type
-         final List<OneToManyAssociation> oneToManyAssociations =
-                 objectSpecification.getCollections(Contributed.INCLUDED);
+         final List<OneToManyAssociation> collections = objectSpecification.getCollections(Contributed.INCLUDED);
  
          // for each collection, ...
-         for (final OneToManyAssociation otma : oneToManyAssociations) {
- 
-             final String collectionId = otma.getId();
+         for (final OneToManyAssociation collection : collections) {
  
              // ... see if any of its actions has a collection parameter of the same type
              //
diff --cc core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index 22e1d14,82d6de2..7e8212c
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@@ -20,10 -20,9 +20,8 @@@ package org.apache.isis.core.metamodel.
  import java.util.Collections;
  import java.util.Comparator;
  import java.util.List;
 -
 -import javax.annotation.Nullable;
 +import java.util.stream.Collectors;
  
- import javax.annotation.Nullable;
- 
  import com.google.common.base.Objects;
  import com.google.common.base.Predicate;
  import com.google.common.base.Strings;
@@@ -44,6 -44,9 +42,7 @@@ import org.apache.isis.core.metamodel.a
  import org.apache.isis.core.metamodel.consent.Consent;
  import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
  import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 -import org.apache.isis.core.metamodel.facetapi.Facet;
 -import org.apache.isis.core.metamodel.facetapi.FacetFilters;
+ import org.apache.isis.core.metamodel.facets.actions.action.associateWith.AssociatedWithFacet;
  import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
  import org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet;
  import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet;
@@@ -429,7 -468,7 +428,7 @@@ public interface ObjectAction extends O
              }
  
              @Override
--            public boolean apply(@Nullable final ObjectAction objectAction) {
++            public boolean apply(final ObjectAction objectAction) {
                  return FluentIterable
                          .from(objectAction.getParameters())
                          .anyMatch(parameterPredicate);

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

[isis] 02/02: Merge remote-tracking branch 'origin/master'

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 476820308908676c1cd3503dcc87f8fe2e037a81
Merge: e3ecefd 575a23f
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 28 13:29:54 2018 +0000

    Merge remote-tracking branch 'origin/master'

 .../apache/isis/applib/fixtures/CompositeFixture.java    |  0
 core/pom.xml                                             | 16 ++++++++++++++++
 core/runtime-legacy/.gitignore                           |  1 +
 core/{runtime => runtime-legacy}/pom.xml                 | 16 ++++++++--------
 .../core/runtime/fixtures/SwitchUserServiceImpl.java     |  0
 core/runtime/pom.xml                                     | 11 -----------
 core/viewer-wicket-ui/pom.xml                            |  2 +-
 7 files changed, 26 insertions(+), 20 deletions(-)

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