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 2014/12/29 19:23:52 UTC

isis git commit: ISIS-970: started on the facet factories for @Collection and @Action.

Repository: isis
Updated Branches:
  refs/heads/ISIS-970 4e706794f -> 06c8199a3


ISIS-970: started on the facet factories for @Collection and @Action.

Also renamed XxxFactory -> XxxAnnotationFacetFactory for Xxx=DomainObject,Property,Parameter.


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

Branch: refs/heads/ISIS-970
Commit: 06c8199a31bc04dc39d50f19a0e0118965ae3808
Parents: 4e70679
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Dec 29 18:23:46 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Dec 29 18:23:46 2014 +0000

----------------------------------------------------------------------
 .../action/ActionAnnotationFacetFactory.java    |  65 ++++++++
 .../CollectionAnnotationFacetFactory.java       |  75 +++++++++
 .../collection/CollectionFacetFactory.java      |  89 -----------
 .../collections/collection/JavaArrayFacet.java  |  95 -----------
 .../collection/JavaCollectionFacet.java         |  85 ----------
 .../CollectionFacetFactory.java                 |  89 +++++++++++
 .../javautilcollection/JavaArrayFacet.java      |  95 +++++++++++
 .../javautilcollection/JavaCollectionFacet.java |  85 ++++++++++
 .../ParentedFacetSinceCollectionFactory.java    |   2 +-
 .../DomainObjectAnnotationFacetFactory.java     | 158 +++++++++++++++++++
 .../domainobject/DomainObjectFactory.java       | 158 -------------------
 .../ParameterAnnotationFacetFactory.java        |  94 +++++++++++
 .../param/parameter/ParameterFactory.java       |  94 -----------
 .../PropertyAnnotationFacetFactory.java         | 125 +++++++++++++++
 .../properties/property/PropertyFactory.java    | 125 ---------------
 .../dflt/ProgrammingModelFacetsJava5.java       |   2 +-
 .../collections/JavaCollectionFacetTest.java    |   2 +-
 17 files changed, 789 insertions(+), 649 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git 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
