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 2013/02/08 19:29:52 UTC

[16/32] ISIS-323: lots more refactoring of RO

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ActionDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ActionDescriptionReprRenderer.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ActionDescriptionReprRenderer.java
deleted file mode 100644
index 5ea503a..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ActionDescriptionReprRenderer.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.facets.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
-import org.apache.isis.viewer.restfulobjects.viewer.RendererContext;
-import org.apache.isis.viewer.restfulobjects.viewer.ResourceContext;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkFollower;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererFactoryAbstract;
-
-public class ActionDescriptionReprRenderer extends AbstractTypeMemberReprRenderer<ActionDescriptionReprRenderer, ObjectAction> {
-
-    public static class Factory extends ReprRendererFactoryAbstract {
-
-        public Factory() {
-            super(RepresentationType.ACTION_DESCRIPTION);
-        }
-
-        @Override
-        public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
-            return new ActionDescriptionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
-        }
-    }
-
-    public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
-        final String typeFullName = objectSpecification.getFullIdentifier();
-        final String actionId = objectAction.getId();
-        final String url = "domainTypes/" + typeFullName + "/actions/" + actionId;
-        return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.ACTION_DESCRIPTION, url);
-    }
-
-    public ActionDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
-        super(resourceContext, linkFollower, representationType, representation);
-    }
-
-    @Override
-    protected void addLinksSpecificToFeature() {
-        addParameters();
-        addLinkToReturnTypeIfAny();
-        addLinkToElementTypeIfAny();
-    }
-
-    private void addParameters() {
-        final JsonRepresentation parameterList = JsonRepresentation.newArray();
-        final List<ObjectActionParameter> parameters = getObjectFeature().getParameters();
-        for (final ObjectActionParameter parameter : parameters) {
-            final LinkBuilder linkBuilder = ActionParameterDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.ACTION_PARAM, objectSpecification, parameter);
-            parameterList.arrayAdd(linkBuilder.build());
-        }
-
-        representation.mapPut("parameters", parameterList);
-    }
-
-    protected void addLinkToElementTypeIfAny() {
-        final TypeOfFacet facet = getObjectFeature().getFacet(TypeOfFacet.class);
-        if (facet == null) {
-            return;
-        }
-        final ObjectSpecification typeOfSpec = facet.valueSpec();
-        final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.ELEMENT_TYPE, typeOfSpec);
-        getLinks().arrayAdd(linkBuilder.build());
-    }
-
-    private void addLinkToReturnTypeIfAny() {
-        final ObjectSpecification returnType = getObjectFeature().getReturnType();
-        if (returnType == null) {
-            return;
-        }
-        final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.RETURN_TYPE, returnType);
-        getLinks().arrayAdd(linkBuilder.build());
-    }
-
-    @Override
-    protected void putExtensionsSpecificToFeature() {
-        putExtensionsName();
-        putExtensionsDescriptionIfAvailable();
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ActionParameterDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ActionParameterDescriptionReprRenderer.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ActionParameterDescriptionReprRenderer.java
deleted file mode 100644
index 27ad405..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ActionParameterDescriptionReprRenderer.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
-import org.apache.isis.viewer.restfulobjects.viewer.RendererContext;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkFollower;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererFactoryAbstract;
-
-public class ActionParameterDescriptionReprRenderer extends AbstractTypeFeatureReprRenderer<ActionParameterDescriptionReprRenderer, ObjectActionParameter> {
-
-    public static class Factory extends ReprRendererFactoryAbstract {
-
-        public Factory() {
-            super(RepresentationType.ACTION_PARAMETER_DESCRIPTION);
-        }
-
-        @Override
-        public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
-            return new ActionParameterDescriptionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
-        }
-    }
-
-    public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpecification, final ObjectActionParameter objectActionParameter) {
-        final String typeFullName = objectSpecification.getFullIdentifier();
-        final ObjectAction objectAction = objectActionParameter.getAction();
-        final String actionId = objectAction.getId();
-        final String paramName = objectActionParameter.getName();
-        final String url = String.format("domainTypes/%s/actions/%s/params/%s", typeFullName, actionId, paramName);
-        return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.ACTION_PARAMETER_DESCRIPTION, url).withId(deriveId(objectActionParameter));
-    }
-
-    public ActionParameterDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
-        super(resourceContext, linkFollower, representationType, representation);
-    }
-
-    @Override
-    public ActionParameterDescriptionReprRenderer with(final ParentSpecAndFeature<ObjectActionParameter> specAndFeature) {
-        super.with(specAndFeature);
-
-        // done eagerly so can use as criteria for x-ro-follow-links
-        representation.mapPut("id", deriveId());
-
-        return this;
-    }
-
-    protected String deriveId() {
-        return deriveId(getObjectFeature());
-    }
-
-    private static String deriveId(final ObjectActionParameter objectActionParameter) {
-        return objectActionParameter.getAction().getId() + "-" + objectActionParameter.getName();
-    }
-
-    @Override
-    protected void addLinkSelfIfRequired() {
-        if (!includesSelf) {
-            return;
-        }
-        getLinks().arrayAdd(newLinkToBuilder(getResourceContext(), Rel.SELF, getParentSpecification(), getObjectFeature()).build());
-    }
-
-    @Override
-    protected void addLinkUpToParent() {
-        final ObjectAction parentAction = this.objectFeature.getAction();
-
-        final LinkBuilder parentLinkBuilder = ActionDescriptionReprRenderer.newLinkToBuilder(resourceContext, Rel.UP, objectSpecification, parentAction);
-        getLinks().arrayAdd(parentLinkBuilder.build());
-    }
-
-    @Override
-    protected void addPropertiesSpecificToFeature() {
-        representation.mapPut("name", getObjectFeature().getName());
-        representation.mapPut("number", getObjectFeature().getNumber());
-        representation.mapPut("optional", getObjectFeature().isOptional());
-        final MaxLengthFacet maxLength = getObjectFeature().getFacet(MaxLengthFacet.class);
-        if (maxLength != null && !maxLength.isNoop()) {
-            representation.mapPut("maxLength", maxLength.value());
-        }
-    }
-
-    @Override
-    protected void addLinksSpecificToFeature() {
-        final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(resourceContext, Rel.RETURN_TYPE, objectFeature.getSpecification());
-        getLinks().arrayAdd(linkBuilder.build());
-    }
-
-    @Override
-    protected void putExtensionsSpecificToFeature() {
-        putExtensionsName();
-        putExtensionsDescriptionIfAvailable();
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/CollectionDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/CollectionDescriptionReprRenderer.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/CollectionDescriptionReprRenderer.java
deleted file mode 100644
index 616ec9d..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/CollectionDescriptionReprRenderer.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
-import org.apache.isis.viewer.restfulobjects.viewer.RendererContext;
-import org.apache.isis.viewer.restfulobjects.viewer.ResourceContext;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkFollower;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererFactoryAbstract;
-
-public class CollectionDescriptionReprRenderer extends AbstractTypeMemberReprRenderer<CollectionDescriptionReprRenderer, OneToManyAssociation> {
-
-    public static class Factory extends ReprRendererFactoryAbstract {
-
-        public Factory() {
-            super(RepresentationType.COLLECTION_DESCRIPTION);
-        }
-
-        @Override
-        public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
-            return new CollectionDescriptionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
-        }
-    }
-
-    public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpecification, final OneToManyAssociation collection) {
-        final String typeFullName = objectSpecification.getFullIdentifier();
-        final String collectionId = collection.getId();
-        final String url = "domainTypes/" + typeFullName + "/collections/" + collectionId;
-        return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.COLLECTION_DESCRIPTION, url);
-    }
-
-    public CollectionDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
-        super(resourceContext, linkFollower, representationType, representation);
-    }
-
-    @Override
-    protected void addLinksSpecificToFeature() {
-        addLinkToElementTypeIfAny();
-    }
-
-    private void addLinkToElementTypeIfAny() {
-        final ObjectSpecification elementType = getObjectFeature().getSpecification();
-        if (elementType == null) {
-            return;
-        }
-        final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.ELEMENT_TYPE, elementType);
-        getLinks().arrayAdd(linkBuilder.build());
-    }
-
-    @Override
-    protected void putExtensionsSpecificToFeature() {
-        putExtensionsName();
-        putExtensionsDescriptionIfAvailable();
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/DomainTypeReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/DomainTypeReprRenderer.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/DomainTypeReprRenderer.java
deleted file mode 100644
index 4980653..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/DomainTypeReprRenderer.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import java.util.List;
-
-import com.google.common.base.Strings;
-
-import org.codehaus.jackson.node.NullNode;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionContainer.Contributed;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
-import org.apache.isis.viewer.restfulobjects.viewer.RendererContext;
-import org.apache.isis.viewer.restfulobjects.viewer.ResourceContext;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkFollower;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererAbstract;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererFactoryAbstract;
-
-public class DomainTypeReprRenderer extends ReprRendererAbstract<DomainTypeReprRenderer, ObjectSpecification> {
-
-    public static class Factory extends ReprRendererFactoryAbstract {
-        public Factory() {
-            super(RepresentationType.DOMAIN_TYPE);
-        }
-
-        @Override
-        public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
-            return new DomainTypeReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
-        }
-    }
-
-    public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpec) {
-        final String typeFullName = objectSpec.getFullIdentifier();
-        final String url = "domainTypes/" + typeFullName;
-        return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.DOMAIN_TYPE, url);
-    }
-
-    private ObjectSpecification objectSpecification;
-
-    public DomainTypeReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
-        super(resourceContext, linkFollower, representationType, representation);
-    }
-
-    @Override
-    public DomainTypeReprRenderer with(final ObjectSpecification objectSpecification) {
-        this.objectSpecification = objectSpecification;
-        return cast(this);
-    }
-
-    @Override
-    public JsonRepresentation render() {
-
-        if (objectSpecification == null) {
-            throw new IllegalStateException("ObjectSpecification not specified");
-        }
-
-        // self
-        if (includesSelf) {
-            final JsonRepresentation selfLink = newLinkToBuilder(getResourceContext(), Rel.SELF, objectSpecification).build();
-            getLinks().arrayAdd(selfLink);
-        }
-
-        representation.mapPut("canonicalName", objectSpecification.getFullIdentifier());
-        addMembers();
-
-        addTypeActions();
-
-        putExtensionsNames();
-        putExtensionsDescriptionIfAvailable();
-        putExtensionsIfService();
-
-        return representation;
-    }
-
-    private void addMembers() {
-        final JsonRepresentation membersList = JsonRepresentation.newArray();
-        representation.mapPut("members", membersList);
-        final List<ObjectAssociation> associations = objectSpecification.getAssociations();
-        for (final ObjectAssociation association : associations) {
-            if (association.isOneToOneAssociation()) {
-                final OneToOneAssociation property = (OneToOneAssociation) association;
-                final LinkBuilder linkBuilder = PropertyDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.PROPERTY, objectSpecification, property);
-                membersList.arrayAdd(linkBuilder.build());
-            } else if (association.isOneToManyAssociation()) {
-                final OneToManyAssociation collection = (OneToManyAssociation) association;
-                final LinkBuilder linkBuilder = CollectionDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.PROPERTY, objectSpecification, collection);
-                membersList.arrayAdd(linkBuilder.build());
-            }
-        }
-        final List<ObjectAction> actions = objectSpecification.getObjectActions(Contributed.INCLUDED);
-        for (final ObjectAction action : actions) {
-            final LinkBuilder linkBuilder = ActionDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.ACTION, objectSpecification, action);
-            membersList.arrayAdd(linkBuilder.build());
-        }
-    }
-
-    private JsonRepresentation getTypeActions() {
-        JsonRepresentation typeActions = representation.getArray("typeActions");
-        if (typeActions == null) {
-            typeActions = JsonRepresentation.newArray();
-            representation.mapPut("typeActions", typeActions);
-        }
-        return typeActions;
-    }
-
-    private void addTypeActions() {
-        getTypeActions().arrayAdd(linkToIsSubtypeOf());
-        getTypeActions().arrayAdd(linkToIsSupertypeOf());
-        getTypeActions().arrayAdd(linkToNewTransientInstance());
-    }
-
-    private JsonRepresentation linkToIsSubtypeOf() {
-        final String url = "domainTypes/" + objectSpecification.getFullIdentifier() + "/typeactions/isSubtypeOf/invoke";
-
-        final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.TYPE_ACTION, RepresentationType.TYPE_ACTION_RESULT, url);
-        final JsonRepresentation arguments = argumentsTo(getResourceContext(), "supertype", null);
-        final JsonRepresentation link = linkBuilder.withArguments(arguments).withId("isSubtypeOf").build();
-        return link;
-    }
-
-    private JsonRepresentation linkToIsSupertypeOf() {
-        final String url = "domainTypes/" + objectSpecification.getFullIdentifier() + "/typeactions/isSupertypeOf/invoke";
-
-        final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.TYPE_ACTION, RepresentationType.TYPE_ACTION_RESULT, url);
-        final JsonRepresentation arguments = argumentsTo(getResourceContext(), "subtype", null);
-        final JsonRepresentation link = linkBuilder.withArguments(arguments).withId("isSupertypeOf").build();
-        return link;
-    }
-
-    private JsonRepresentation linkToNewTransientInstance() {
-        final String url = "domainTypes/" + objectSpecification.getFullIdentifier() + "/typeactions/newTransientInstance/invoke";
-
-        final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.TYPE_ACTION, RepresentationType.TYPE_ACTION_RESULT, url);
-        final JsonRepresentation link = linkBuilder.withId("newTransientInstance").build();
-        return link;
-    }
-
-    public static JsonRepresentation argumentsTo(final RendererContext resourceContext, final String paramName, final ObjectSpecification objectSpec) {
-        final JsonRepresentation arguments = JsonRepresentation.newMap();
-        final JsonRepresentation link = JsonRepresentation.newMap();
-        arguments.mapPut(paramName, link);
-        if (objectSpec != null) {
-            link.mapPut("href", resourceContext.urlFor("domainTypes/" + objectSpec.getFullIdentifier()));
-        } else {
-            link.mapPut("href", NullNode.instance);
-        }
-        return arguments;
-    }
-
-    protected void putExtensionsNames() {
-        final String singularName = objectSpecification.getSingularName();
-        getExtensions().mapPut("friendlyName", singularName);
-
-        final String pluralName = objectSpecification.getPluralName();
-        getExtensions().mapPut("pluralName", pluralName);
-    }
-
-    protected void putExtensionsDescriptionIfAvailable() {
-        final String description = objectSpecification.getDescription();
-        if (!Strings.isNullOrEmpty(description)) {
-            getExtensions().mapPut("description", description);
-        }
-    }
-
-    protected void putExtensionsIfService() {
-        getExtensions().mapPut("isService", objectSpecification.isService());
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/DomainTypeResourceServerside.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/DomainTypeResourceServerside.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/DomainTypeResourceServerside.java
deleted file mode 100644
index 432f69a..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/DomainTypeResourceServerside.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import java.util.Collection;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import com.google.common.base.Strings;
-
-import org.jboss.resteasy.annotations.ClientResponseType;
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
-import org.apache.isis.viewer.restfulobjects.applib.domaintypes.DomainTypeResource;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
-import org.apache.isis.viewer.restfulobjects.viewer.RestfulObjectsApplicationException;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.RendererFactory;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.ResourceAbstract;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.domainobjects.DomainObjectReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.domainobjects.DomainResourceHelper;
-import org.apache.isis.viewer.restfulobjects.viewer.util.UrlParserUtils;
-
-/**
- * Implementation note: it seems to be necessary to annotate the implementation
- * with {@link Path} rather than the interface (at least under RestEasy 1.0.2
- * and 1.1-RC2).
- */
-@Path("/domainTypes")
-public class DomainTypeResourceServerside extends ResourceAbstract implements DomainTypeResource {
-
-    @Override
-    @GET
-    @Path("/")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_TYPE_LIST })
-    public Response domainTypes() {
-        final RepresentationType representationType = RepresentationType.TYPE_LIST;
-        init(representationType, Where.ANYWHERE);
-
-        final Collection<ObjectSpecification> allSpecifications = getSpecificationLoader().allSpecifications();
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-
-        final TypeListReprRenderer renderer = (TypeListReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-        renderer.with(allSpecifications).includesSelf();
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    @Override
-    @GET
-    @Path("/{domainType}")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_DOMAIN_TYPE })
-    public Response domainType(@PathParam("domainType") final String domainType) {
-
-        final RepresentationType representationType = RepresentationType.DOMAIN_TYPE;
-        init(representationType, Where.ANYWHERE);
-
-        final ObjectSpecification objectSpec = getSpecificationLoader().loadSpecification(domainType);
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-
-        final DomainTypeReprRenderer renderer = (DomainTypeReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-        renderer.with(objectSpec).includesSelf();
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    @Override
-    @GET
-    @Path("/{domainType}/properties/{propertyId}")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_PROPERTY_DESCRIPTION })
-    public Response typeProperty(@PathParam("domainType") final String domainType, @PathParam("propertyId") final String propertyId) {
-        final RepresentationType representationType = RepresentationType.PROPERTY_DESCRIPTION;
-        init(representationType, Where.ANYWHERE);
-
-        final ObjectSpecification parentSpec = getSpecificationLoader().loadSpecification(domainType);
-        if (parentSpec == null) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND);
-        }
-
-        final ObjectMember objectMember = parentSpec.getAssociation(propertyId);
-        if (objectMember == null || objectMember.isOneToManyAssociation()) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND);
-        }
-        final OneToOneAssociation property = (OneToOneAssociation) objectMember;
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-
-        final PropertyDescriptionReprRenderer renderer = (PropertyDescriptionReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-        renderer.with(new ParentSpecAndProperty(parentSpec, property)).includesSelf();
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    @Override
-    @GET
-    @Path("/{domainType}/collections/{collectionId}")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_COLLECTION_DESCRIPTION })
-    public Response typeCollection(@PathParam("domainType") final String domainType, @PathParam("collectionId") final String collectionId) {
-        final RepresentationType representationType = RepresentationType.COLLECTION_DESCRIPTION;
-        init(representationType, Where.ANYWHERE);
-
-        final ObjectSpecification parentSpec = getSpecificationLoader().loadSpecification(domainType);
-        if (parentSpec == null) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND);
-        }
-
-        final ObjectMember objectMember = parentSpec.getAssociation(collectionId);
-        if (objectMember == null || objectMember.isOneToOneAssociation()) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND);
-        }
-        final OneToManyAssociation collection = (OneToManyAssociation) objectMember;
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-
-        final CollectionDescriptionReprRenderer renderer = (CollectionDescriptionReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-        renderer.with(new ParentSpecAndCollection(parentSpec, collection)).includesSelf();
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    @Override
-    @GET
-    @Path("/{domainType}/actions/{actionId}")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_ACTION_DESCRIPTION })
-    public Response typeAction(@PathParam("domainType") final String domainType, @PathParam("actionId") final String actionId) {
-        final RepresentationType representationType = RepresentationType.ACTION_DESCRIPTION;
-        init(representationType, Where.ANYWHERE);
-
-        final ObjectSpecification parentSpec = getSpecificationLoader().loadSpecification(domainType);
-        if (parentSpec == null) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND);
-        }
-
-        final ObjectMember objectMember = parentSpec.getObjectAction(actionId);
-        if (objectMember == null) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND);
-        }
-        final ObjectAction action = (ObjectAction) objectMember;
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-
-        final ActionDescriptionReprRenderer renderer = (ActionDescriptionReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-        renderer.with(new ParentSpecAndAction(parentSpec, action)).includesSelf();
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    @Override
-    @GET
-    @Path("/{domainType}/actions/{actionId}/params/{paramName}")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_ACTION_PARAMETER_DESCRIPTION })
-    public Response typeActionParam(@PathParam("domainType") final String domainType, @PathParam("actionId") final String actionId, @PathParam("paramName") final String paramName) {
-        final RepresentationType representationType = RepresentationType.ACTION_PARAMETER_DESCRIPTION;
-        init(representationType, Where.ANYWHERE);
-
-        final ObjectSpecification parentSpec = getSpecificationLoader().loadSpecification(domainType);
-        if (parentSpec == null) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND);
-        }
-
-        final ObjectMember objectMember = parentSpec.getObjectAction(actionId);
-        if (objectMember == null) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND);
-        }
-        final ObjectAction parentAction = (ObjectAction) objectMember;
-
-        final ObjectActionParameter actionParam = parentAction.getParameterByName(paramName);
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-
-        final ActionParameterDescriptionReprRenderer renderer = (ActionParameterDescriptionReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-        renderer.with(new ParentSpecAndActionParam(parentSpec, actionParam)).includesSelf();
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    // //////////////////////////////////////////////////////////
-    // domain type actions
-    // //////////////////////////////////////////////////////////
-
-    @Override
-    @GET
-    @Path("/{domainType}/typeactions/isSubtypeOf/invoke")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_TYPE_ACTION_RESULT, RestfulMediaType.APPLICATION_JSON_ERROR })
-    public Response domainTypeIsSubtypeOf(@PathParam("domainType") final String domainType, @QueryParam("supertype") final String superTypeStr, // simple
-                                                                                                                                                // style
-            @QueryParam("args") final String args // formal style
-    ) {
-
-        final RepresentationType representationType = RepresentationType.TYPE_ACTION_RESULT;
-        init(Where.ANYWHERE);
-
-        final String supertype = domainTypeFor(superTypeStr, args, "supertype");
-
-        final ObjectSpecification domainTypeSpec = getSpecificationLoader().loadSpecification(domainType);
-        final ObjectSpecification supertypeSpec = getSpecificationLoader().loadSpecification(supertype);
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-        final TypeActionResultReprRenderer renderer = (TypeActionResultReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-
-        final String url = "domainTypes/" + domainTypeSpec.getFullIdentifier() + "/typeactions/isSubtypeOf/invoke";
-        final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.SELF, RepresentationType.TYPE_ACTION_RESULT, url);
-        final JsonRepresentation arguments = DomainTypeReprRenderer.argumentsTo(getResourceContext(), "supertype", supertypeSpec);
-        final JsonRepresentation selfLink = linkBuilder.withArguments(arguments).build();
-
-        final boolean value = domainTypeSpec.isOfType(supertypeSpec);
-        renderer.with(domainTypeSpec).withSelf(selfLink).withValue(value);
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    @Override
-    @GET
-    @Path("/{domainType}/typeactions/isSupertypeOf/invoke")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_TYPE_ACTION_RESULT, RestfulMediaType.APPLICATION_JSON_ERROR })
-    public Response domainTypeIsSupertypeOf(
-            @PathParam("domainType") final String domainType, 
-            @QueryParam("subtype") final String subTypeStr, // simple style
-            @QueryParam("args") final String args // formal style
-            ) {
-
-        final RepresentationType representationType = RepresentationType.TYPE_ACTION_RESULT;
-        init(Where.ANYWHERE);
-
-        final String subtype = domainTypeFor(subTypeStr, args, "subtype");
-
-        final ObjectSpecification domainTypeSpec = getSpecificationLoader().loadSpecification(domainType);
-        final ObjectSpecification subtypeSpec = getSpecificationLoader().loadSpecification(subtype);
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-        final TypeActionResultReprRenderer renderer = (TypeActionResultReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-
-        final String url = "domainTypes/" + domainTypeSpec.getFullIdentifier() + "/typeactions/isSupertypeOf/invoke";
-        final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.SELF, RepresentationType.TYPE_ACTION_RESULT, url);
-        final JsonRepresentation arguments = DomainTypeReprRenderer.argumentsTo(getResourceContext(), "subtype", subtypeSpec);
-        final JsonRepresentation selfLink = linkBuilder.withArguments(arguments).build();
-
-        final boolean value = subtypeSpec.isOfType(domainTypeSpec);
-        renderer.with(domainTypeSpec).withSelf(selfLink).withValue(value);
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    @Override
-    @GET
-    @Path("/{domainType}/typeactions/newTransientInstance/invoke")
-    @Produces({ MediaType.APPLICATION_JSON, RestfulMediaType.APPLICATION_JSON_TYPE_ACTION_RESULT, RestfulMediaType.APPLICATION_JSON_ERROR })
-    @ClientResponseType(entityType = String.class)
-    public Response newTransientInstance(@PathParam("domainType") final String domainTypeStr, @QueryParam("args") final String args) {
-
-        final RepresentationType representationType = RepresentationType.TYPE_ACTION_RESULT;
-        init(representationType, Where.ANYWHERE);
-
-        final String domainType = domainTypeFor(domainTypeStr, args, "domainType");
-
-        final ObjectSpecification domainTypeSpec = getSpecificationLoader().loadSpecification(domainType);
-
-        final RendererFactory rendererFactory = rendererFactoryRegistry.find(representationType);
-        final TypeActionResultReprRenderer renderer = (TypeActionResultReprRenderer) rendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-
-        final String url = "domainTypes/" + domainTypeSpec.getFullIdentifier() + "/typeactions/newTransientInstance/invoke";
-        final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.SELF, RepresentationType.TYPE_ACTION_RESULT, url);
-        final JsonRepresentation selfLink = linkBuilder.build();
-
-        final RendererFactory domainObjectRendererFactory = rendererFactoryRegistry.find(RepresentationType.DOMAIN_OBJECT);
-        final DomainObjectReprRenderer domainObjectRenderer = (DomainObjectReprRenderer) domainObjectRendererFactory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-        final ObjectAdapter transientInstance = getResourceContext().getPersistenceSession().createTransientInstance(domainTypeSpec);
-        domainObjectRenderer.with(transientInstance).includesSelf();
-
-        renderer.with(domainTypeSpec).withSelf(selfLink).withValue(domainObjectRenderer.render());
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    private static String domainTypeFor(final String domainTypeStr, final String argumentsQueryString, final String argsParamName) {
-        // simple style; simple return
-        if (!Strings.isNullOrEmpty(domainTypeStr)) {
-            return domainTypeStr;
-        }
-
-        // formal style; must parse from args that has a link with an href to
-        // the domain type
-        final String href = linkFromFormalArgs(argumentsQueryString, argsParamName);
-        return UrlParserUtils.domainTypeFrom(href);
-    }
-
-    private static String linkFromFormalArgs(final String argumentsQueryString, final String paramName) {
-        final JsonRepresentation arguments = DomainResourceHelper.readQueryStringAsMap(argumentsQueryString);
-        if (!arguments.isLink(paramName)) {
-            throw RestfulObjectsApplicationException.create(HttpStatusCode.BAD_REQUEST, "Args should contain a link '%s'", paramName);
-        }
-
-        return arguments.getLink(paramName).getHref();
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ObjectSpecAndSuperSpec.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ObjectSpecAndSuperSpec.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ObjectSpecAndSuperSpec.java
deleted file mode 100644
index 36b0be8..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ObjectSpecAndSuperSpec.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public class ObjectSpecAndSuperSpec {
-
-    private final ObjectSpecification objectSpecification;
-    private final ObjectSpecification superSpecification;
-
-    public ObjectSpecAndSuperSpec(final ObjectSpecification objectSpecification, final ObjectSpecification superSpecification) {
-        this.objectSpecification = objectSpecification;
-        this.superSpecification = superSpecification;
-    }
-
-    public ObjectSpecification getObjectSpecification() {
-        return objectSpecification;
-    }
-
-    public ObjectSpecification getSuperSpecification() {
-        return superSpecification;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndAction.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndAction.java
deleted file mode 100644
index 5ff9ba1..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndAction.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-
-public class ParentSpecAndAction extends ParentSpecAndFeature<ObjectAction> {
-
-    public ParentSpecAndAction(final ObjectSpecification objectSpecification, final ObjectAction action) {
-        super(objectSpecification, action);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndActionParam.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndActionParam.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndActionParam.java
deleted file mode 100644
index 1edabd5..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndActionParam.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-
-public class ParentSpecAndActionParam extends ParentSpecAndFeature<ObjectActionParameter> {
-
-    public ParentSpecAndActionParam(final ObjectSpecification objectSpecification, final ObjectActionParameter actionParam) {
-        super(objectSpecification, actionParam);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndCollection.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndCollection.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndCollection.java
deleted file mode 100644
index 84f359c..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndCollection.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-
-public class ParentSpecAndCollection extends ParentSpecAndFeature<OneToManyAssociation> {
-
-    public ParentSpecAndCollection(final ObjectSpecification objectSpecification, final OneToManyAssociation collection) {
-        super(objectSpecification, collection);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndFeature.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndFeature.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndFeature.java
deleted file mode 100644
index 4c30d32..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndFeature.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
-
-public abstract class ParentSpecAndFeature<T extends ObjectFeature> {
-
-    private final ObjectSpecification parentSpec;
-    private final T objectFeature;
-
-    public ParentSpecAndFeature(final ObjectSpecification objectSpecification, final T objectFeature) {
-        this.parentSpec = objectSpecification;
-        this.objectFeature = objectFeature;
-    }
-
-    public ObjectSpecification getParentSpec() {
-        return parentSpec;
-    }
-
-    public T getObjectFeature() {
-        return objectFeature;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndProperty.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndProperty.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndProperty.java
deleted file mode 100644
index 64f5793..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/ParentSpecAndProperty.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-
-public class ParentSpecAndProperty extends ParentSpecAndFeature<OneToOneAssociation> {
-
-    public ParentSpecAndProperty(final ObjectSpecification objectSpecification, final OneToOneAssociation property) {
-        super(objectSpecification, property);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/PropertyDescriptionReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/PropertyDescriptionReprRenderer.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/PropertyDescriptionReprRenderer.java
deleted file mode 100644
index 7311c30..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/PropertyDescriptionReprRenderer.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.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.facets.maxlen.MaxLengthFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
-import org.apache.isis.viewer.restfulobjects.viewer.RendererContext;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkFollower;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererFactoryAbstract;
-
-public class PropertyDescriptionReprRenderer extends AbstractTypeMemberReprRenderer<PropertyDescriptionReprRenderer, OneToOneAssociation> {
-
-    public static class Factory extends ReprRendererFactoryAbstract {
-
-        public Factory() {
-            super(RepresentationType.PROPERTY_DESCRIPTION);
-        }
-
-        @Override
-        public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
-            return new PropertyDescriptionReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
-        }
-    }
-
-    public static LinkBuilder newLinkToBuilder(final RendererContext resourceContext, final Rel rel, final ObjectSpecification objectSpecification, final OneToOneAssociation property) {
-        final String typeFullName = objectSpecification.getFullIdentifier();
-        final String propertyId = property.getId();
-        final String url = "domainTypes/" + typeFullName + "/properties/" + propertyId;
-        return LinkBuilder.newBuilder(resourceContext, rel, RepresentationType.PROPERTY_DESCRIPTION, url);
-    }
-
-    public PropertyDescriptionReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
-        super(resourceContext, linkFollower, representationType, representation);
-    }
-
-    @Override
-    protected void addLinksSpecificToFeature() {
-        addLinkToReturnTypeIfAny();
-    }
-
-    @Override
-    protected void addPropertiesSpecificToFeature() {
-        representation.mapPut("optional", !getObjectFeature().isMandatory());
-        final MaxLengthFacet maxLength = getObjectFeature().getFacet(MaxLengthFacet.class);
-        if (maxLength != null && !maxLength.isNoop()) {
-            representation.mapPut("maxLength", maxLength.value());
-        }
-    }
-
-    private void addLinkToReturnTypeIfAny() {
-        final ObjectSpecification returnType = getObjectFeature().getSpecification();
-        if (returnType == null) {
-            return;
-        }
-        final LinkBuilder linkBuilder = DomainTypeReprRenderer.newLinkToBuilder(getResourceContext(), Rel.RETURN_TYPE, returnType);
-        getLinks().arrayAdd(linkBuilder.build());
-    }
-
-    @Override
-    protected void putExtensionsSpecificToFeature() {
-        putExtensionsName();
-        putExtensionsDescriptionIfAvailable();
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/TypeActionResultReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/TypeActionResultReprRenderer.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/TypeActionResultReprRenderer.java
deleted file mode 100644
index 7061bfe..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/TypeActionResultReprRenderer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.LinkRepresentation;
-import org.apache.isis.viewer.restfulobjects.viewer.RendererContext;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkFollower;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererAbstract;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererFactoryAbstract;
-
-public class TypeActionResultReprRenderer extends ReprRendererAbstract<TypeActionResultReprRenderer, ObjectSpecification> {
-
-    public static class Factory extends ReprRendererFactoryAbstract {
-        public Factory() {
-            super(RepresentationType.TYPE_ACTION_RESULT);
-        }
-
-        @Override
-        public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
-            return new TypeActionResultReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
-        }
-    }
-
-    private ObjectSpecification objectSpecification;
-    private LinkRepresentation selfLink;
-    private Object value;
-
-    public TypeActionResultReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
-        super(resourceContext, linkFollower, representationType, representation);
-    }
-
-    @Override
-    public TypeActionResultReprRenderer with(final ObjectSpecification objectSpecification) {
-        this.objectSpecification = objectSpecification;
-        return cast(this);
-    }
-
-    public TypeActionResultReprRenderer withValue(final Object value) {
-        this.value = value;
-        return this;
-    }
-
-    @Override
-    public JsonRepresentation render() {
-        if (includesSelf && selfLink != null) {
-            getLinks().arrayAdd(selfLink);
-        }
-
-        if (value != null) {
-            representation.mapPut("value", value);
-        }
-        getExtensions();
-
-        return representation;
-    }
-
-    protected void putExtensionsIfService() {
-        getExtensions().mapPut("isService", objectSpecification.isService());
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/TypeListReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/TypeListReprRenderer.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/TypeListReprRenderer.java
deleted file mode 100644
index 098d4bf..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/domaintypes/TypeListReprRenderer.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes;
-
-import java.util.Collection;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
-import org.apache.isis.viewer.restfulobjects.viewer.RendererContext;
-import org.apache.isis.viewer.restfulobjects.viewer.ResourceContext;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkFollower;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererAbstract;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererFactoryAbstract;
-
-public class TypeListReprRenderer extends ReprRendererAbstract<TypeListReprRenderer, Collection<ObjectSpecification>> {
-
-    private Collection<ObjectSpecification> specifications;
-
-    public static class Factory extends ReprRendererFactoryAbstract {
-        public Factory() {
-            super(RepresentationType.TYPE_LIST);
-        }
-
-        @Override
-        public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
-            return new TypeListReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
-        }
-    }
-
-    private TypeListReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
-        super(resourceContext, linkFollower, representationType, representation);
-    }
-
-    @Override
-    public TypeListReprRenderer with(final Collection<ObjectSpecification> specifications) {
-        this.specifications = specifications;
-        return this;
-    }
-
-    @Override
-    public JsonRepresentation render() {
-
-        // self
-        if (includesSelf) {
-            withSelf("domainTypes");
-        }
-
-        final JsonRepresentation specList = JsonRepresentation.newArray();
-        for (final ObjectSpecification objectSpec : specifications) {
-            final LinkBuilder linkBuilder = LinkBuilder.newBuilder(getResourceContext(), Rel.DOMAIN_TYPE, RepresentationType.DOMAIN_TYPE, "domainTypes/%s", objectSpec.getFullIdentifier());
-            specList.arrayAdd(linkBuilder.build());
-        }
-
-        representation.mapPut("values", specList);
-
-        getExtensions(); // empty
-
-        return representation;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/home/HomePageReprRenderer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/home/HomePageReprRenderer.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/home/HomePageReprRenderer.java
deleted file mode 100644
index e64d755..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/home/HomePageReprRenderer.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.home;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.links.Rel;
-import org.apache.isis.viewer.restfulobjects.viewer.RendererContext;
-import org.apache.isis.viewer.restfulobjects.viewer.ResourceContext;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkBuilder;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.LinkFollower;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.RendererFactory;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.RendererFactoryRegistry;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererAbstract;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.ReprRendererFactoryAbstract;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.domainobjects.DomainServiceLinkTo;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.domainobjects.ListReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.domaintypes.TypeListReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.user.UserReprRenderer;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.version.VersionReprRenderer;
-
-public class HomePageReprRenderer extends ReprRendererAbstract<HomePageReprRenderer, Void> {
-
-    public static class Factory extends ReprRendererFactoryAbstract {
-        public Factory() {
-            super(RepresentationType.HOME_PAGE);
-        }
-
-        @Override
-        public ReprRenderer<?, ?> newRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final JsonRepresentation representation) {
-            return new HomePageReprRenderer(resourceContext, linkFollower, getRepresentationType(), representation);
-        }
-    }
-
-    private HomePageReprRenderer(final RendererContext resourceContext, final LinkFollower linkFollower, final RepresentationType representationType, final JsonRepresentation representation) {
-        super(resourceContext, linkFollower, representationType, representation);
-    }
-
-    @Override
-    public HomePageReprRenderer with(final Void t) {
-        return this;
-    }
-
-    @Override
-    public JsonRepresentation render() {
-
-        // self
-        if (includesSelf) {
-            addLinkToSelf(representation);
-        }
-
-        addLinkToUser(getResourceContext().getAuthenticationSession());
-        addLinkToServices(((ResourceContext)getResourceContext()).getPersistenceSession().getServices());
-        addLinkToVersion();
-        addLinkToDomainTypes(((ResourceContext)getResourceContext()).getSpecificationLookup().allSpecifications());
-
-        // inks and extensions
-        representation.mapPut("extensions", JsonRepresentation.newMap());
-
-        return representation;
-    }
-
-    private void addLinkToSelf(final JsonRepresentation representation) {
-        final JsonRepresentation link = LinkBuilder.newBuilder(resourceContext, Rel.SELF, getRepresentationType(), "").build();
-
-        final LinkFollower linkFollower = getLinkFollower().follow("links[rel=self]");
-        if (linkFollower.matches(link)) {
-
-            final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.HOME_PAGE);
-            final HomePageReprRenderer renderer = (HomePageReprRenderer) factory.newRenderer(getResourceContext(), linkFollower, JsonRepresentation.newMap());
-
-            link.mapPut("value", renderer.render());
-        }
-        getLinks().arrayAdd(link);
-    }
-
-    private void addLinkToVersion() {
-        final JsonRepresentation link = LinkBuilder.newBuilder(getResourceContext(), Rel.VERSION, RepresentationType.VERSION, "version").build();
-
-        final LinkFollower linkFollower = getLinkFollower().follow("links[rel=version]");
-        if (linkFollower.matches(link)) {
-
-            final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.VERSION);
-            final VersionReprRenderer renderer = (VersionReprRenderer) factory.newRenderer(getResourceContext(), linkFollower, JsonRepresentation.newMap());
-
-            link.mapPut("value", renderer.render());
-        }
-
-        getLinks().arrayAdd(link);
-    }
-
-    private void addLinkToServices(List<ObjectAdapter> serviceAdapters) {
-
-        final JsonRepresentation link = LinkBuilder.newBuilder(getResourceContext(), Rel.SERVICES, RepresentationType.LIST, "services").build();
-
-        final LinkFollower linkFollower = getLinkFollower().follow("links[rel=services]");
-        if (linkFollower.matches(link)) {
-
-            final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.LIST);
-
-            final ListReprRenderer renderer = (ListReprRenderer) factory.newRenderer(getResourceContext(), linkFollower, JsonRepresentation.newMap());
-            renderer.usingLinkToBuilder(new DomainServiceLinkTo()).withSelf("services").with(serviceAdapters);
-
-            link.mapPut("value", renderer.render());
-        }
-
-        getLinks().arrayAdd(link);
-    }
-
-    private void addLinkToUser(AuthenticationSession authenticationSession) {
-        final JsonRepresentation link = LinkBuilder.newBuilder(getResourceContext(), Rel.USER, RepresentationType.USER, "user").build();
-
-        final LinkFollower linkFollower = getLinkFollower().follow("links[rel=user]");
-        if (linkFollower.matches(link)) {
-            final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.USER);
-            final UserReprRenderer renderer = (UserReprRenderer) factory.newRenderer(getResourceContext(), linkFollower, JsonRepresentation.newMap());
-            renderer.with(authenticationSession);
-
-            link.mapPut("value", renderer.render());
-        }
-
-        getLinks().arrayAdd(link);
-    }
-
-    private void addLinkToDomainTypes(final Collection<ObjectSpecification> specifications) {
-
-        final JsonRepresentation link = LinkBuilder.newBuilder(getResourceContext(), Rel.TYPES, RepresentationType.TYPE_LIST, "domainTypes").build();
-
-        final LinkFollower linkFollower = getLinkFollower().follow("links[rel=types]");
-        if (linkFollower.matches(link)) {
-
-            final RendererFactory factory = RendererFactoryRegistry.instance.find(RepresentationType.TYPE_LIST);
-
-            final TypeListReprRenderer renderer = (TypeListReprRenderer) factory.newRenderer(getResourceContext(), linkFollower, JsonRepresentation.newMap());
-
-            renderer.withSelf("domainTypes").with(specifications);
-
-            link.mapPut("value", renderer.render());
-        }
-
-        getLinks().arrayAdd(link);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/bb79d33e/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/home/HomePageResourceServerside.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/home/HomePageResourceServerside.java b/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/home/HomePageResourceServerside.java
deleted file mode 100644
index 012b8f5..0000000
--- a/component/viewer/restfulobjects/impl/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/home/HomePageResourceServerside.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.restfulobjects.viewer.resources.home;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
-import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
-import org.apache.isis.viewer.restfulobjects.applib.RestfulResponse.HttpStatusCode;
-import org.apache.isis.viewer.restfulobjects.applib.homepage.HomePageResource;
-import org.apache.isis.viewer.restfulobjects.viewer.RestfulObjectsApplicationException;
-import org.apache.isis.viewer.restfulobjects.viewer.representations.RendererFactory;
-import org.apache.isis.viewer.restfulobjects.viewer.resources.ResourceAbstract;
-
-/**
- * Implementation note: it seems to be necessary to annotate the implementation
- * with {@link Path} rather than the interface (at least under RestEasy 1.0.2
- * and 1.1-RC2).
- */
-public class HomePageResourceServerside extends ResourceAbstract implements HomePageResource {
-
-    @Override
-    @Produces({ RestfulMediaType.APPLICATION_JSON_HOME_PAGE })
-    public Response homePage() {
-        final RepresentationType representationType = RepresentationType.HOME_PAGE;
-        init(representationType, Where.NOWHERE);
-
-        final RendererFactory factory = rendererFactoryRegistry.find(representationType);
-        final HomePageReprRenderer renderer = (HomePageReprRenderer) factory.newRenderer(getResourceContext(), null, JsonRepresentation.newMap());
-        renderer.includesSelf();
-
-        return responseOfOk(renderer, Caching.ONE_DAY).build();
-    }
-
-    @Override
-    @GET
-    @Path("/notAuthenticated")
-    @Produces({ MediaType.APPLICATION_JSON })
-    public Response notAuthenticated() {
-
-        throw RestfulObjectsApplicationException.create(HttpStatusCode.UNAUTHORIZED);
-    }
-
-}
\ No newline at end of file