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 2015/09/03 14:32:11 UTC

[20/87] [abbrv] [partial] isis git commit: ISIS-1194: moving the wicket submodules to be direct children of core; removing the isis-viewer-wicket parent pom.

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
deleted file mode 100644
index 219c379..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
+++ /dev/null
@@ -1,102 +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.wicket.viewer;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.name.Names;
-import com.google.inject.util.Providers;
-
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.applib.services.email.EmailService;
-import org.apache.isis.applib.services.userreg.EmailNotificationService;
-import org.apache.isis.core.runtime.services.email.EmailServiceDefault;
-import org.apache.isis.core.runtime.services.userreg.EmailNotificationServiceDefault;
-import org.apache.isis.core.runtime.systemusinginstallers.IsisSystemThatUsesInstallersFactory;
-import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.EmailVerificationUrlService;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
-import org.apache.isis.viewer.wicket.ui.pages.accmngt.EmailVerificationUrlServiceDefault;
-import org.apache.isis.viewer.wicket.viewer.imagecache.ImageResourceCacheClassPath;
-import org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistrarDefault;
-import org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault;
-import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassListDefault;
-import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassRegistryDefault;
-import org.apache.isis.viewer.wicket.viewer.registries.pages.PageNavigationServiceDefault;
-import org.apache.isis.viewer.wicket.viewer.settings.WicketViewerSettingsDefault;
-
-/**
- * To override
- * 
- * <pre>
- * final Module isisDefaults = new IsisWicketModule();
- *
- * final Module myAppOverrides = new AbstractModule() {
- *     @Override
- *     protected void configure() {
- *         bind(ComponentFactoryRegistrar.class).to(ComponentFactoryRegistrarForMyApp.class);
- *         bind(PageClassList.class).to(PageClassListForMyApp.class);
- *         ...  
- *         bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("My App");
- *         bind(String.class).annotatedWith(Names.named("brandLogoHeader")).toInstance("/images/myapp-logo-header.png");
- *         bind(String.class).annotatedWith(Names.named("brandLogoSignin")).toInstance("/images/myapp-logo-signin.png");
- *         bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css");
- *         bind(String.class).annotatedWith(Names.named("applicationJs")).toInstance("scripts/application.js");
- *         bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance("Hello, welcome to my app");
- *         bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("MyApp v1.0.0");
- *         bind(AppManifest.class).toInstance(new MyAppManifest());
- *      }
- *  };
- * final Module overridden = Modules.override(isisDefaults).with(myAppOverrides);
- * </pre>
- */
-public class IsisWicketModule extends AbstractModule {
-
-    @Override
-    protected void configure() {
-        bind(ComponentFactoryRegistry.class).to(ComponentFactoryRegistryDefault.class);
-        bind(PageClassRegistry.class).to(PageClassRegistryDefault.class);
-        bind(EmailVerificationUrlService.class).to(EmailVerificationUrlServiceDefault.class);
-        bind(PageNavigationService.class).to(PageNavigationServiceDefault.class);
-        bind(PageClassList.class).to(PageClassListDefault.class);
-        bind(ComponentFactoryRegistrar.class).to(ComponentFactoryRegistrarDefault.class);
-        bind(ImageResourceCache.class).to(ImageResourceCacheClassPath.class);
-        bind(WicketViewerSettings.class).to(WicketViewerSettingsDefault.class);
-
-        // these services need to be bound because they injected directly into
-        // Wicket panels outside of the Isis runtime.
-        bind(EmailService.class)
-                .to(EmailServiceDefault.class);
-        bind(EmailNotificationService.class)
-                .to(EmailNotificationServiceDefault.class);
-
-        bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Apache Isis Wicket Viewer");
-        bind(String.class).annotatedWith(Names.named("applicationCss")).toProvider(Providers.of((String) null));
-        bind(String.class).annotatedWith(Names.named("applicationJs")).toProvider(Providers.of((String)null));
-        bind(String.class).annotatedWith(Names.named("welcomeMessage")).toProvider(Providers.of((String)null));
-        bind(String.class).annotatedWith(Names.named("aboutMessage")).toProvider(Providers.of((String)null));
-
-        bind(AppManifest.class).toInstance(IsisSystemThatUsesInstallersFactory.NOOP);
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
deleted file mode 100644
index 45b9948..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
+++ /dev/null
@@ -1,110 +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.wicket.viewer.imagecache;
-
-import images.Images;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import com.google.common.collect.Maps;
-import com.google.inject.Singleton;
-import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
-
-/**
- * Caches images loaded up the <tt>images</tt> package (using the {@link Images}
- * class).
- * 
- * <p>
- * Searches for a fixed set of suffixes: {@link #IMAGE_SUFFICES}.
- */
-@Singleton
-public class ImageResourceCacheClassPath implements ImageResourceCache {
-
-    private static final long serialVersionUID = 1L;
-    
-    private static final List<String> IMAGE_SUFFICES = Arrays.asList("png", "gif", "jpeg", "jpg");
-    private static final String FALLBACK_IMAGE = "Default.png";
-
-    private final Map<ImageResourceCacheKey, ResourceReference> resourceReferenceByKey = Maps.newConcurrentMap();
-    private final PackageResourceReference fallbackResource;
-
-    public ImageResourceCacheClassPath() {
-        fallbackResource = new PackageResourceReference(Images.class, FALLBACK_IMAGE);
-        resourceReferenceByKey.put(new ImageResourceCacheKey(null, null), fallbackResource);
-    }
-
-    @Override
-    public ResourceReference resourceReferenceFor(final ObjectAdapter adapter) {
-        return resourceReferenceFor(adapter.getSpecification(), adapter.getIconName());
-    }
-
-    @Override
-    public ResourceReference resourceReferenceForSpec(final ObjectSpecification spec) {
-        return resourceReferenceFor(spec, null);
-    }
-
-    private ResourceReference resourceReferenceFor(
-            final ObjectSpecification specification,
-            final String iconNameIfAny) {
-
-        final Class<?> correspondingClassIfAny = specification != null? specification.getCorrespondingClass(): null;
-        final ImageResourceCacheKey key = new ImageResourceCacheKey(correspondingClassIfAny, iconNameIfAny);
-
-        ResourceReference resourceReference = resourceReferenceByKey.get(key);
-        if(resourceReference == null) {
-            resourceReference = findResourceReferenceFor(key);
-            resourceReferenceByKey.put(key, resourceReference);
-        }
-
-        return resourceReference;
-    }
-
-    protected ResourceReference findResourceReferenceFor(final ImageResourceCacheKey key) {
-        final List<ImageResourceCacheKey> keys = key.resourcePaths(IMAGE_SUFFICES);
-        for (ImageResourceCacheKey resourceKey : keys) {
-            Class<?> resourceClass = resourceKey.getResourceClass();
-            if(resourceClass == null) {
-                resourceClass = Images.class;
-            }
-            final String iconName = resourceKey.getResourceName();
-
-            final InputStream resourceAsStream = resourceClass.getResourceAsStream(iconName);
-            if (resourceAsStream != null) {
-                closeSafely(resourceAsStream);
-                return new PackageResourceReference(resourceClass, iconName);
-            }
-        }
-        return fallbackResource;
-    }
-
-    private static void closeSafely(InputStream resourceAsStream) {
-        try {
-            resourceAsStream.close();
-        } catch (IOException e) {
-            // ignore
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheKey.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheKey.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheKey.java
deleted file mode 100644
index 68a1ff0..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheKey.java
+++ /dev/null
@@ -1,193 +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.wicket.viewer.imagecache;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import com.google.common.collect.Lists;
-import org.apache.isis.core.commons.lang.ClassUtil;
-
-final class ImageResourceCacheKey implements Serializable {
-
-    ImageResourceCacheKey(
-            final Class<?> resourceClass,
-            final String resourceName) {
-        this.resourceName = resourceName;
-        this.resourceClass = resourceClass;
-        this.toString = calcToString();
-    }
-
-    //region > getResourceClass, getResourceName
-
-    private final Class<?> resourceClass;
-    private final String resourceName;
-
-    public final Class<?> getResourceClass() {
-        return resourceClass;
-    }
-
-    public final String getResourceName() {
-        return resourceName;
-    }
-    //endregion
-
-    //region > superKey
-
-    ImageResourceCacheKey superKey() {
-        if(resourceClass == null) {
-            return null;
-        }
-        final Class<?> superclass = resourceClass.getSuperclass();
-        if(superclass == Object.class) {
-            return null;
-        }
-        return new ImageResourceCacheKey(superclass, resourceName);
-    }
-
-    //endregion
-
-    //region > resourcePaths
-
-    List<ImageResourceCacheKey> resourcePaths(final String... suffices) {
-        return resourcePaths(Arrays.asList(suffices));
-    }
-
-    List<ImageResourceCacheKey> resourcePaths(final List<String> suffices) {
-
-        ImageResourceCacheKey key;
-        final List<ImageResourceCacheKey> resourcePaths = Lists.newArrayList();
-
-
-        boolean generated = false;
-
-        if(resourceName != null) {
-
-            final Class<?> resourceClass = ClassUtil.forNameElseNull(resourceName);
-
-            if(resourceClass != null) {
-                for (String suffix : suffices) {
-                    resourcePaths.add(new ImageResourceCacheKey(resourceClass, resourceClass.getSimpleName() + "." + suffix));
-                }
-                generated = true;
-            }
-        }
-
-        if(!generated && resourceClass != null) {
-            // with the iconName
-            if(resourceName != null) {
-                key = this;
-                do {
-                    for (String suffix : suffices) {
-                        resourcePaths.add(new ImageResourceCacheKey(key.getResourceClass(), key.getResourceClass().getSimpleName() + "-" + resourceName + "." + suffix));
-                    }
-                    for (String suffix : suffices) {
-                        resourcePaths.add(new ImageResourceCacheKey(key.getResourceClass(), resourceName + "." + suffix));
-                    }
-                } while ((key = key.superKey()) != null);
-                key = this;
-                do {
-                    for (String suffix : suffices) {
-                        resourcePaths.add(new ImageResourceCacheKey(null, key.getResourceClass().getSimpleName() + "-" + resourceName + "." + suffix));
-                    }
-                } while ((key = key.superKey()) != null);
-                for (String suffix : suffices) {
-                    resourcePaths.add(new ImageResourceCacheKey(null, resourceName + "." + suffix));
-                }
-            }
-
-            // without the iconName
-            key = this;
-            do {
-                for (String suffix : suffices) {
-                    resourcePaths.add(new ImageResourceCacheKey(key.getResourceClass(), key.getResourceClass().getSimpleName() + "." + suffix));
-                }
-            } while ((key = key.superKey()) != null);
-            key = this;
-            do {
-                for (String suffix : suffices) {
-                    resourcePaths.add(new ImageResourceCacheKey(null, key.getResourceClass().getSimpleName() + "." + suffix));
-                }
-            } while ((key = key.superKey()) != null);
-
-            generated = true;
-        }
-
-        if(!generated && resourceName != null) {
-
-            for (String suffix : suffices) {
-                resourcePaths.add(new ImageResourceCacheKey(null, resourceName + "." + suffix));
-            }
-
-        }
-
-        // fallback
-        for (String suffix : suffices) {
-            resourcePaths.add(new ImageResourceCacheKey(null, "Default" + "." + suffix));
-        }
-
-
-        return Collections.unmodifiableList(resourcePaths);
-    }
-
-    //endregion
-
-    //region > equals, hashCode
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        ImageResourceCacheKey key = (ImageResourceCacheKey) o;
-        if (toString != null ? !toString.equals(key.toString) : key.toString != null) return false;
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return toString != null ? toString.hashCode() : 0;
-    }
-
-    //endregion
-
-    //region > toString
-
-    private final String toString;
-
-    @Override
-    public String toString() {
-        return toString;
-    }
-
-    private String calcToString() {
-        final StringBuilder buf = new StringBuilder();
-        if(resourceClass != null) {
-            buf.append(resourceClass.getName()).append("/").append(resourceClass.getSimpleName());
-        }
-        if(buf.length() > 0) {
-            buf.append("-");
-        }
-        if(resourceName != null) {
-            buf.append(resourceName);
-        }
-        return buf.toString();
-    }
-    //endregion
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
deleted file mode 100644
index cfca7c6..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
+++ /dev/null
@@ -1,37 +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.wicket.viewer.integration.isis;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.ContextCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-
-/**
- * Simple adapter for Isis' {@link DeploymentType} class, specifying that the
- * {@link ContextCategory#THREADLOCAL} is used as the
- * {@link ContextCategory}.
- */
-public abstract class DeploymentTypeAbstract extends DeploymentType {
-
-    public DeploymentTypeAbstract(final String name, final DeploymentCategory category) {
-        super(name, category, ContextCategory.THREADLOCAL);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeWicketAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeWicketAbstract.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeWicketAbstract.java
deleted file mode 100644
index dcefd4c..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeWicketAbstract.java
+++ /dev/null
@@ -1,49 +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.wicket.viewer.integration.isis;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.RuntimeConfigurationType;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-
-/**
- * {@link DeploymentType} for production usage.
- * 
- * <p>
- * In {@link IsisWicketApplication} there is logic to select either this 
- * {@link DeploymentType} or {@link WicketServerPrototype} depending on the 
- * value of Wicket's own {@link Application#getConfigurationType() configuration mode}. 
- */
-public class DeploymentTypeWicketAbstract extends DeploymentTypeAbstract {
-
-    public DeploymentTypeWicketAbstract(
-            final String name, final DeploymentCategory deploymentCategory) {
-        super(name, deploymentCategory);
-    }
-
-    public RuntimeConfigurationType getConfigurationType() {
-        return getDeploymentCategory().isProduction()? RuntimeConfigurationType.DEPLOYMENT: RuntimeConfigurationType.DEVELOPMENT;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
deleted file mode 100644
index da1cf7a..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.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.wicket.viewer.integration.isis;
-
-import org.apache.wicket.Application;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-
-/**
- * {@link DeploymentType} for production usage.
- * 
- * <p>
- * In {@link IsisWicketApplication} there is logic to select either this 
- * {@link DeploymentType} or {@link WicketServerPrototype} depending on the value 
- * of Wicket's own {@link Application#getConfigurationType() configuration mode}. 
- */
-public class WicketServer extends DeploymentTypeWicketAbstract {
-
-    public WicketServer() {
-        super("WICKET_SERVER", DeploymentCategory.PRODUCTION);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
deleted file mode 100644
index 5878c5d..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
+++ /dev/null
@@ -1,40 +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.wicket.viewer.integration.isis;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-
-/**
- * {@link DeploymentType} for prototype usage.
- * 
- * <p>
- * In {@link IsisWicketApplication} there is logic to select either this 
- * {@link DeploymentType} or {@link WicketServer} depending on the value of 
- * Wicket's own {@link org.apache.wicket.Application#getConfigurationType() configuration mode}.
- */
-public class WicketServerPrototype extends DeploymentTypeWicketAbstract {
-
-    public WicketServerPrototype() {
-        super("WICKET_SERVER_PROTOTYPE", DeploymentCategory.PROTOTYPING);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AnonymousWebSessionForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AnonymousWebSessionForIsis.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AnonymousWebSessionForIsis.java
deleted file mode 100644
index d5686e0..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AnonymousWebSessionForIsis.java
+++ /dev/null
@@ -1,46 +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.wicket.viewer.integration.wicket;
-
-import org.apache.wicket.Session;
-import org.apache.wicket.request.Request;
-
-import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-
-public class AnonymousWebSessionForIsis extends AuthenticatedWebSessionForIsis {
-
-    private static final long serialVersionUID = 1L;
-
-    public static AnonymousWebSessionForIsis get() {
-        return (AnonymousWebSessionForIsis) Session.get();
-    }
-
-    private final AuthenticationManager authenticationManager;
-
-    public AnonymousWebSessionForIsis(final Request request, final AuthenticationManager authenticationManager) {
-        super(request);
-        this.authenticationManager = authenticationManager;
-    }
-
-    @Override
-    protected AuthenticationManager getAuthenticationManager() {
-        return authenticationManager;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
deleted file mode 100644
index 05db776..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
+++ /dev/null
@@ -1,183 +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.wicket.viewer.integration.wicket;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.Callable;
-import org.apache.wicket.Session;
-import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
-import org.apache.wicket.authroles.authorization.strategies.role.Roles;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.isis.applib.clock.Clock;
-import org.apache.isis.applib.services.session.SessionLoggingService;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
-import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
-import org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
-import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
-import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
-import org.apache.isis.viewer.wicket.ui.pages.BookmarkedPagesModelProvider;
-
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
-import static org.hamcrest.Matchers.nullValue;
-
-/**
- * Viewer-specific implementation of {@link AuthenticatedWebSession}, which
- * delegates to the Isis' configured {@link AuthenticationManager}, and which
- * also tracks thread usage (so that multiple concurrent requests are all
- * associated with the same session).
- */
-public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession implements AuthenticationSessionProvider, BreadcrumbModelProvider, BookmarkedPagesModelProvider {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final String USER_ROLE = "org.apache.isis.viewer.wicket.roles.USER";
-
-    public static AuthenticatedWebSessionForIsis get() {
-        return (AuthenticatedWebSessionForIsis) Session.get();
-    }
-
-    private final BookmarkedPagesModel bookmarkedPagesModel = new BookmarkedPagesModel();
-    private final BreadcrumbModel breadcrumbModel = new BreadcrumbModel();
-    
-    private AuthenticationSession authenticationSession;
-
-    public AuthenticatedWebSessionForIsis(final Request request) {
-        super(Ensure.ensureThatArg(request, is(not(nullValue(Request.class)))));
-    }
-
-    @Override
-    public boolean authenticate(final String username, final String password) {
-        AuthenticationRequest authenticationRequest = new AuthenticationRequestPassword(username, password);
-        authenticationRequest.setRoles(Arrays.asList(USER_ROLE));
-        authenticationSession = getAuthenticationManager().authenticate(authenticationRequest);
-        if (authenticationSession != null) {
-            log(SessionLoggingService.Type.LOGIN, username, null);
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    @Override
-    public void onInvalidate() {
-        super.onInvalidate();
-
-        SessionLoggingService.CausedBy causedBy = RequestCycle.get() != null
-                ? SessionLoggingService.CausedBy.USER
-                : SessionLoggingService.CausedBy.SESSION_EXPIRATION;
-
-        String userName = null;
-        if (authenticationSession != null) {
-            userName = authenticationSession.getUserName();
-        }
-
-        log(SessionLoggingService.Type.LOGOUT, userName, causedBy);
-    }
-
-    @Override
-    public AuthenticationSession getAuthenticationSession() {
-        return authenticationSession;
-    }
-
-    @Override
-    public Roles getRoles() {
-        if (!isSignedIn()) {
-            return null;
-        }
-        final List<String> roles = authenticationSession.getRoles();
-        return new Roles(roles.toArray(new String[roles.size()]));
-    }
-    
-    // /////////////////////////////////////////////////
-    // Breadcrumbs and Bookmarks support
-    // /////////////////////////////////////////////////
-
-    @Override
-    public BreadcrumbModel getBreadcrumbModel() {
-        return breadcrumbModel;
-    }
-
-    @Override
-    public BookmarkedPagesModel getBookmarkedPagesModel() {
-        return bookmarkedPagesModel;
-    }
-
-
-    // /////////////////////////////////////////////////
-    // Dependencies
-    // /////////////////////////////////////////////////
-
-    protected AuthenticationManager getAuthenticationManager() {
-        return IsisContext.getAuthenticationManager();
-    }
-
-    // /////////////////////////////////////////////////
-    // *Provider impl.
-    // /////////////////////////////////////////////////
-    
-    @Override
-    public void injectInto(final Object candidate) {
-        if (AuthenticationSessionProviderAware.class.isAssignableFrom(candidate.getClass())) {
-            final AuthenticationSessionProviderAware cast = AuthenticationSessionProviderAware.class.cast(candidate);
-            cast.setAuthenticationSessionProvider(this);
-        }
-    }
-
-    private void log(
-            final SessionLoggingService.Type type,
-            final String username,
-            final SessionLoggingService.CausedBy causedBy) {
-        final SessionLoggingService sessionLoggingService = getSessionLoggingService();
-        if (sessionLoggingService != null) {
-            IsisContext.doInSession(new Runnable() {
-                @Override
-                public void run() {
-                    // use hashcode as session identifier, to avoid re-binding http sessions if using Session#getId()
-                    int sessionHashCode = System.identityHashCode(AuthenticatedWebSessionForIsis.this);
-                    sessionLoggingService.log(type, username, Clock.getTimeAsDateTime().toDate(), causedBy, Integer.toString(sessionHashCode));
-                }
-            });
-        }
-    }
-
-    protected SessionLoggingService getSessionLoggingService() {
-        return IsisContext.doInSession(new Callable<SessionLoggingService>() {
-            @Override
-            public SessionLoggingService call() throws Exception {
-                return IsisContext.getPersistenceSession().getServicesInjector().lookupService(SessionLoggingService.class);
-            }
-        });
-    }
-
-    @Override
-    public void replaceSession() {
-        // do nothing here because this will lead to problems with Shiro
-        // see https://issues.apache.org/jira/browse/ISIS-1018
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
deleted file mode 100644
index 940a1ef..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.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.wicket.viewer.integration.wicket;
-
-import java.util.Locale;
-
-import org.apache.wicket.util.convert.IConverter;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-/**
- * Implementation of a Wicket {@link IConverter} for {@link ObjectAdapter}s,
- * converting to-and-from their {@link Oid}'s string representation.
- */
-public class ConverterForObjectAdapter implements IConverter<ObjectAdapter> {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Converts string representation of {@link Oid} to
-     * {@link ObjectAdapter}.
-     */
-    @Override
-    public ObjectAdapter convertToObject(final String value, final Locale locale) {
-        final Oid oid = RootOidDefault.deStringEncoded(value, getOidMarshaller());
-        return getAdapterManager().getAdapterFor(oid);
-    }
-
-    /**
-     * Converts {@link ObjectAdapter} to string representation of {@link Oid}.
-     */
-    @Override
-    public String convertToString(final ObjectAdapter adapter, final Locale locale) {
-        final Oid oid = adapter.getOid();
-        if (oid == null) {
-            // values don't have an Oid
-            return null;
-        }
-        
-        return oid.enString(getOidMarshaller());
-    }
-    
-
-
-    // //////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    // //////////////////////////////////////////////////////////
-
-    protected AdapterManager getAdapterManager() {
-        return IsisContext.getPersistenceSession().getAdapterManager();
-    }
-
-    protected OidMarshaller getOidMarshaller() {
-        return IsisContext.getOidMarshaller();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
deleted file mode 100644
index 7de6544..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
+++ /dev/null
@@ -1,98 +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.wicket.viewer.integration.wicket;
-
-import java.util.Locale;
-
-import com.google.common.base.Strings;
-
-import org.apache.wicket.util.convert.IConverter;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-
-/**
- * Implementation of a Wicket {@link IConverter} for
- * {@link ObjectAdapterMemento}s, converting to-and-from their {@link Oid}'s
- * string representation.
- */
-public class ConverterForObjectAdapterMemento implements IConverter<ObjectAdapterMemento> {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Converts string representation of {@link Oid} to
-     * {@link ObjectAdapterMemento}.
-     */
-    @Override
-    public ObjectAdapterMemento convertToObject(final String value, final Locale locale) {
-        if (Strings.isNullOrEmpty(value)) {
-            return null;
-        }
-        final Oid oid = RootOidDefault.deStringEncoded(value, getOidMarshaller());
-        final ObjectAdapter adapter = getAdapterManager().getAdapterFor(oid);
-        return ObjectAdapterMemento.createOrNull(adapter);
-    }
-
-    /**
-     * Converts {@link ObjectAdapterMemento} to string representation of
-     * {@link RootOid}.
-     */
-    @Override
-    public String convertToString(final ObjectAdapterMemento memento, final Locale locale) {
-        if (memento == null) {
-            return null;
-        }
-        final Oid oid = memento.getObjectAdapter(ConcurrencyChecking.NO_CHECK).getOid();
-        if (oid == null) {
-            // values don't have an Oid...
-            // REVIEW: is this right?
-            return memento.toString();
-        }
-        return oid.enString(getOidMarshaller());
-    }
-    
-
-
-    // //////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    // //////////////////////////////////////////////////////////
-
-    protected AdapterManager getAdapterManager() {
-        return getPersistenceSession().getAdapterManager();
-    }
-
-    protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    protected OidMarshaller getOidMarshaller() {
-        return IsisContext.getOidMarshaller();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
deleted file mode 100644
index 098efde..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
+++ /dev/null
@@ -1,274 +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.wicket.viewer.integration.wicket;
-
-import java.lang.reflect.Constructor;
-import java.util.List;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Lists;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.IPageFactory;
-import org.apache.wicket.Page;
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.Session;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
-import org.apache.wicket.core.request.handler.PageProvider;
-import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
-import org.apache.wicket.core.request.handler.RenderPageRequestHandler.RedirectPolicy;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.protocol.http.PageExpiredException;
-import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.component.IRequestablePage;
-import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerForType;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.session.IsisSession;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.viewer.wicket.model.models.PageType;
-import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.error.ErrorPage;
-import org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage;
-import org.apache.isis.viewer.wicket.ui.pages.mmverror.MmvErrorPage;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-
-/**
- * Isis-specific implementation of the Wicket's {@link RequestCycle},
- * automatically opening a {@link IsisSession} at the beginning of the request
- * and committing the transaction and closing the session at the end.
- */
-public class WebRequestCycleForIsis extends AbstractRequestCycleListener {
-
-    private static final Logger LOG = LoggerFactory.getLogger(WebRequestCycleForIsis.class);
-
-    private PageClassRegistry pageClassRegistry;
-
-    @Override
-    public synchronized void onBeginRequest(RequestCycle requestCycle) {
-        
-        if (!Session.exists()) {
-            return;
-        }
-        final AuthenticatedWebSessionForIsis wicketSession = AuthenticatedWebSessionForIsis.get();
-        final AuthenticationSession authenticationSession = wicketSession.getAuthenticationSession();
-        if (authenticationSession == null) {
-            return;
-        }
-
-        getIsisContext().openSessionInstance(authenticationSession);
-        getTransactionManager().startTransaction();
-    }
-
-    
-    /**
-     * Is called prior to {@link #onEndRequest(RequestCycle)}, and offers the opportunity to
-     * throw an exception.
-     */
-    @Override
-    public void onRequestHandlerExecuted(RequestCycle cycle, IRequestHandler handler) {
-        if(LOG.isDebugEnabled()) {
-            LOG.debug("onRequestHandlerExecuted: handler: " + handler);
-        }
-        
-        final IsisSession session = getIsisContext().getSessionInstance();
-        if (session != null) {
-            try {
-                // will commit (or abort) the transaction;
-                // an abort will cause the exception to be thrown.
-                getTransactionManager().endTransaction();
-            } catch(Exception ex) {
-                // will redirect to error page after this, 
-                // so make sure there is a new transaction ready to go.
-                if(getTransactionManager().getTransaction().getState().isComplete()) {
-                    getTransactionManager().startTransaction();
-                }
-                if(handler instanceof RenderPageRequestHandler) {
-                    RenderPageRequestHandler requestHandler = (RenderPageRequestHandler) handler;
-                    if(requestHandler.getPage() instanceof ErrorPage) {
-                        // do nothing
-                        return;
-                    }
-                }
-                
-                // shouldn't return null given that we're in a session ...
-                PageProvider errorPageProvider = errorPageProviderFor(ex);
-                throw new RestartResponseException(errorPageProvider, RedirectPolicy.ALWAYS_REDIRECT);
-            }
-        }
-    }
-
-    /**
-     * It is not possible to throw exceptions here, hence use of {@link #onRequestHandlerExecuted(RequestCycle, IRequestHandler)}.
-     */
-    @Override
-    public synchronized void onEndRequest(RequestCycle cycle) {
-        final IsisSession session = getIsisContext().getSessionInstance();
-        if (session != null) {
-            try {
-                // belt and braces
-                getTransactionManager().endTransaction();
-            } finally {
-                getIsisContext().closeSessionInstance();
-            }
-        }
-    }
-
-
-    @Override
-    public IRequestHandler onException(RequestCycle cycle, Exception ex) {
-        PageProvider errorPageProvider = errorPageProviderFor(ex);
-        // avoid infinite redirect loops
-        RedirectPolicy redirectPolicy = ex instanceof PageExpiredException? RedirectPolicy.NEVER_REDIRECT: RedirectPolicy.ALWAYS_REDIRECT;
-        return errorPageProvider != null 
-                ? new RenderPageRequestHandler(errorPageProvider, redirectPolicy)
-                : null;
-    }
-
-    protected PageProvider errorPageProviderFor(Exception ex) {
-        IRequestablePage errorPage = errorPageFor(ex);
-        return errorPage != null? new PageProvider(errorPage): null;
-    }
-
-    // special case handling for PageExpiredException, otherwise infinite loop
-    private final static ExceptionRecognizerForType pageExpiredExceptionRecognizer = 
-            new ExceptionRecognizerForType(PageExpiredException.class, new Function<String,String>(){
-                @Override
-                public String apply(String input) {
-                    return "Requested page is no longer available. Please navigate back to the home page or select an object from the bookmark bar.";
-                }
-            });
-
-    protected IRequestablePage errorPageFor(Exception ex) {
-        List<ExceptionRecognizer> exceptionRecognizers = Lists.newArrayList();
-        exceptionRecognizers.add(pageExpiredExceptionRecognizer);
-
-        if(inIsisSession()) {
-            exceptionRecognizers.addAll(getServicesInjector().lookupServices(ExceptionRecognizer.class));
-        } else {
-            List<String> validationErrors = IsisWicketApplication.get().getValidationErrors();
-            if(!validationErrors.isEmpty()) {
-                return new MmvErrorPage(Model.ofList(validationErrors));
-            }
-            // not sure whether this can ever happen now...
-            LOG.warn("Unable to obtain exceptionRecognizers (no session), will be treated as unrecognized exception");
-        }
-        String recognizedMessageIfAny = new ExceptionRecognizerComposite(exceptionRecognizers).recognize(ex);
-        ExceptionModel exceptionModel = ExceptionModel.create(recognizedMessageIfAny, ex);
-        
-        return isSignedIn() ? new ErrorPage(exceptionModel) : newSignInPage(exceptionModel);
-    }
-
-    /**
-     * Tries to instantiate the configured {@link PageType#SIGN_IN signin page} with the given exception model
-     *
-     * @param exceptionModel A model bringing the information about the occurred problem
-     * @return An instance of the configured signin page
-     */
-    private IRequestablePage newSignInPage(final ExceptionModel exceptionModel) {
-        Class<? extends Page> signInPageClass = null;
-        if (pageClassRegistry != null) {
-            signInPageClass = pageClassRegistry.getPageClass(PageType.SIGN_IN);
-        }
-        if (signInPageClass == null) {
-            signInPageClass = WicketSignInPage.class;
-        }
-        final PageParameters parameters = new PageParameters();
-        Page signInPage;
-        try {
-            Constructor<? extends Page> constructor = signInPageClass.getConstructor(PageParameters.class, ExceptionModel.class);
-            signInPage = constructor.newInstance(parameters, exceptionModel);
-        } catch (Exception _) {
-            try {
-                IPageFactory pageFactory = Application.get().getPageFactory();
-                signInPage = pageFactory.newPage(signInPageClass, parameters);
-            } catch (Exception x) {
-                throw new WicketRuntimeException("Cannot instantiate the configured sign in page", x);
-            }
-        }
-        return signInPage;
-    }
-
-    /**
-     * TODO: this is very hacky...
-     * 
-     * <p>
-     * Matters should improve once ISIS-299 gets implemented...
-     */
-    protected boolean isSignedIn() {
-        if(!inIsisSession()) {
-            return false;
-        }
-        if(getAuthenticationSession() == null) {
-            return false;
-        }
-        return getWicketAuthenticationSession().isSignedIn();
-    }
-
-
-    public void setPageClassRegistry(PageClassRegistry pageClassRegistry) {
-        this.pageClassRegistry = pageClassRegistry;
-    }
-    
-    ///////////////////////////////////////////////////////////////
-    // Dependencies (from isis' context)
-    ///////////////////////////////////////////////////////////////
-    
-    protected ServicesInjector getServicesInjector() {
-        return IsisContext.getPersistenceSession().getServicesInjector();
-    }
-    
-    protected IsisContext getIsisContext() {
-        return IsisContext.getInstance();
-    }
-
-    protected IsisTransactionManager getTransactionManager() {
-        return IsisContext.getTransactionManager();
-    }
-
-    protected boolean inIsisSession() {
-        return IsisContext.inSession();
-    }
-
-    protected AuthenticationSession getAuthenticationSession() {
-        return IsisContext.getAuthenticationSession();
-    }
-
-    ///////////////////////////////////////////////////////////////
-    // Dependencies (from wicket)
-    ///////////////////////////////////////////////////////////////
-
-    
-    protected AuthenticatedWebSession getWicketAuthenticationSession() {
-        return AuthenticatedWebSession.get();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
deleted file mode 100644
index 479b474..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
+++ /dev/null
@@ -1,267 +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.wicket.viewer.registries.components;
-
-import java.util.ServiceLoader;
-import com.google.inject.Singleton;
-import org.apache.isis.viewer.wicket.ui.ComponentFactory;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
-import org.apache.isis.viewer.wicket.ui.components.about.AboutPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actionlink.ActionLinkPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actionmenu.serviceactions.TertiaryMenuPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actions.ActionInfoPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actions.ActionPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actions.ActionParametersFormPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actionmenu.serviceactions.ServiceActionsPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.bookmarkedpages.BookmarkedPagesPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collection.CollectionPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.CollectionContentsAsAjaxTablePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collectioncontents.multiple.CollectionContentsMultipleViewsPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collectioncontents.summary.CollectionContentsAsSummaryFactory;
-import org.apache.isis.viewer.wicket.ui.components.collectioncontents.unresolved.CollectionContentsAsUnresolvedPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.empty.EmptyCollectionPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.collections.EntityCollectionsPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.combined.EntityCombinedPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.header.EntityHeaderPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.icontitle.EntityIconAndTitlePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.icontitle.EntityIconTitleAndCopyLinkPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.properties.EntityPropertiesPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.selector.links.EntityLinksSelectorPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.footer.FooterPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.header.HeaderPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.*;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlDatePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlTimestampPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaUtilDatePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath.JavaMathBigDecimalPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath.JavaMathBigIntegerPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaDateTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDatePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDateTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.*;
-import org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.string.StringPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.value.ValuePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.standalonecollection.StandaloneCollectionPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.unknown.UnknownModelPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.value.StandaloneValuePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.voidreturn.VoidReturnPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.welcome.WelcomePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.widgets.entitysimplelink.EntityLinkSimplePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.widgets.valuechoices.ValueChoicesSelect2PanelFactory;
-
-/**
- * Default implementation of {@link ComponentFactoryRegistrar} that registers a
- * hardcoded set of built-in {@link ComponentFactory}s, along with any
- * implementations loaded using {@link ServiceLoader} (ie from
- * <tt>META-INF/services</tt>).
- */
-@Singleton
-public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistrar {
-
-    @Override
-    public void addComponentFactories(final ComponentFactoryList componentFactories) {
-
-        addComponentFactoriesActingAsSelectors(componentFactories);
-        
-        addComponentFactoriesUsingServiceLoader(componentFactories);
-
-        addBuiltInComponentFactories(componentFactories);
-    }
-
-    /**
-     * Any {@link ComponentFactory}s that act as selectors of other factories
-     * should be registered here; they will be loaded first, to ensure that they
-     * are found first.
-     */
-    protected void addComponentFactoriesActingAsSelectors(final ComponentFactoryList componentFactories) {
-        addLinksSelectorFactories(componentFactories);
-        componentFactories.add(new CollectionContentsAsUnresolvedPanelFactory()); // to prevent eager loading
-    }
-
-    protected void addLinksSelectorFactories(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new EntityLinksSelectorPanelFactory());
-        componentFactories.add(new CollectionContentsMultipleViewsPanelFactory());
-    }
-
-    protected void addComponentFactoriesUsingServiceLoader(final ComponentFactoryList componentFactories) {
-        final ServiceLoader<ComponentFactory> serviceLoader = ServiceLoader.load(ComponentFactory.class);
-
-        for (final ComponentFactory componentFactory : serviceLoader) {
-            componentFactories.add(componentFactory);
-        }
-    }
-
-    private void addBuiltInComponentFactories(final ComponentFactoryList componentFactories) {
-        addComponentFactoriesForWelcomeAndAbout(componentFactories);
-        addComponentFactoriesForApplicationActions(componentFactories);
-        addComponentFactoriesForEntity(componentFactories);
-        addComponentFactoriesForActionInfo(componentFactories);
-        addComponentFactoriesForAction(componentFactories);
-        addComponentFactoriesForActionLink(componentFactories);
-        addComponentFactoriesForEntityCollection(componentFactories);
-        addComponentFactoriesForEntityCollectionContents(componentFactories);
-        addComponentFactoriesForEmptyCollection(componentFactories);
-        addComponentFactoriesForScalar(componentFactories);
-        addComponentFactoriesForEntityLink(componentFactories);
-        addComponentFactoriesForVoidReturn(componentFactories);
-        addComponentFactoriesForValue(componentFactories);
-        addComponentFactoriesForParameters(componentFactories);
-        addComponentFactoriesForBreadcrumbs(componentFactories);
-        addComponentFactoriesForPageHeader(componentFactories);
-        addComponentFactoriesForPageFooter(componentFactories);
-        
-        addComponentFactoriesForUnknown(componentFactories);
-    }
-
-    protected void addComponentFactoriesForPageHeader(ComponentFactoryList componentFactories) {
-        componentFactories.add(new HeaderPanelFactory());
-    }
-
-    protected void addComponentFactoriesForPageFooter(ComponentFactoryList componentFactories) {
-        componentFactories.add(new FooterPanelFactory());
-    }
-
-    protected void addComponentFactoriesForWelcomeAndAbout(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new WelcomePanelFactory());
-        componentFactories.add(new AboutPanelFactory());
-    }
-
-    protected void addComponentFactoriesForEntity(final ComponentFactoryList componentFactories) {
-
-        // top-level
-        componentFactories.add(new EntityCombinedPanelFactory());
-        
-        // lower-level
-        componentFactories.add(new EntityIconAndTitlePanelFactory());
-        componentFactories.add(new EntityIconTitleAndCopyLinkPanelFactory());
-        componentFactories.add(new EntityHeaderPanelFactory());
-        componentFactories.add(new EntityPropertiesPanelFactory());
-        componentFactories.add(new EntityCollectionsPanelFactory());
-    }
-
-    protected void addComponentFactoriesForEntityCollectionContents(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new CollectionContentsAsAjaxTablePanelFactory());
-        
-        // // work-in-progress
-        // componentFactories.add(new CollectionContentsAsIconsPanelFactory());
-        
-        componentFactories.add(new CollectionContentsAsSummaryFactory());
-    }
-
-    protected void addComponentFactoriesForEntityCollection(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new CollectionPanelFactory());
-    }
-
-    protected void addComponentFactoriesForEmptyCollection(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new EmptyCollectionPanelFactory());
-    }
-
-    protected void addComponentFactoriesForValue(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new StandaloneValuePanelFactory());
-    }
-
-    protected void addComponentFactoriesForScalar(final ComponentFactoryList componentFactories) {
-
-        componentFactories.add(new ReferencePanelFactory());
-
-        componentFactories.add(new BooleanPanelFactory());
-        componentFactories.add(new BytePanelFactory());
-        componentFactories.add(new ShortPanelFactory());
-        componentFactories.add(new IntegerPanelFactory());
-        componentFactories.add(new LongPanelFactory());
-        componentFactories.add(new CharacterPanelFactory());
-        componentFactories.add(new FloatPanelFactory());
-        componentFactories.add(new DoublePanelFactory());
-
-        componentFactories.add(new StringPanelFactory());
-
-        // work-in-progress
-        // componentFactories.add(new JavaAwtImagePanelFactory()); 
-        componentFactories.add(new JavaUtilDatePanelFactory());
-        componentFactories.add(new JavaSqlTimestampPanelFactory());
-        componentFactories.add(new JavaSqlDatePanelFactory());
-        componentFactories.add(new JavaSqlTimePanelFactory());
-
-        componentFactories.add(new IsisMoneyPanelFactory());
-        componentFactories.add(new IsisDatePanelFactory());
-        componentFactories.add(new IsisDateTimePanelFactory());
-        componentFactories.add(new IsisTimePanelFactory());
-        componentFactories.add(new IsisTimeStampPanelFactory());
-        componentFactories.add(new IsisColorPanelFactory());
-        componentFactories.add(new IsisPercentagePanelFactory());
-        componentFactories.add(new IsisPasswordPanelFactory());
-
-        componentFactories.add(new IsisBlobPanelFactory()); 
-        componentFactories.add(new IsisClobPanelFactory()); 
-        
-        componentFactories.add(new JavaMathBigIntegerPanelFactory());
-        componentFactories.add(new JavaMathBigDecimalPanelFactory());
-
-        componentFactories.add(new JodaLocalDatePanelFactory());
-        componentFactories.add(new JodaLocalDateTimePanelFactory());
-        componentFactories.add(new JodaDateTimePanelFactory());
-
-        componentFactories.add(new ValuePanelFactory());
-
-        // or for choices
-        componentFactories.add(new ValueChoicesSelect2PanelFactory());
-    }
-
-    protected void addComponentFactoriesForEntityLink(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new EntityLinkSimplePanelFactory());
-    }
-
-    protected void addComponentFactoriesForVoidReturn(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new VoidReturnPanelFactory());
-    }
-
-    protected void addComponentFactoriesForActionInfo(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new ActionInfoPanelFactory());
-    }
-
-    protected void addComponentFactoriesForParameters(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new ActionParametersFormPanelFactory());
-    }
-
-    protected void addComponentFactoriesForAction(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new ActionPanelFactory());
-        componentFactories.add(new StandaloneCollectionPanelFactory());
-    }
-
-    protected void addComponentFactoriesForActionLink(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new ActionLinkPanelFactory());
-    }
-
-    protected void addComponentFactoriesForApplicationActions(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new ServiceActionsPanelFactory());
-        componentFactories.add(new TertiaryMenuPanelFactory());
-    }
-
-    protected void addComponentFactoriesForBreadcrumbs(ComponentFactoryList componentFactories) {
-        componentFactories.add(new BookmarkedPagesPanelFactory());
-    }
-
-    protected void addComponentFactoriesForUnknown(final ComponentFactoryList componentFactories) {
-        componentFactories.add(new UnknownModelPanelFactory());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
deleted file mode 100644
index 00f7a4d..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
+++ /dev/null
@@ -1,177 +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.wicket.viewer.registries.components;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multimaps;
-import com.google.inject.Singleton;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.model.IModel;
-
-import org.apache.isis.viewer.wicket.ui.ComponentFactory;
-import org.apache.isis.viewer.wicket.ui.ComponentFactory.ApplicationAdvice;
-import org.apache.isis.viewer.wicket.ui.ComponentType;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar.ComponentFactoryList;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-
-/**
- * Implementation of {@link ComponentFactoryRegistry} that delegates to a
- * provided {@link ComponentFactoryRegistrar}.
- */
-@Singleton
-public class ComponentFactoryRegistryDefault implements ComponentFactoryRegistry {
-
-    private final Multimap<ComponentType, ComponentFactory> componentFactoriesByType;
-
-    @Inject
-    public ComponentFactoryRegistryDefault(final ComponentFactoryRegistrar componentFactoryList) {
-        componentFactoriesByType = Multimaps.newListMultimap(new HashMap<ComponentType, Collection<ComponentFactory>>(), new Supplier<List<ComponentFactory>>() {
-            @Override
-            public List<ComponentFactory> get() {
-                return Lists.newArrayList();
-            }
-        });
-
-        registerComponentFactories(componentFactoryList);
-    }
-
-    // ///////////////////////////////////////////////////////
-    // Registration
-    // ///////////////////////////////////////////////////////
-
-    /**
-     * Registers the provided set of component factories.
-     */
-    protected void registerComponentFactories(final ComponentFactoryRegistrar componentFactoryRegistrar) {
-        
-        final ComponentFactoryList componentFactories = new ComponentFactoryList();
-        componentFactoryRegistrar.addComponentFactories(componentFactories);
-
-        for (final ComponentFactory componentFactory : componentFactories) {
-            registerComponentFactory(componentFactory);
-        }
-
-        ensureAllComponentTypesRegistered();
-    }
-
-    protected synchronized void registerComponentFactory(final ComponentFactory componentFactory) {
-        componentFactoriesByType.put(componentFactory.getComponentType(), componentFactory);
-    }
-
-    private void ensureAllComponentTypesRegistered() {
-        for (final ComponentType componentType : ComponentType.values()) {
-            final Collection<ComponentFactory> componentFactories = componentFactoriesByType.get(componentType);
-            if (componentFactories.isEmpty()) {
-                throw new IllegalStateException("No component factories registered for " + componentType);
-            }
-        }
-    }
-
-    // ///////////////////////////////////////////////////////
-    // Public API
-    // ///////////////////////////////////////////////////////
-
-    
-    @Override
-    public Component addOrReplaceComponent(final MarkupContainer markupContainer, final ComponentType componentType, final IModel<?> model) {
-        final Component component = createComponent(componentType, model);
-        markupContainer.addOrReplace(component);
-        return component;
-    }
-
-    @Override
-    public Component addOrReplaceComponent(final MarkupContainer markupContainer, final String id, final ComponentType componentType, final IModel<?> model) {
-        final Component component = createComponent(componentType, id, model);
-        markupContainer.addOrReplace(component);
-        return component;
-    }
-
-    @Override
-    public Component createComponent(final ComponentType componentType, final IModel<?> model) {
-        final ComponentFactory componentFactory = findComponentFactoryElseFailFast(componentType, model);
-        final Component component = componentFactory.createComponent(model);
-        return component;
-    }
-
-    @Override
-    public Component createComponent(final ComponentType componentType, final String id, final IModel<?> model) {
-        final ComponentFactory componentFactory = findComponentFactoryElseFailFast(componentType, model);
-        final Component component = componentFactory.createComponent(id, model);
-        return component;
-    }
-
-    @Override
-    public List<ComponentFactory> findComponentFactories(final ComponentType componentType, final IModel<?> model) {
-        final Collection<ComponentFactory> componentFactoryList = componentFactoriesByType.get(componentType);
-        final List<ComponentFactory> matching = Lists.newArrayList();
-        for (final ComponentFactory componentFactory : componentFactoryList) {
-            final ApplicationAdvice appliesTo = componentFactory.appliesTo(componentType, model);
-            if (appliesTo.applies()) {
-                matching.add(componentFactory);
-            }
-            if (appliesTo.exclusively()) {
-                break;
-            }
-        }
-        if (matching.isEmpty()) {
-            // will just be one
-            matching.addAll(componentFactoriesByType.get(ComponentType.UNKNOWN));
-        }
-        return matching;
-    }
-
-    @Override
-    public ComponentFactory findComponentFactory(final ComponentType componentType, final IModel<?> model) {
-        final Collection<ComponentFactory> componentFactories = findComponentFactories(componentType, model);
-        return firstOrNull(componentFactories);
-    }
-
-    @Override
-    public ComponentFactory findComponentFactoryElseFailFast(final ComponentType componentType, final IModel<?> model) {
-        final ComponentFactory componentFactory = findComponentFactory(componentType, model);
-        if (componentFactory == null) {
-            throw new RuntimeException(String.format("could not find component for componentType = '%s'; model object is of type %s", componentType, model.getClass().getName()));
-        }
-        return componentFactory;
-    }
-
-    private static <T> T firstOrNull(final Collection<T> collection) {
-        final Iterator<T> iterator = collection.iterator();
-        return iterator.hasNext() ? iterator.next() : null;
-    }
-
-    @Override
-    public Collection<ComponentFactory> listComponentFactories() {
-        return componentFactoriesByType.values();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
deleted file mode 100644
index 5d15946..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
+++ /dev/null
@@ -1,141 +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.wicket.viewer.registries.pages;
-
-import com.google.inject.Singleton;
-
-import org.apache.wicket.Page;
-
-import org.apache.isis.viewer.wicket.model.models.PageType;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistrySpi;
-import org.apache.isis.viewer.wicket.ui.pages.about.AboutPage;
-import org.apache.isis.viewer.wicket.ui.pages.actionprompt.ActionPromptPage;
-import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
-import org.apache.isis.viewer.wicket.ui.pages.home.HomePage;
-import org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage;
-import org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage;
-import org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage;
-import org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage;
-import org.apache.isis.viewer.wicket.ui.pages.standalonecollection.StandaloneCollectionPage;
-import org.apache.isis.viewer.wicket.ui.pages.value.ValuePage;
-import org.apache.isis.viewer.wicket.ui.pages.voidreturn.VoidReturnPage;
-
-/**
- * Default implementation of {@link PageClassList}, specifying the default pages
- * for each of the {@link PageType}s.
- */
-@Singleton
-public class PageClassListDefault implements PageClassList {
-
-    private static final long serialVersionUID = 1L;
-
-    @Override
-    public void registerPages(final PageClassRegistrySpi pageRegistry) {
-        pageRegistry.registerPage(PageType.SIGN_IN, getSignInPageClass());
-        pageRegistry.registerPage(PageType.SIGN_UP, getSignUpPageClass());
-        pageRegistry.registerPage(PageType.SIGN_UP_VERIFY, getSignUpVerifyPageClass());
-        pageRegistry.registerPage(PageType.PASSWORD_RESET, getPasswordResetPageClass());
-        pageRegistry.registerPage(PageType.ABOUT, getAboutPageClass());
-        pageRegistry.registerPage(PageType.ENTITY, getEntityPageClass());
-        pageRegistry.registerPage(PageType.HOME, getHomePageClass());
-        pageRegistry.registerPage(PageType.ACTION_PROMPT, getActionPromptPageClass());
-        pageRegistry.registerPage(PageType.STANDALONE_COLLECTION, getStandaloneCollectionPageClass());
-        pageRegistry.registerPage(PageType.VALUE, getValuePageClass());
-        pageRegistry.registerPage(PageType.VOID_RETURN, getVoidReturnPageClass());
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getActionPromptPageClass() {
-        return ActionPromptPage.class;
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getEntityPageClass() {
-        return EntityPage.class;
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getStandaloneCollectionPageClass() {
-        return StandaloneCollectionPage.class;
-    }
-    
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getValuePageClass() {
-        return ValuePage.class;
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getVoidReturnPageClass() {
-        return VoidReturnPage.class;
-    }
-    
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getSignInPageClass() {
-        return WicketSignInPage.class;
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getSignUpPageClass() {
-        return RegistrationFormPage.class;
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getSignUpVerifyPageClass() {
-        return RegisterPage.class;
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getPasswordResetPageClass() {
-        return PasswordResetPage.class;
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getHomePageClass() {
-        return HomePage.class;
-    }
-
-    /**
-     * For subclassing if required.
-     */
-    protected Class<? extends Page> getAboutPageClass() {
-        return AboutPage.class;
-    }
-}