new file mode 100644
index 0000000..0cd3927
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -0,0 +1,65 @@
+/*
+ *  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.core.metamodel.facets.actions.action;
+
+import java.lang.reflect.Method;
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+
+public class ActionAnnotationFacetFactory extends FacetFactoryAbstract implements ServicesInjectorAware {
+
+    private ServicesInjector servicesInjector;
+
+    public ActionAnnotationFacetFactory() {
+        super(FeatureType.ACTIONS_ONLY);
+    }
+
+    @Override
+    public void process(final ProcessMethodContext processMethodContext) {
+
+        final Method method = processMethodContext.getMethod();
+        final Action action = Annotations.getAnnotation(method, Action.class);
+        if (action == null) {
+            return;
+        }
+
+//        processInteraction(processMethodContext);
+    }
+
+//    private void processInteraction(final ProcessMethodContext processMethodContext) {
+//        final Method method = processMethodContext.getMethod();
+//        final Property property = Annotations.getAnnotation(method, Property.class);
+//        final FacetHolder holder = processMethodContext.getFacetHolder();
+//
+//        FacetUtil.addFacet(
+//                PropertyInteractionFacetForPropertyAnnotation.create(
+//                        property, servicesInjector, getSpecificationLoader(), holder));
+//    }
+
+
+    @Override
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
new file mode 100644
index 0000000..c9ef42b
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
@@ -0,0 +1,75 @@
+/*
+ *  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.core.metamodel.facets.collections.collection;
+
+import java.lang.reflect.Method;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+
+public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract implements ServicesInjectorAware {
+
+    private ServicesInjector servicesInjector;
+
+    public CollectionAnnotationFacetFactory() {
+        super(FeatureType.COLLECTIONS_ONLY);
+    }
+
+    @Override
+    public void process(final ProcessMethodContext processMethodContext) {
+
+        final Method method = processMethodContext.getMethod();
+        final Collection collection = Annotations.getAnnotation(method, Collection.class);
+        if (collection == null) {
+            return;
+        }
+
+//        processInteraction(processMethodContext);
+//        processDisabled(processMethodContext);
+    }
+
+//    private void processInteraction(final ProcessMethodContext processMethodContext) {
+//        final Method method = processMethodContext.getMethod();
+//        final Property property = Annotations.getAnnotation(method, Property.class);
+//        final FacetHolder holder = processMethodContext.getFacetHolder();
+//
+//        FacetUtil.addFacet(
+//                PropertyInteractionFacetForPropertyAnnotation.create(
+//                        property, servicesInjector, getSpecificationLoader(), holder));
+//    }
+//
+//    private void processDisabled(final ProcessMethodContext processMethodContext) {
+//        final Method method = processMethodContext.getMethod();
+//        final Property property = Annotations.getAnnotation(method, Property.class);
+//        final FacetHolder holder = processMethodContext.getFacetHolder();
+//
+//        FacetUtil.addFacet(
+//                DisabledFacetForPropertyAnnotation.create(property, holder));
+//    }
+
+
+    @Override
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java
deleted file mode 100644
index 0891063..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionFacetFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.collections.collection;
-
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultToObject;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-
-public class CollectionFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware {
-
-    private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
-    private AdapterManager adapterManager;
-
-    public CollectionFacetFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessClassContext processClassContaxt) {
-
-        if (collectionTypeRegistry.isCollectionType(processClassContaxt.getCls())) {
-            processCollectionType(processClassContaxt);
-        } else if (collectionTypeRegistry.isArrayType(processClassContaxt.getCls())) {
-            processAsArrayType(processClassContaxt);
-        }
-
-    }
-
-    private void processCollectionType(final ProcessClassContext processClassContext) {
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-        final TypeOfFacet typeOfFacet = facetHolder.getFacet(TypeOfFacet.class);
-        if (typeOfFacet == null) {
-            final Class<?> collectionElementType = collectionElementType(processClassContext.getCls());
-            facetHolder.addFacet(collectionElementType != Object.class ? new TypeOfFacetInferredFromGenerics(collectionElementType, facetHolder, getSpecificationLoader()) : new TypeOfFacetDefaultToObject(facetHolder, getSpecificationLoader()));
-        } else {
-            // nothing
-        }
-        facetHolder.addFacet(new JavaCollectionFacet(facetHolder, getAdapterManager()));
-        return;
-    }
-
-    private void processAsArrayType(final ProcessClassContext processClassContaxt) {
-        final FacetHolder facetHolder = processClassContaxt.getFacetHolder();
-        facetHolder.addFacet(new JavaArrayFacet(facetHolder, getAdapterManager()));
-        facetHolder.addFacet(new TypeOfFacetInferredFromArray(processClassContaxt.getCls().getComponentType(), facetHolder, getSpecificationLoader()));
-    }
-
-    private Class<?> collectionElementType(final Class<?> cls) {
-        return Object.class;
-    }
-
-    // //////////////////////////////////////////////////////////////
-    // Dependencies (injected)
-    // //////////////////////////////////////////////////////////////
-
-    public AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-
-    @Override
-    public void setAdapterManager(final AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/JavaArrayFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/JavaArrayFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/JavaArrayFacet.java
deleted file mode 100644
index a7b71d2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/JavaArrayFacet.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.collections.collection;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.collections.CollectionFacetAbstract;
-
-public class JavaArrayFacet extends CollectionFacetAbstract {
-
-    private final AdapterManager adapterManager;
-
-    public JavaArrayFacet(final FacetHolder holder, final AdapterManager adapterManager) {
-        super(holder);
-        this.adapterManager = adapterManager;
-    }
-
-    /**
-     * Expected to be called with a {@link ObjectAdapter} wrapping an array.
-     */
-    @Override
-    public void init(final ObjectAdapter collectionAdapter, final ObjectAdapter[] initData) {
-        final int length = initData.length;
-        final Object[] array = new Object[length];
-        for (int i = 0; i < length; i++) {
-            array[i] = initData[i].getObject();
-        }
-        collectionAdapter.replacePojo(array);
-    }
-
-    /**
-     * Expected to be called with a {@link ObjectAdapter} wrapping an array.
-     */
-    @Override
-    public Collection<ObjectAdapter> collection(final ObjectAdapter collectionAdapter) {
-        final Object[] array = array(collectionAdapter);
-        final ArrayList<ObjectAdapter> objectCollection = new ArrayList<ObjectAdapter>(array.length);
-        for (final Object element2 : array) {
-            final ObjectAdapter element = getAdapterManager().getAdapterFor(element2);
-            objectCollection.add(element);
-        }
-        return objectCollection;
-    }
-
-    /**
-     * Expected to be called with a {@link ObjectAdapter} wrapping an array.
-     */
-    @Override
-    public ObjectAdapter firstElement(final ObjectAdapter collectionAdapter) {
-        final Object[] array = array(collectionAdapter);
-        return array.length > 0 ? getAdapterManager().getAdapterFor(array[0]) : null;
-    }
-
-    /**
-     * Expected to be called with a {@link ObjectAdapter} wrapping an array.
-     */
-    @Override
-    public int size(final ObjectAdapter collectionAdapter) {
-        return array(collectionAdapter).length;
-    }
-
-    private Object[] array(final ObjectAdapter collectionAdapter) {
-        return (Object[]) collectionAdapter.getObject();
-    }
-
-    // /////////////////////////////////////////////////////
-    // Dependencies (from constructor)
-    // /////////////////////////////////////////////////////
-
-    private AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/JavaCollectionFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/JavaCollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/JavaCollectionFacet.java
deleted file mode 100644
index a02beb1..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/JavaCollectionFacet.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.collections.collection;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import com.google.common.collect.Collections2;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.collections.CollectionFacetAbstract;
-
-public class JavaCollectionFacet extends CollectionFacetAbstract {
-
-    private final AdapterManager adapterManager;
-
-    public JavaCollectionFacet(final FacetHolder holder, final AdapterManager adapterManager) {
-        super(holder);
-        this.adapterManager = adapterManager;
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public Collection<ObjectAdapter> collection(final ObjectAdapter wrappedCollection) {
-        final Collection<?> collectionOfUnderlying = collectionOfUnderlying(wrappedCollection);
-        return Collections2.transform(collectionOfUnderlying, ObjectAdapter.Functions.adapterForUsing(getAdapterManager()));
-    }
-
-    @Override
-    public ObjectAdapter firstElement(final ObjectAdapter collection) {
-        final Iterator<ObjectAdapter> iterator = iterator(collection);
-        return iterator.hasNext() ? iterator.next() : null;
-    }
-
-    @Override
-    public int size(final ObjectAdapter collection) {
-        return collectionOfUnderlying(collection).size();
-    }
-
-    @Override
-    public void init(final ObjectAdapter collection, final ObjectAdapter[] initData) {
-        final Collection<? super Object> javaCollection = collectionOfUnderlying(collection);
-        javaCollection.clear();
-        for (final ObjectAdapter element : initData) {
-            final Object pojo = element.getObject();
-            javaCollection.add(pojo);
-        }
-    }
-
-    /**
-     * The underlying collection of objects (not {@link ObjectAdapter}s).
-     */
-    @SuppressWarnings("unchecked")
-    private Collection<? super Object> collectionOfUnderlying(final ObjectAdapter wrappedCollection) {
-        return (Collection<? super Object>) wrappedCollection.getObject();
-    }
-
-    // //////////////////////////////////////////////////////////////////////
-    // Dependencies (from constructor)
-    // //////////////////////////////////////////////////////////////////////
-
-    private AdapterManager getAdapterManager() {
-        return adapterManager;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
new file mode 100644
index 0000000..ae324a5
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/CollectionFacetFactory.java
@@ -0,0 +1,89 @@
+/*
+ *  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.core.metamodel.facets.collections.javautilcollection;
+
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultToObject;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
+import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
+
+public class CollectionFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware {
+
+    private final CollectionTypeRegistry collectionTypeRegistry = new CollectionTypeRegistry();
+    private AdapterManager adapterManager;
+
+    public CollectionFacetFactory() {
+        super(FeatureType.OBJECTS_ONLY);
+    }
+
+    @Override
+    public void process(final ProcessClassContext processClassContaxt) {
+
+        if (collectionTypeRegistry.isCollectionType(processClassContaxt.getCls())) {
+            processCollectionType(processClassContaxt);
+        } else if (collectionTypeRegistry.isArrayType(processClassContaxt.getCls())) {
+            processAsArrayType(processClassContaxt);
+        }
+
+    }
+
+    private void processCollectionType(final ProcessClassContext processClassContext) {
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+        final TypeOfFacet typeOfFacet = facetHolder.getFacet(TypeOfFacet.class);
+        if (typeOfFacet == null) {
+            final Class<?> collectionElementType = collectionElementType(processClassContext.getCls());
+            facetHolder.addFacet(collectionElementType != Object.class ? new TypeOfFacetInferredFromGenerics(collectionElementType, facetHolder, getSpecificationLoader()) : new TypeOfFacetDefaultToObject(facetHolder, getSpecificationLoader()));
+        } else {
+            // nothing
+        }
+        facetHolder.addFacet(new JavaCollectionFacet(facetHolder, getAdapterManager()));
+        return;
+    }
+
+    private void processAsArrayType(final ProcessClassContext processClassContaxt) {
+        final FacetHolder facetHolder = processClassContaxt.getFacetHolder();
+        facetHolder.addFacet(new JavaArrayFacet(facetHolder, getAdapterManager()));
+        facetHolder.addFacet(new TypeOfFacetInferredFromArray(processClassContaxt.getCls().getComponentType(), facetHolder, getSpecificationLoader()));
+    }
+
+    private Class<?> collectionElementType(final Class<?> cls) {
+        return Object.class;
+    }
+
+    // //////////////////////////////////////////////////////////////
+    // Dependencies (injected)
+    // //////////////////////////////////////////////////////////////
+
+    public AdapterManager getAdapterManager() {
+        return adapterManager;
+    }
+
+    @Override
+    public void setAdapterManager(final AdapterManager adapterManager) {
+        this.adapterManager = adapterManager;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
new file mode 100644
index 0000000..a13a8c2
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaArrayFacet.java
@@ -0,0 +1,95 @@
+/*
+ *  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.core.metamodel.facets.collections.javautilcollection;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.collections.CollectionFacetAbstract;
+
+public class JavaArrayFacet extends CollectionFacetAbstract {
+
+    private final AdapterManager adapterManager;
+
+    public JavaArrayFacet(final FacetHolder holder, final AdapterManager adapterManager) {
+        super(holder);
+        this.adapterManager = adapterManager;
+    }
+
+    /**
+     * Expected to be called with a {@link ObjectAdapter} wrapping an array.
+     */
+    @Override
+    public void init(final ObjectAdapter collectionAdapter, final ObjectAdapter[] initData) {
+        final int length = initData.length;
+        final Object[] array = new Object[length];
+        for (int i = 0; i < length; i++) {
+            array[i] = initData[i].getObject();
+        }
+        collectionAdapter.replacePojo(array);
+    }
+
+    /**
+     * Expected to be called with a {@link ObjectAdapter} wrapping an array.
+     */
+    @Override
+    public Collection<ObjectAdapter> collection(final ObjectAdapter collectionAdapter) {
+        final Object[] array = array(collectionAdapter);
+        final ArrayList<ObjectAdapter> objectCollection = new ArrayList<ObjectAdapter>(array.length);
+        for (final Object element2 : array) {
+            final ObjectAdapter element = getAdapterManager().getAdapterFor(element2);
+            objectCollection.add(element);
+        }
+        return objectCollection;
+    }
+
+    /**
+     * Expected to be called with a {@link ObjectAdapter} wrapping an array.
+     */
+    @Override
+    public ObjectAdapter firstElement(final ObjectAdapter collectionAdapter) {
+        final Object[] array = array(collectionAdapter);
+        return array.length > 0 ? getAdapterManager().getAdapterFor(array[0]) : null;
+    }
+
+    /**
+     * Expected to be called with a {@link ObjectAdapter} wrapping an array.
+     */
+    @Override
+    public int size(final ObjectAdapter collectionAdapter) {
+        return array(collectionAdapter).length;
+    }
+
+    private Object[] array(final ObjectAdapter collectionAdapter) {
+        return (Object[]) collectionAdapter.getObject();
+    }
+
+    // /////////////////////////////////////////////////////
+    // Dependencies (from constructor)
+    // /////////////////////////////////////////////////////
+
+    private AdapterManager getAdapterManager() {
+        return adapterManager;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
new file mode 100644
index 0000000..c07b387
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/javautilcollection/JavaCollectionFacet.java
@@ -0,0 +1,85 @@
+/*
+ *  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.core.metamodel.facets.collections.javautilcollection;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import com.google.common.collect.Collections2;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.collections.CollectionFacetAbstract;
+
+public class JavaCollectionFacet extends CollectionFacetAbstract {
+
+    private final AdapterManager adapterManager;
+
+    public JavaCollectionFacet(final FacetHolder holder, final AdapterManager adapterManager) {
+        super(holder);
+        this.adapterManager = adapterManager;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public Collection<ObjectAdapter> collection(final ObjectAdapter wrappedCollection) {
+        final Collection<?> collectionOfUnderlying = collectionOfUnderlying(wrappedCollection);
+        return Collections2.transform(collectionOfUnderlying, ObjectAdapter.Functions.adapterForUsing(getAdapterManager()));
+    }
+
+    @Override
+    public ObjectAdapter firstElement(final ObjectAdapter collection) {
+        final Iterator<ObjectAdapter> iterator = iterator(collection);
+        return iterator.hasNext() ? iterator.next() : null;
+    }
+
+    @Override
+    public int size(final ObjectAdapter collection) {
+        return collectionOfUnderlying(collection).size();
+    }
+
+    @Override
+    public void init(final ObjectAdapter collection, final ObjectAdapter[] initData) {
+        final Collection<? super Object> javaCollection = collectionOfUnderlying(collection);
+        javaCollection.clear();
+        for (final ObjectAdapter element : initData) {
+            final Object pojo = element.getObject();
+            javaCollection.add(pojo);
+        }
+    }
+
+    /**
+     * The underlying collection of objects (not {@link ObjectAdapter}s).
+     */
+    @SuppressWarnings("unchecked")
+    private Collection<? super Object> collectionOfUnderlying(final ObjectAdapter wrappedCollection) {
+        return (Collection<? super Object>) wrappedCollection.getObject();
+    }
+
+    // //////////////////////////////////////////////////////////////////////
+    // Dependencies (from constructor)
+    // //////////////////////////////////////////////////////////////////////
+
+    private AdapterManager getAdapterManager() {
+        return adapterManager;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/parented/ParentedFacetSinceCollectionFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/parented/ParentedFacetSinceCollectionFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/parented/ParentedFacetSinceCollectionFactory.java
index 2097222..e7032aa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/parented/ParentedFacetSinceCollectionFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/parented/ParentedFacetSinceCollectionFactory.java
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.parented.ParentedFacet;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
-import org.apache.isis.core.metamodel.facets.collections.collection.CollectionFacetFactory;
+import org.apache.isis.core.metamodel.facets.collections.javautilcollection.CollectionFacetFactory;
 
 /**
  * All {@link CollectionTypeRegistry collection types} are intrinsically

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
new file mode 100644
index 0000000..942eacf
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -0,0 +1,158 @@
+/*
+ *  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.core.metamodel.facets.object.domainobject;
+
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.services.HasTransactionId;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitterAware;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+
+
+public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract implements IsisConfigurationAware, AdapterManagerAware, ServicesInjectorAware, SpecificationLoaderAware, QuerySubmitterAware {
+
+    private IsisConfiguration configuration;
+    private AdapterManager adapterManager;
+    private ServicesInjector servicesInjector;
+    private QuerySubmitter querySubmitter;
+
+    public DomainObjectAnnotationFacetFactory() {
+        super(FeatureType.OBJECTS_ONLY);
+    }
+
+    @Override
+    public void process(ProcessClassContext processClassContext) {
+
+        final Class<?> cls = processClassContext.getCls();
+        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        if(domainObject == null) {
+            return;
+        }
+
+        processAuditing(processClassContext);
+        processPublishing(processClassContext);
+        processAutoComplete(processClassContext);
+        processBounded(processClassContext);
+        processEditing(processClassContext);
+        processObjectType(processClassContext);
+        processViewModel(processClassContext);
+    }
+
+    private void processAuditing(ProcessClassContext processClassContext) {
+        final Class<?> cls = processClassContext.getCls();
+        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+        //
+        // this rule originally implemented only in AuditableFacetFromConfigurationFactory
+        // but think should apply in general
+        //
+        if(HasTransactionId.class.isAssignableFrom(cls)) {
+            // do not install on any implementation of HasTransactionId
+            // (ie commands, audit entries, published events).
+            return;
+        }
+
+        FacetUtil.addFacet(AuditableFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
+    }
+
+
+    private void processPublishing(ProcessClassContext processClassContext) {
+        final Class<?> cls = processClassContext.getCls();
+        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+        FacetUtil.addFacet(PublishedObjectFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
+    }
+
+    private void processAutoComplete(final ProcessClassContext processClassContext) {
+        final Class<?> cls = processClassContext.getCls();
+        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+        FacetUtil.addFacet(AutoCompleteFacetForDomainObjectAnnotation.create(domainObject, getSpecificationLoader(), adapterManager, servicesInjector, facetHolder));
+    }
+
+    private void processBounded(final ProcessClassContext processClassContext) {
+        final Class<?> cls = processClassContext.getCls();
+        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+        FacetUtil.addFacet(ChoicesFacetForDomainObjectAnnotation.create(domainObject, querySubmitter, facetHolder));
+    }
+
+    private void processEditing(final ProcessClassContext processClassContext) {
+        final Class<?> cls = processClassContext.getCls();
+        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+        FacetUtil.addFacet(ImmutableFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
+    }
+
+    private void processObjectType(final ProcessClassContext processClassContext) {
+        final Class<?> cls = processClassContext.getCls();
+        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+        FacetUtil.addFacet(ObjectSpecIdFacetForDomainObjectAnnotation.create(domainObject, facetHolder));
+    }
+
+    private void processViewModel(final ProcessClassContext processClassContext) {
+        final Class<?> cls = processClassContext.getCls();
+        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        final FacetHolder facetHolder = processClassContext.getFacetHolder();
+
+        FacetUtil.addFacet(ViewModelFacetForDomainObjectAnnotation.create(domainObject, getSpecificationLoader(), adapterManager, servicesInjector, facetHolder));
+    }
+
+
+    @Override
+    public void setConfiguration(IsisConfiguration configuration) {
+        this.configuration = configuration;
+    }
+
+
+    @Override
+    public void setAdapterManager(AdapterManager adapterManager) {
+        this.adapterManager = adapterManager;
+    }
+
+    @Override
+    public void setServicesInjector(ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
+    }
+
+    @Override
+    public void setQuerySubmitter(final QuerySubmitter querySubmitter) {
+        this.querySubmitter = querySubmitter;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectFactory.java
deleted file mode 100644
index dce89b7..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectFactory.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.domainobject;
-
-
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.services.HasTransactionId;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationAware;
-import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
-import org.apache.isis.core.metamodel.adapter.QuerySubmitterAware;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.Annotations;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
-
-
-public class DomainObjectFactory extends FacetFactoryAbstract implements IsisConfigurationAware, AdapterManagerAware, ServicesInjectorAware, SpecificationLoaderAware, QuerySubmitterAware {
-
-    private IsisConfiguration configuration;
-    private AdapterManager adapterManager;
-    private ServicesInjector servicesInjector;
-    private QuerySubmitter querySubmitter;
-
-    public DomainObjectFactory() {
-        super(FeatureType.OBJECTS_ONLY);
-    }
-
-    @Override
-    public void process(ProcessClassContext processClassContext) {
-
-        final Class<?> cls = processClassContext.getCls();
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
-        if(domainObject == null) {
-            return;
-        }
-
-        processAuditing(processClassContext);
-        processPublishing(processClassContext);
-        processAutoComplete(processClassContext);
-        processBounded(processClassContext);
-        processEditing(processClassContext);
-        processObjectType(processClassContext);
-        processViewModel(processClassContext);
-    }
-
-    private void processAuditing(ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        //
-        // this rule originally implemented only in AuditableFacetFromConfigurationFactory
-        // but think should apply in general
-        //
-        if(HasTransactionId.class.isAssignableFrom(cls)) {
-            // do not install on any implementation of HasTransactionId
-            // (ie commands, audit entries, published events).
-            return;
-        }
-
-        FacetUtil.addFacet(AuditableFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
-    }
-
-
-    private void processPublishing(ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        FacetUtil.addFacet(PublishedObjectFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
-    }
-
-    private void processAutoComplete(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        FacetUtil.addFacet(AutoCompleteFacetForDomainObjectAnnotation.create(domainObject, getSpecificationLoader(), adapterManager, servicesInjector, facetHolder));
-    }
-
-    private void processBounded(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        FacetUtil.addFacet(ChoicesFacetForDomainObjectAnnotation.create(domainObject, querySubmitter, facetHolder));
-    }
-
-    private void processEditing(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        FacetUtil.addFacet(ImmutableFacetForDomainObjectAnnotation.create(domainObject, configuration, facetHolder));
-    }
-
-    private void processObjectType(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        FacetUtil.addFacet(ObjectSpecIdFacetForDomainObjectAnnotation.create(domainObject, facetHolder));
-    }
-
-    private void processViewModel(final ProcessClassContext processClassContext) {
-        final Class<?> cls = processClassContext.getCls();
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
-        final FacetHolder facetHolder = processClassContext.getFacetHolder();
-
-        FacetUtil.addFacet(ViewModelFacetForDomainObjectAnnotation.create(domainObject, getSpecificationLoader(), adapterManager, servicesInjector, facetHolder));
-    }
-
-
-    @Override
-    public void setConfiguration(IsisConfiguration configuration) {
-        this.configuration = configuration;
-    }
-
-
-    @Override
-    public void setAdapterManager(AdapterManager adapterManager) {
-        this.adapterManager = adapterManager;
-    }
-
-    @Override
-    public void setServicesInjector(ServicesInjector servicesInjector) {
-        this.servicesInjector = servicesInjector;
-    }
-
-    @Override
-    public void setQuerySubmitter(final QuerySubmitter querySubmitter) {
-        this.querySubmitter = querySubmitter;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
new file mode 100644
index 0000000..41c64b8
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java
@@ -0,0 +1,94 @@
+/*
+ *  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.core.metamodel.facets.param.parameter;
+
+import java.lang.reflect.Method;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+
+public class ParameterAnnotationFacetFactory extends FacetFactoryAbstract implements ServicesInjectorAware {
+
+    private ServicesInjector servicesInjector;
+
+    public ParameterAnnotationFacetFactory() {
+        super(FeatureType.PARAMETERS_ONLY);
+    }
+
+    @Override
+    public void process(final ProcessMethodContext processMethodContext) {
+
+        final Method method = processMethodContext.getMethod();
+        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
+        if (parameter == null) {
+            return;
+        }
+
+        processMaxLength(processMethodContext);
+        processMustSatisfy(processMethodContext);
+        processOptional(processMethodContext);
+        processRegEx(processMethodContext);
+    }
+
+    private void processMaxLength(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(
+                MaxLengthFacetForParameterAnnotation.create(parameter, holder));
+    }
+
+    private void processMustSatisfy(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(
+                MustSatisfySpecificationFacetForParameterAnnotation.create(parameter, holder));
+    }
+
+    private void processOptional(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(MandatoryFacetForParameterAnnotation.create(parameter, method, holder));
+    }
+
+    private void processRegEx(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(RegExFacetForParameterAnnotation.create(parameter, holder));
+    }
+
+
+    @Override
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterFactory.java
deleted file mode 100644
index bfc6bfa..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterFactory.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.param.parameter;
-
-import java.lang.reflect.Method;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.Annotations;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
-
-public class ParameterFactory extends FacetFactoryAbstract implements ServicesInjectorAware {
-
-    private ServicesInjector servicesInjector;
-
-    public ParameterFactory() {
-        super(FeatureType.PARAMETERS_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessMethodContext processMethodContext) {
-
-        final Method method = processMethodContext.getMethod();
-        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
-        if (parameter == null) {
-            return;
-        }
-
-        processMaxLength(processMethodContext);
-        processMustSatisfy(processMethodContext);
-        processOptional(processMethodContext);
-        processRegEx(processMethodContext);
-    }
-
-    private void processMaxLength(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(
-                MaxLengthFacetForParameterAnnotation.create(parameter, holder));
-    }
-
-    private void processMustSatisfy(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(
-                MustSatisfySpecificationFacetForParameterAnnotation.create(parameter, holder));
-    }
-
-    private void processOptional(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(MandatoryFacetForParameterAnnotation.create(parameter, method, holder));
-    }
-
-    private void processRegEx(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Parameter parameter = Annotations.getAnnotation(method, Parameter.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(RegExFacetForParameterAnnotation.create(parameter, holder));
-    }
-
-
-    @Override
-    public void setServicesInjector(final ServicesInjector servicesInjector) {
-        this.servicesInjector = servicesInjector;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
new file mode 100644
index 0000000..4d8c705
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -0,0 +1,125 @@
+/*
+ *  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.core.metamodel.facets.properties.property;
+
+import java.lang.reflect.Method;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.Annotations;
+import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
+import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
+
+public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract implements ServicesInjectorAware {
+
+    private ServicesInjector servicesInjector;
+
+    public PropertyAnnotationFacetFactory() {
+        super(FeatureType.PROPERTIES_ONLY);
+    }
+
+    @Override
+    public void process(final ProcessMethodContext processMethodContext) {
+
+        final Method method = processMethodContext.getMethod();
+        final Property property = Annotations.getAnnotation(method, Property.class);
+        if (property == null) {
+            return;
+        }
+
+        processInteraction(processMethodContext);
+        processDisabled(processMethodContext);
+        processMaxLength(processMethodContext);
+        processMustSatisfy(processMethodContext);
+        processNotPersisted(processMethodContext);
+        processOptional(processMethodContext);
+        processRegEx(processMethodContext);
+    }
+
+    private void processInteraction(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Property property = Annotations.getAnnotation(method, Property.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(
+                PropertyInteractionFacetForPropertyAnnotation.create(
+                        property, servicesInjector, getSpecificationLoader(), holder));
+    }
+
+    private void processDisabled(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Property property = Annotations.getAnnotation(method, Property.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(
+                DisabledFacetForPropertyAnnotation.create(property, holder));
+    }
+
+    private void processMaxLength(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Property property = Annotations.getAnnotation(method, Property.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(
+                MaxLengthFacetForPropertyAnnotation.create(property, holder));
+    }
+
+    private void processMustSatisfy(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Property property = Annotations.getAnnotation(method, Property.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(
+                MustSatisfySpecificationFacetForPropertyAnnotation.create(property, holder));
+    }
+
+    private void processNotPersisted(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Property property = Annotations.getAnnotation(method, Property.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(
+                NotPersistedFacetForPropertyAnnotation.create(property, holder));
+    }
+
+    private void processOptional(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Property property = Annotations.getAnnotation(method, Property.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(MandatoryFacetForPropertyAnnotation.create(property, method, holder));
+    }
+
+    private void processRegEx(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+        final Property property = Annotations.getAnnotation(method, Property.class);
+        final FacetHolder holder = processMethodContext.getFacetHolder();
+
+        FacetUtil.addFacet(RegExFacetForPropertyAnnotation.create(property, holder));
+    }
+
+
+    @Override
+    public void setServicesInjector(final ServicesInjector servicesInjector) {
+        this.servicesInjector = servicesInjector;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyFactory.java
deleted file mode 100644
index c6acaa9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyFactory.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.properties.property;
-
-import java.lang.reflect.Method;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.Annotations;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjectorAware;
-
-public class PropertyFactory extends FacetFactoryAbstract implements ServicesInjectorAware {
-
-    private ServicesInjector servicesInjector;
-
-    public PropertyFactory() {
-        super(FeatureType.PROPERTIES_ONLY);
-    }
-
-    @Override
-    public void process(final ProcessMethodContext processMethodContext) {
-
-        final Method method = processMethodContext.getMethod();
-        final Property property = Annotations.getAnnotation(method, Property.class);
-        if (property == null) {
-            return;
-        }
-
-        processInteraction(processMethodContext);
-        processDisabled(processMethodContext);
-        processMaxLength(processMethodContext);
-        processMustSatisfy(processMethodContext);
-        processNotPersisted(processMethodContext);
-        processOptional(processMethodContext);
-        processRegEx(processMethodContext);
-    }
-
-    private void processInteraction(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Property property = Annotations.getAnnotation(method, Property.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(
-                PropertyInteractionFacetForPropertyAnnotation.create(
-                        property, servicesInjector, getSpecificationLoader(), holder));
-    }
-
-    private void processDisabled(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Property property = Annotations.getAnnotation(method, Property.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(
-                DisabledFacetForPropertyAnnotation.create(property, holder));
-    }
-
-    private void processMaxLength(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Property property = Annotations.getAnnotation(method, Property.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(
-                MaxLengthFacetForPropertyAnnotation.create(property, holder));
-    }
-
-    private void processMustSatisfy(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Property property = Annotations.getAnnotation(method, Property.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(
-                MustSatisfySpecificationFacetForPropertyAnnotation.create(property, holder));
-    }
-
-    private void processNotPersisted(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Property property = Annotations.getAnnotation(method, Property.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(
-                NotPersistedFacetForPropertyAnnotation.create(property, holder));
-    }
-
-    private void processOptional(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Property property = Annotations.getAnnotation(method, Property.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(MandatoryFacetForPropertyAnnotation.create(property, method, holder));
-    }
-
-    private void processRegEx(final ProcessMethodContext processMethodContext) {
-        final Method method = processMethodContext.getMethod();
-        final Property property = Annotations.getAnnotation(method, Property.class);
-        final FacetHolder holder = processMethodContext.getFacetHolder();
-
-        FacetUtil.addFacet(RegExFacetForPropertyAnnotation.create(property, holder));
-    }
-
-
-    @Override
-    public void setServicesInjector(final ServicesInjector servicesInjector) {
-        this.servicesInjector = servicesInjector;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
index 905a82d..d11e65d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
+++ b/core/metamodel/src/main/java/org/apache/isis/progmodels/dflt/ProgrammingModelFacetsJava5.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.metamodel.facets.actions.validate.method.ActionValid
 import org.apache.isis.core.metamodel.facets.actions.validating.maxlenannot.MaxLengthFacetOnActionAnnotationFactory;
 import org.apache.isis.core.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessorFactory;
 import org.apache.isis.core.metamodel.facets.collections.clear.CollectionClearFacetFactory;
-import org.apache.isis.core.metamodel.facets.collections.collection.CollectionFacetFactory;
+import org.apache.isis.core.metamodel.facets.collections.javautilcollection.CollectionFacetFactory;
 import org.apache.isis.core.metamodel.facets.collections.disabled.fromimmutable.DisabledFacetOnCollectionDerivedFromImmutableFactory;
 import org.apache.isis.core.metamodel.facets.collections.interaction.CollectionInteractionFacetFactory;
 import org.apache.isis.core.metamodel.facets.collections.layout.CollectionLayoutFactory;

http://git-wip-us.apache.org/repos/asf/isis/blob/06c8199a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/JavaCollectionFacetTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/JavaCollectionFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/JavaCollectionFacetTest.java
index 29f4473..1a7120e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/JavaCollectionFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/JavaCollectionFacetTest.java
@@ -36,7 +36,7 @@ import org.junit.Test;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.collections.collection.JavaCollectionFacet;
+import org.apache.isis.core.metamodel.facets.collections.javautilcollection.JavaCollectionFacet;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;