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/03/24 12:54:55 UTC

[1/3] git commit: ISIS-367: removing DeploymentType.CLIENT

Updated Branches:
  refs/heads/master e00abc7fd -> a73ddca86


ISIS-367: removing DeploymentType.CLIENT

... since we no longer support this mode (client/server remoting removed a while back).


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

Branch: refs/heads/master
Commit: 0448f2d820e29fdb2ea852752e11c95a72f09729
Parents: e00abc7
Author: Dan Haywood <da...@apache.org>
Authored: Wed Mar 20 07:05:02 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Thu Mar 21 11:26:35 2013 +0000

----------------------------------------------------------------------
 .../apache/isis/core/runtime/runner/Constants.java |    1 -
 .../isis/core/runtime/runner/IsisRunner.java       |    2 -
 .../opts/OptionHandlerDeploymentTypeIsis.java      |    3 +-
 .../runner/opts/OptionValidatorForPersistor.java   |   45 ---------------
 .../isis/core/runtime/system/DeploymentType.java   |   41 -------------
 .../systemusinginstallers/IsisSystemAbstract.java  |    5 --
 6 files changed, 1 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/0448f2d8/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java
index a1a4477..a67ee96 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/Constants.java
@@ -36,7 +36,6 @@ public final class Constants {
     public static final String TYPE_EXPLORATION = DeploymentType.EXPLORATION.friendlyName();
     public static final String TYPE_PROTOTYPE = DeploymentType.PROTOTYPE.friendlyName();
     public static final String TYPE_SINGLE_USER = DeploymentType.SINGLE_USER.friendlyName();
-    public static final String TYPE_CLIENT = DeploymentType.CLIENT.friendlyName();
     public static final String TYPE_SERVER_EXPLORATION = DeploymentType.SERVER_EXPLORATION.friendlyName();
     public static final String TYPE_SERVER_PROTOTYPE = DeploymentType.SERVER_PROTOTYPE.friendlyName();
     public static final String TYPE_SERVER = DeploymentType.SERVER.friendlyName();

http://git-wip-us.apache.org/repos/asf/isis/blob/0448f2d8/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java
index 9971d11..83c988b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/IsisRunner.java
@@ -60,7 +60,6 @@ import org.apache.isis.core.runtime.runner.opts.OptionHandlerVerbose;
 import org.apache.isis.core.runtime.runner.opts.OptionHandlerVersion;
 import org.apache.isis.core.runtime.runner.opts.OptionHandlerViewer;
 import org.apache.isis.core.runtime.runner.opts.OptionValidator;
-import org.apache.isis.core.runtime.runner.opts.OptionValidatorForPersistor;
 import org.apache.isis.core.runtime.runner.opts.OptionValidatorForViewers;
 import org.apache.isis.core.runtime.system.DeploymentType;
 
@@ -274,7 +273,6 @@ public class IsisRunner {
 
         // validators
         addValidator(new OptionValidatorForViewers(optionHandlerViewer));
-        addValidator(new OptionValidatorForPersistor(optionHandlerPersistor));
 
         return optionHandlerViewer;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/0448f2d8/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerDeploymentTypeIsis.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerDeploymentTypeIsis.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerDeploymentTypeIsis.java
index 390f9ac..4bc5ddc 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerDeploymentTypeIsis.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionHandlerDeploymentTypeIsis.java
@@ -26,13 +26,12 @@ public class OptionHandlerDeploymentTypeIsis extends OptionHandlerDeploymentType
     public static final String TYPE_EXPLORATION = DeploymentType.EXPLORATION.friendlyName();
     public static final String TYPE_PROTOTYPE = DeploymentType.PROTOTYPE.friendlyName();
     public static final String TYPE_SINGLE_USER = DeploymentType.SINGLE_USER.friendlyName();
-    public static final String TYPE_CLIENT = DeploymentType.CLIENT.friendlyName();
     public static final String TYPE_SERVER_EXPLORATION = DeploymentType.SERVER_EXPLORATION.friendlyName();
     public static final String TYPE_SERVER_PROTOTYPE = DeploymentType.SERVER_PROTOTYPE.friendlyName();
     public static final String TYPE_SERVER = DeploymentType.SERVER.friendlyName();
 
     public OptionHandlerDeploymentTypeIsis() {
-        super(DeploymentType.PROTOTYPE, TYPE_EXPLORATION + "; " + TYPE_PROTOTYPE + " (default); " + TYPE_SINGLE_USER + "; " + TYPE_CLIENT + "; " + TYPE_SERVER_EXPLORATION + "; " + TYPE_SERVER_PROTOTYPE + "; " + TYPE_SERVER);
+        super(DeploymentType.PROTOTYPE, TYPE_EXPLORATION + "; " + TYPE_PROTOTYPE + " (default); " + TYPE_SINGLE_USER + "; " + TYPE_SERVER_EXPLORATION + "; " + TYPE_SERVER_PROTOTYPE + "; " + TYPE_SERVER);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/0448f2d8/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionValidatorForPersistor.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionValidatorForPersistor.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionValidatorForPersistor.java
deleted file mode 100644
index 584424a..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/runner/opts/OptionValidatorForPersistor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.runtime.runner.opts;
-
-import com.google.common.base.Optional;
-
-import org.apache.isis.core.commons.lang.StringUtils;
-import org.apache.isis.core.runtime.system.DeploymentType;
-
-public final class OptionValidatorForPersistor implements OptionValidator {
-    private final OptionHandlerPersistor optionHandlerPersistor;
-
-    public OptionValidatorForPersistor(final OptionHandlerPersistor optionHandlerPersistor) {
-        this.optionHandlerPersistor = optionHandlerPersistor;
-    }
-
-    @Override
-    public Optional<String> validate(final DeploymentType deploymentType) {
-        final String objectPersistorName = optionHandlerPersistor.getPersistorName();
-        final boolean fail = (!StringUtils.isNullOrEmpty(objectPersistorName)) && !deploymentType.canSpecifyObjectStore();
-        final String failMsg = String.format("Error: cannot specify an object store (persistor) for deployment type %s\n", deploymentType.name().toLowerCase());
-        return setIf(fail, failMsg);
-    }
-
-    private static Optional<String> setIf(final boolean fail, final String failMsg) {
-        return fail? Optional.of(failMsg): Optional.<String>absent();
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/0448f2d8/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
index 1cacd14..5a99080 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/DeploymentType.java
@@ -37,11 +37,6 @@ import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
  * change has been made to provide more flexibility in setting up the
  * <tt>IsisContext</tt> lookup.
  * 
- * 
- * implementation can be created, specifying in turn a custom
- * {@link ContextCategory} (also now a regular class) can be specified, allowing
- * different was of setting up the .
- * 
  * <p>
  * To use this capability:
  * <ul>
@@ -118,8 +113,6 @@ public class DeploymentType implements DeploymentCategoryProvider {
                 debug.appendln("Show splash", splash);
                 debug.appendln();
                 debug.appendln("Name", friendlyName());
-                debug.appendln("Can specify object store", canSpecifyObjectStore());
-                debug.appendln("Can install fixtures", canInstallFixtures());
                 debug.appendln("Should monitor", shouldMonitor());
             }
 
@@ -144,39 +137,6 @@ public class DeploymentType implements DeploymentCategoryProvider {
         return contextCategory.canSpecifyViewers(viewers);
     }
 
-    /**
-     * Whether the list of connector names provided is compatible with this
-     * {@link DeploymentType}.
-     * 
-     * <p>
-     * Only a {@link #CLIENT} may have connectors.
-     */
-    public boolean canSpecifyConnectors(final List<String> connectors) {
-        return connectors.size() == 0 || this == CLIENT;
-    }
-
-    /**
-     * Whether specifying an object store is compatible with this
-     * {@link DeploymentType}.
-     * 
-     * <p>
-     * Only a {@link #CLIENT} may NOT have an object store.
-     */
-    public boolean canSpecifyObjectStore() {
-        return this != CLIENT;
-    }
-
-    /**
-     * Whether specifying fixtures is compatible with this
-     * {@link DeploymentType}.
-     * 
-     * <p>
-     * Only a {@link #CLIENT} may NOT have an object store.
-     */
-    public boolean canInstallFixtures() {
-        return this != CLIENT;
-    }
-
     public boolean shouldShowSplash() {
         return splash.isShow();
     }
@@ -225,5 +185,4 @@ public class DeploymentType implements DeploymentCategoryProvider {
         return name();
     }
 
-
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/0448f2d8/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java
index 4cec4f1..ff87426 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/systemusinginstallers/IsisSystemAbstract.java
@@ -79,11 +79,6 @@ public abstract class IsisSystemAbstract extends IsisSystemFixturesHookAbstract
 
     @Override
     protected void installFixturesIfRequired() throws IsisSystemException {
-        // some deployment types (eg CLIENT) do not support installing fixtures
-        // instead, any fixtures should be installed when server boots up.
-        if (!getDeploymentType().canInstallFixtures()) {
-            return;
-        }
 
         fixtureInstaller = obtainFixturesInstaller();
         if (isNoop(fixtureInstaller)) {


[3/3] git commit: ISIS-367: EventMetadata provides id; commented out entries for github pub service in example

Posted by da...@apache.org.
ISIS-367: EventMetadata provides id; commented out entries for github pub service in example

* EventMetadata#getGuid renamed to EventMetadata#getTransactionId
* EventMetadata#getSequence added
* EventMetadata#getId added
* added commented out entries for example configuration of using github-hosted pubsub service for ActiveMQ/RA.


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

Branch: refs/heads/master
Commit: a73ddca862f9def4087ed20b749ac052b31d66ad
Parents: ace2b5b
Author: Dan Haywood <da...@apache.org>
Authored: Sun Mar 24 11:54:23 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Sun Mar 24 11:54:23 2013 +0000

----------------------------------------------------------------------
 .../objectstore/jdo/service/RegisterEntities.java  |   18 ++++++
 .../RestfulObjectsSpecEventSerializer.java         |    4 +-
 .../applib/services/publish/EventMetadata.java     |   44 +++++++++++++--
 .../applib/services/publish/EventSerializer.java   |    2 +-
 .../services/publish/EventMetadataTest_getId.java  |   28 +++++++++
 .../system/transaction/IsisTransaction.java        |   16 +++++-
 .../dom/src/main/java/dom/todo/ToDoItem.java       |    1 -
 .../quickstart_wicket_restful_jdo/pom.xml          |   12 ++++
 .../viewer-webapp/pom.xml                          |    9 +++
 .../src/main/webapp/WEB-INF/isis.properties        |   10 ++-
 .../WEB-INF/persistor_datanucleus.properties       |    1 +
 .../viewer-webapp/src/main/webapp/WEB-INF/web.xml  |   14 ++++-
 12 files changed, 144 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
index d3d7e9c..97a493f 100644
--- a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
+++ b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/service/RegisterEntities.java
@@ -1,3 +1,21 @@
+/*
+ *  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.objectstore.jdo.service;
 
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
index 8e87490..332780b 100644
--- a/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
+++ b/component/viewer/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/eventserializer/RestfulObjectsSpecEventSerializer.java
@@ -57,7 +57,9 @@ public class RestfulObjectsSpecEventSerializer implements EventSerializer {
         final JsonRepresentation eventRepr = JsonRepresentation.newMap();
         final JsonRepresentation metadataRepr = JsonRepresentation.newMap();
         eventRepr.mapPut("metadata", metadataRepr);
-        metadataRepr.mapPut("guid", metadata.getGuid());
+        metadataRepr.mapPut("id", metadata.getId());
+        metadataRepr.mapPut("transactionId", metadata.getTransactionId());
+        metadataRepr.mapPut("sequence", metadata.getSequence());
         metadataRepr.mapPut("user", metadata.getUser());
         metadataRepr.mapPut("timestamp", metadata.getTimestamp());
         eventRepr.mapPut("payload", payloadRepr);

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java b/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java
index 42983e6..e97dc15 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java
@@ -12,22 +12,40 @@ import java.util.UUID;
  */
 public class EventMetadata {
     
-    private final UUID guid;
+    private final UUID transactionId;
+    private final int sequence;
     private final String user;
     private final long timestamp;
     
-    public EventMetadata(UUID guid, String user, long timestamp) {
-        this.guid = guid;
+    public EventMetadata(UUID transactionId, int sequence, String user, long timestamp) {
+        this.transactionId = transactionId;
+        this.sequence = sequence;
         this.user = user;
         this.timestamp = timestamp;
     }
     
     /**
-     * Unique identifier of this event.
+     * Isis' identifier of the transaction within which this event
+     * originated.
+     * 
+     * <p>
+     * Note that there could be several events all with the same transaction Id.
      */
-    public UUID getGuid() {
-        return guid;
+    public UUID getTransactionId() {
+        return transactionId;
     }
+    
+    /**
+     * The zero-based sequence number of this event within the transaction.
+     * 
+     * <p>
+     * The combination of {@link #getTransactionId() transaction Id} and {@link #getSequence() sequence}
+     * is guaranteed to be unique.
+     */
+    public int getSequence() {
+        return sequence;
+    }
+    
     /**
      * Represents the user that was responsible for generating the event.  
      */
@@ -41,4 +59,18 @@ public class EventMetadata {
     public long getTimestamp() {
         return timestamp;
     }
+    
+    /**
+     * Returns a string that concatenates the {@link #getTransactionId()} and the
+     * {@link #getSequence()} with a <tt>:</tt>.
+     */
+    public String getId() {
+        return getTransactionId() + ":" + getSequence();
+    }
+    
+    @Override
+    public String toString() {
+        return getId();
+    }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventSerializer.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventSerializer.java b/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventSerializer.java
index e576902..13008df 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventSerializer.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventSerializer.java
@@ -26,7 +26,7 @@ public interface EventSerializer {
         @Programmatic
         @Override
         public Object serialize(EventMetadata metadata, EventPayload payload) {
-            return "PUBLISHED: \n    metadata: " + metadata.getGuid() + ":" + metadata.getUser() + ":" + metadata.getTimestamp() + ":    payload:s\n"+ payload.toString();
+            return "PUBLISHED: \n    metadata: " + metadata.getId() + ":" + metadata.getUser() + ":" + metadata.getTimestamp() + ":    payload:s\n"+ payload.toString();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/core/applib/src/test/java/org/apache/isis/applib/services/publish/EventMetadataTest_getId.java
----------------------------------------------------------------------
diff --git a/core/applib/src/test/java/org/apache/isis/applib/services/publish/EventMetadataTest_getId.java b/core/applib/src/test/java/org/apache/isis/applib/services/publish/EventMetadataTest_getId.java
new file mode 100644
index 0000000..7c741fe
--- /dev/null
+++ b/core/applib/src/test/java/org/apache/isis/applib/services/publish/EventMetadataTest_getId.java
@@ -0,0 +1,28 @@
+package org.apache.isis.applib.services.publish;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.*;
+
+import java.util.Calendar;
+import java.util.UUID;
+
+import org.junit.Test;
+
+public class EventMetadataTest_getId {
+
+    @Test
+    public void test() {
+        UUID transactionId = UUID.fromString("1bd8e5d4-2d67-4395-b5e8-d74acd766766");
+        int sequence = 2;
+        String user = "fred";
+        long timestamp = 1364120978631L;
+        EventMetadata eventMetadata = new EventMetadata(transactionId, sequence, user, timestamp);
+        
+        assertThat(eventMetadata.getTransactionId(), is(UUID.fromString("1bd8e5d4-2d67-4395-b5e8-d74acd766766")));
+        assertThat(eventMetadata.getSequence(), is(2));
+        assertThat(eventMetadata.getUser(), is("fred"));
+        assertThat(eventMetadata.getTimestamp(), is(1364120978631L));
+        assertThat(eventMetadata.getId(), is("1bd8e5d4-2d67-4395-b5e8-d74acd766766:2"));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
index eb0e790..e9e2728 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
@@ -191,6 +191,8 @@ public class IsisTransaction implements TransactionScopedComponent {
 
     private final UUID guid;
 
+    private int eventSequence;
+
     public IsisTransaction(final IsisTransactionManager transactionManager, final org.apache.isis.core.commons.authentication.MessageBroker messageBroker, final UpdateNotifier updateNotifier, final TransactionalResource objectStore, final AuditingService auditingService, PublishingServiceWithDefaultPayloadFactories publishingService) {
         
         ensureThatArg(transactionManager, is(not(nullValue())), "transaction manager is required");
@@ -204,6 +206,7 @@ public class IsisTransaction implements TransactionScopedComponent {
         this.publishingService = publishingService;
         
         this.guid = UUID.randomUUID();
+        this.eventSequence = 0;
 
         this.state = State.IN_PROGRESS;
 
@@ -221,6 +224,7 @@ public class IsisTransaction implements TransactionScopedComponent {
         return guid;
     }
     
+    
     // ////////////////////////////////////////////////////////////////
     // State
     // ////////////////////////////////////////////////////////////////
@@ -409,7 +413,7 @@ public class IsisTransaction implements TransactionScopedComponent {
                 return;
             } 
             final PublishedAction.PayloadFactory payloadFactory = publishedActionFacet.value();
-            final EventMetadata metadata = new EventMetadata(getGuid(), currentUser, currentTimestampEpoch);
+            final EventMetadata metadata = newEventMetadata(currentUser, currentTimestampEpoch);
             publishingService.publishAction(payloadFactory, metadata, currentInvocation);
         } finally {
             ActionInvocationFacet.currentInvocation.set(null);
@@ -423,7 +427,7 @@ public class IsisTransaction implements TransactionScopedComponent {
                 continue;
             }
             final PublishedObject.PayloadFactory payloadFactory = publishedObjectFacet.value();
-            final EventMetadata metadata = new EventMetadata(getGuid(), currentUser, currentTimestampEpoch);
+            final EventMetadata metadata = newEventMetadata(currentUser, currentTimestampEpoch);
 
             publishingService.publishObject(payloadFactory, metadata, changedAdapter);
         }
@@ -433,6 +437,14 @@ public class IsisTransaction implements TransactionScopedComponent {
         return Clock.getTime();
     }
 
+    private EventMetadata newEventMetadata(final String currentUser, final long currentTimestampEpoch) {
+        return new EventMetadata(getGuid(), nextEventSequence(), currentUser, currentTimestampEpoch);
+    }
+
+    private int nextEventSequence() {
+        return eventSequence++;
+    }
+    
     private void auditChangedProperty(final String currentUser, final long currentTimestampEpoch, final Entry<AdapterAndProperty, PreAndPostValues> auditEntry) {
         final AdapterAndProperty aap = auditEntry.getKey();
         final ObjectAdapter adapter = aap.getAdapter();

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
index 7e07a74..63e0023 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
@@ -404,7 +404,6 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ { // GMAP3
     /**
      * by complete flag, then due by date, then description
      */
-    // exclude from the framework's metamodel
     @Override
     public int compareTo(final ToDoItem other) {
         if (isComplete() && !other.isComplete()) {

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/example/application/quickstart_wicket_restful_jdo/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/pom.xml b/example/application/quickstart_wicket_restful_jdo/pom.xml
index 8b3e1da..3bd16ff 100644
--- a/example/application/quickstart_wicket_restful_jdo/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/pom.xml
@@ -321,6 +321,7 @@
 
 
             <!-- 3rd party extensions -->
+
             <!--
             GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3
             <dependency>
@@ -331,6 +332,17 @@
                 <scope>import</scope>
             </dependency>
             -->
+            
+            <!-- 
+            ActiveMQ/RA Publishing Service:
+            uncomment to use https://github.com/danhaywood/isis-publishingservice-activemq-ra
+            <dependency>
+            <groupId>com.danhaywood.isis.publishingservice</groupId>
+                <artifactId>danhaywood-isis-publishingservice-activemq-ra</artifactId>
+                <version>0.0.1-SNAPSHOT</version>
+            </dependency>
+             -->
+            
 
         </dependencies>
     </dependencyManagement>

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
index 38efdcd..03b071a 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/pom.xml
@@ -286,6 +286,15 @@
             <artifactId>danhaywood-isis-wicket-gmap3-ui</artifactId>
         </dependency>
          -->
+         
+        <!-- 
+        ActiveMQ/RA Publishing Service:
+        uncomment to use https://github.com/danhaywood/isis-publishingservice-activemq-ra
+        <dependency>
+            <groupId>com.danhaywood.isis.publishingservice</groupId>
+            <artifactId>danhaywood-isis-publishingservice-activemq-ra</artifactId>
+        </dependency>
+         -->
 
     </dependencies>
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/isis.properties b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/isis.properties
index c8de80a..430d692 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/isis.properties
@@ -158,14 +158,15 @@ isis.user-profile-store=in-memory
 
 
 # if using the DataNucleus object store
-# (with support for JDO's audit service, and installing fixtures using a domain service)
 #isis.services.prefix = 
 isis.services = objstore.jdo.todo.ToDoItemsJdo,\
                 fixture.todo.ToDoItemsFixturesService,\
                 dom.audit.AuditServiceDemo,\
-                org.apache.isis.applib.services.publish.PublishingService$Stderr,\
+                org.apache.isis.objectstore.jdo.applib.service.exceprecog.ExceptionRecognizerCompositeForJdoObjectStore,\
                 org.apache.isis.viewer.restfulobjects.rendering.eventserializer.RestfulObjectsSpecEventSerializer,\
-                org.apache.isis.objectstore.jdo.applib.service.exceprecog.ExceptionRecognizerCompositeForJdoObjectStore
+                org.apache.isis.applib.services.publish.PublishingService$Stderr
+                #com.danhaywood.isis.publishingservice.activemq.ra.PublishingServiceUsingActiveMqRa
+
 
 # Specify the (optional) test fixtures
 #
@@ -178,4 +179,7 @@ isis.services = objstore.jdo.todo.ToDoItemsJdo,\
 
 
 
+# ActiveMQ/RA Publishing Service
+# see: https://github.com/danhaywood/isis-publishingservice-activemq-ra
+#com.danhaywood.isis.publishingservice.activemq.ra.connectionFactory=openejb:Resource/ConnectionFactory
 

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
index 3761872..e061e4f 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties
@@ -49,6 +49,7 @@ isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=fa
 #isis.persistor.datanucleus.impl.datanucleus.ConnectionFactory2Name=java:comp/env/jdbc/quickstart-nontx
 #isis.persistor.datanucleus.impl.javax.jdo.option.TransactionType=JTA
 
+
 #
 # HSQLDB in-memory
 #

http://git-wip-us.apache.org/repos/asf/isis/blob/a73ddca8/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
index 9ae3812..c61cb87 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
@@ -270,6 +270,18 @@
         <res-auth>Container</res-auth>
     </resource-ref>
      -->
-  
+
+
+    <!-- 
+    ActiveMQ/RA Publishing Service
+    see: https://github.com/danhaywood/isis-publishingservice-activemq-ra
+    ??? is this necessary, though ???
+    <resource-ref> 
+        <description>JMS Connection Factory</description> 
+        <res-ref-name>ConnectionFactory</res-ref-name> 
+        <res-type>javax.jms.ConnectionFactory</res-type> 
+        <res-auth>Container</res-auth> 
+    </resource-ref> 
+    -->
 
 </web-app>


[2/3] git commit: ISIS-367: removing IsisContextForWicket since no longer used....

Posted by da...@apache.org.
ISIS-367: removing IsisContextForWicket since no longer used....

... and removing thread counting from AuthenticatedWebSessionForIsis.


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

Branch: refs/heads/master
Commit: ace2b5b4814c99f4b2d0718bc02941ffaed7c9ca
Parents: 0448f2d
Author: Dan Haywood <da...@apache.org>
Authored: Wed Mar 20 07:25:23 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Thu Mar 21 11:26:38 2013 +0000

----------------------------------------------------------------------
 .../viewer/IsisWicketUnsecuredApplication.java     |    6 +-
 .../integration/isis/DeploymentTypeAbstract.java   |    9 +-
 .../integration/isis/IsisContextForWicket.java     |  370 ---------------
 .../viewer/integration/isis/WicketServer.java      |   10 +
 .../integration/isis/WicketServerExploration.java  |   39 --
 .../integration/isis/WicketServerPrototype.java    |    8 +
 .../wicket/AuthenticatedWebSessionForIsis.java     |   37 +--
 .../integration/wicket/WebRequestCycleForIsis.java |    3 -
 ...nticatedWebSessionForIsis_ThreadManagement.java |   78 ---
 9 files changed, 23 insertions(+), 537 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java
index e22ca86..88ed44c 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java
@@ -151,11 +151,7 @@ public class IsisWicketUnsecuredApplication extends WebApplication implements Co
     }
 
     private DeploymentType determineDeploymentType() {
-        if(usesDevelopmentConfig()) {
-            return new WicketServerPrototype();
-        } else {
-            return new WicketServer();
-        }
+        return usesDevelopmentConfig() ? new WicketServerPrototype() : new WicketServer();
     }
 
     private IsisConfigurationBuilder createConfigBuilder(ServletContext servletContext) {

http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
index b266b0b..a12dccd 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
@@ -19,8 +19,6 @@
 
 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.ContextCategory;
 import org.apache.isis.core.runtime.system.DeploymentType;
@@ -28,17 +26,12 @@ import org.apache.isis.core.runtime.system.Splash;
 
 /**
  * Simple adapter for Isis' {@link DeploymentType} class, specifying that the
- * {@link IsisContextForWicket.WicketContextCategory} is used as the
+ * {@link ContextCategory#THREADLOCAL} is used as the
  * {@link ContextCategory}.
- * 
- * <p>
- * TODO: should somehow tie this in with Wicket's own
- * {@link Application#getConfigurationType() configuration mode}.
  */
 public abstract class DeploymentTypeAbstract extends DeploymentType {
 
     public DeploymentTypeAbstract(final String name, final DeploymentCategory category) {
-        //super(name, category, new IsisContextForWicket.WicketContextCategory(), null, Splash.NO_SHOW);
         super(name, category, ContextCategory.THREADLOCAL, null, Splash.NO_SHOW);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisContextForWicket.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisContextForWicket.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisContextForWicket.java
deleted file mode 100644
index 6fe41bc..0000000
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/IsisContextForWicket.java
+++ /dev/null
@@ -1,370 +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 java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Collections2;
-import com.google.common.collect.Maps;
-
-import org.apache.log4j.Logger;
-import org.apache.wicket.Session;
-
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
-import org.apache.isis.core.runtime.system.ContextCategory;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.internal.InitialisationSession;
-import org.apache.isis.core.runtime.system.session.IsisSession;
-import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
-import org.apache.isis.viewer.wicket.viewer.integration.wicket.AuthenticatedWebSessionForIsis;
-
-/**
- * Implementation of Isis' {@link IsisContext}, associating a
- * {@link IsisSession} with a Wicket {@link Session}.
- * 
- * <p>
- * This implementation also takes multi-threading into account, so that the
- * browser can submit multiple requests on the same session simultaneously (eg
- * to render an image of a pojo).
- */
-public class IsisContextForWicket extends IsisContext {
-
-    private static final Logger LOG = Logger.getLogger(IsisContextForWicket.class);
-    
-    public static class WicketContextCategory extends ContextCategory {
-
-        @Override
-        public boolean canSpecifyViewers(final List<String> viewers) {
-            return false;
-        }
-
-        @Override
-        public void initContext(final IsisSessionFactory sessionFactory) {
-            new IsisContextForWicket(ContextReplacePolicy.NOT_REPLACEABLE, SessionClosePolicy.EXPLICIT_CLOSE, sessionFactory);
-        }
-    }
-
-    private static final class GetSessionIdFunction implements Function<SessionKey, String> {
-        @Override
-        public String apply(final SessionKey from) {
-            return from.getId();
-        }
-    }
-
-    private enum SessionType {
-        WICKET {
-            @Override
-            public String getId(SessionKey sessionKey) {
-                return sessionKey.wicketSession.getId();
-            }
-
-            @Override
-            public IsisSession beginInteraction(final SessionKey sessionKey, final AuthenticationSession authSession, final IsisSessionFactory sessionFactory, final Map<SessionKey, IsisSession> sessionMap) {
-                final AuthenticatedWebSessionForIsis wicketSession = sessionKey.wicketSession;
-                synchronized (wicketSession) {
-                    // we don't apply any session close policy here;
-                    // there could be multiple threads using a session.
-
-                    final String wicketSessionId = wicketSession.getId();
-                
-                    final int before = wicketSession.getThreadUsage();
-                    wicketSession.registerUseByThread();
-                    final int after = wicketSession.getThreadUsage();
-            
-                    String logMsg = ""; 
-                    IsisSession isisSession = sessionMap.get(sessionKey);
-                    try {
-                        if (isisSession != null) {
-                            logMsg = "BUMP_UP";
-                        } else {
-                            isisSession = sessionFactory.openSession(authSession);
-                            // put into map prior to opening, so that subsequent calls to
-                            // getSessionInstance() will find this new session.
-                            sessionMap.put(sessionKey, isisSession);
-                            isisSession.open();
-                            
-                            logMsg = "NEW    ";
-                        }
-                
-                        return isisSession;
-                    } finally {
-                        if(LOG.isDebugEnabled()) {
-                            LOG.debug(String.format("wicketSession: %s OPEN  %d -> %d %s %s %s", wicketSessionId, before, after, logMsg, authSession.getUserName(), isisSession.getId()));
-                        }
-                    }
-                }
-            }
-
-            @Override
-            public void endInteraction(SessionKey sessionKey, final Map<SessionKey, IsisSession> sessionMap) {
-                final AuthenticatedWebSessionForIsis wicketSession = sessionKey.wicketSession;
-                synchronized (wicketSession) {
-                    final String wicketSessionId = wicketSession.getId();
-                    
-                    final int before = wicketSession.getThreadUsage();
-                    final boolean shouldClose = wicketSession.deregisterUseByThread();
-                    final int after = wicketSession.getThreadUsage();
-
-                    final IsisSession isisSession = sessionMap.get(sessionKey);
-                    AuthenticationSession authSession = null;
-                    String logMsg = ""; 
-                    try {
-                        if (isisSession == null) {
-                            // nothing to be done !?!?
-                            logMsg = "NO_SESSION";
-                            return; 
-                        }
-                        authSession = isisSession.getAuthenticationSession();
-                        
-                        if (!shouldClose) {
-                            logMsg = "BUMP_DOWN ";
-                            // don't remove from map    
-                            return;
-                        } 
-                        
-                        isisSession.close();
-                        logMsg = "DISCARDING";
-                        
-                        // the remove happens after closing, any calls to getSessionInstance()
-                        // made while closing will still find this session
-                        sessionMap.remove(sessionKey);
-                        
-                    } finally {
-                        if(LOG.isDebugEnabled()) {
-                            LOG.debug(String.format("wicketSession: %s CLOSE %d -> %d %s %s %s", wicketSessionId, before, after, logMsg, (authSession != null? authSession.getUserName(): "[null]"), (isisSession != null? isisSession.getId(): "[null]")));
-                        }
-                    }
-                }
-            }
-
-            @Override
-            public boolean equals(SessionKey sessionKey, SessionKey other) {
-                return sessionKey.wicketSession == other.wicketSession;
-            }
-
-            @Override
-            public int hashCode(SessionKey sessionKey) {
-                return sessionKey.wicketSession.hashCode();
-            }
-        },
-        THREAD {
-            @Override
-            public String getId(SessionKey sessionKey) {
-                return ""+sessionKey.thread.getId();
-            }
-
-            @Override
-            public IsisSession beginInteraction(final SessionKey sessionKey, final AuthenticationSession authSession, final IsisSessionFactory sessionFactory, final Map<SessionKey, IsisSession> sessionMap) {
-                // auto-close if required
-                endInteraction(sessionKey, sessionMap);
-                
-                final String threadName = sessionKey.thread.getName();
-                final IsisSession isisSession = sessionFactory.openSession(authSession);
-                try {
-                    sessionMap.put(sessionKey, isisSession);
-                    isisSession.open();
-                    return isisSession;
-                } finally {
-                    if(LOG.isDebugEnabled()) {
-                        LOG.debug(String.format("threadSession: %s OPEN  %s %s", threadName, authSession.getUserName(), isisSession.getId()));
-                    }
-                }
-            }
-            
-
-            @Override
-            public void endInteraction(SessionKey sessionKey, Map<SessionKey, IsisSession> sessionMap) {
-                final IsisSession isisSession = sessionMap.get(sessionKey);
-                if(isisSession == null) {
-                    return; // nothing to do
-                }
-                final String threadName = sessionKey.thread.getName();
-                final AuthenticationSession authSession = isisSession.getAuthenticationSession();
-                try {
-                    
-                    isisSession.close();
-                    sessionMap.remove(sessionKey);
-                } finally {
-                    if(LOG.isDebugEnabled()) {
-                        LOG.debug(String.format("threadSession: %s CLOSE %s %s", threadName, authSession.getUserName(), isisSession.getId()));
-                    }
-                }
-            }
-
-            @Override
-            public boolean equals(SessionKey sessionKey, SessionKey other) {
-                return sessionKey.thread == other.thread;
-            }
-
-            @Override
-            public int hashCode(SessionKey sessionKey) {
-                return sessionKey.thread.hashCode();
-            }
-        };
-
-        public abstract String getId(SessionKey sessionKey);
-
-        public abstract IsisSession beginInteraction(final SessionKey sessionKey, final AuthenticationSession authSession, final IsisSessionFactory sessionFactory, final Map<SessionKey, IsisSession> sessionMap);
-
-        public abstract void endInteraction(SessionKey sessionKey, final Map<SessionKey, IsisSession> sessionMap);
-
-        public abstract boolean equals(SessionKey sessionKey, SessionKey other);
-        public abstract int hashCode(SessionKey sessionKey);
-    }
-    
-    private static class SessionKey {
-        private final SessionType type;
-        private final AuthenticatedWebSessionForIsis wicketSession;
-        private final Thread thread;
-        private SessionKey(SessionType type, Session wicketSession, Thread thread) {
-            this.type = type;
-            this.wicketSession = (AuthenticatedWebSessionForIsis) wicketSession;
-            this.thread = thread;
-        }
-        public String getId() {
-            return type.getId(this);
-        }
-        static SessionKey get() {
-            return Session.exists()? new SessionKey(SessionType.WICKET, Session.get(), null): new SessionKey(SessionType.THREAD, null, Thread.currentThread());
-        }
-        public IsisSession beginInteraction(final AuthenticationSession authSession, final IsisSessionFactory sessionFactory, final Map<SessionKey, IsisSession> sessionMap) {
-            synchronized (sessionMap) {
-                return type.beginInteraction(this, authSession, sessionFactory, sessionMap);
-            }
-        }
-        public void endInteraction(final Map<SessionKey, IsisSession> sessionMap) {
-            synchronized (sessionMap) {
-                type.endInteraction(this, sessionMap);
-            }
-        }
-        @Override
-        public boolean equals(Object obj) {
-            if (this == obj)
-                return true;
-            if (obj == null)
-                return false;
-            if (getClass() != obj.getClass())
-                return false;
-            SessionKey other = (SessionKey) obj;
-            if (type != other.type)
-                return false;
-            return type.equals(this, other);
-        }
-        @Override
-        public int hashCode() {
-            return type.hashCode(this);
-        }
-        @Override
-        public String toString() {
-            return "SessionKey[" + type + "]:id=" + getId();
-        }
-        
-    }
-
-    
-    /**
-     * Only used while bootstrapping, corresponding to the
-     * {@link InitialisationSession}.
-     */
-    private IsisSession bootstrapSession;
-    /**
-     * Maps (our custom) {@link AuthenticatedWebSessionForIsis Wicket session}s
-     * to vanilla {@link IsisSession}s.
-     */
-    private final Map<SessionKey, IsisSession> sessionMap = Maps.newHashMap();
-
-    protected IsisContextForWicket(final ContextReplacePolicy replacePolicy, final SessionClosePolicy sessionClosePolicy, final IsisSessionFactory sessionFactory) {
-        super(replacePolicy, sessionClosePolicy, sessionFactory);
-    }
-
-    @Override
-    public String[] allSessionIds() {
-        final Collection<String> transform = Collections2.transform(sessionMap.keySet(), new GetSessionIdFunction());
-        return transform.toArray(new String[0]);
-    }
-
-    @Override
-    protected void closeAllSessionsInstance() {
-        throw new NotYetImplementedException();
-    }
-
-    @Override
-    protected IsisSession getSessionInstance(final String sessionId) {
-        throw new NotYetImplementedException();
-    }
-
-    @Override
-    public IsisSession getSessionInstance() {
-        // special case handling if still bootstrapping
-        if (bootstrapSession != null) {
-            return bootstrapSession;
-        }
-        SessionKey sessionKey = SessionKey.get();
-        return sessionMap.get(sessionKey);
-    }
-
-    @Override
-    public IsisSession openSessionInstance(final AuthenticationSession session) {
-
-        // special case handling if still bootstrapping
-        if (session instanceof InitialisationSession) {
-            bootstrapSession = getSessionFactory().openSession(session);
-            bootstrapSession.open();
-            return bootstrapSession;
-        }
-
-        // otherwise, regular processing
-        return openSessionOrRegisterUsageOnExisting(session);
-    }
-
-    private synchronized IsisSession openSessionOrRegisterUsageOnExisting(final AuthenticationSession authSession) {
-        SessionKey sessionKey = SessionKey.get();
-        return sessionKey.beginInteraction(authSession, getSessionFactoryInstance(), sessionMap);
-    }
-
-    @Override
-    public synchronized void closeSessionInstance() {
-        // special case handling if still bootstrapping
-        if (bootstrapSession != null) {
-
-            bootstrapSession.close();
-            bootstrapSession = null;
-            return;
-        }
-
-        // otherwise, regular processing
-        closeSessionOrDeregisterUsageOnExisting();
-    }
-
-    private synchronized void closeSessionOrDeregisterUsageOnExisting() {
-        SessionKey sessionKey = SessionKey.get();
-        sessionKey.endInteraction(sessionMap);
-    }
-
-    @Override
-    public String debugTitle() {
-        return "Wicket Context";
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
index 69240ad..d9d597b 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
@@ -19,11 +19,21 @@
 
 package org.apache.isis.viewer.wicket.viewer.integration.isis;
 
+import org.apache.wicket.settings.def.ApplicationSettings;
+
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
+import org.apache.isis.viewer.wicket.viewer.IsisWicketUnsecuredApplication;
 
 /**
  * {@link DeploymentType} for production usage.
+ * 
+ * <p>
+ * In {@link IsisWicketApplication} and {@link IsisWicketUnsecuredApplication} 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 DeploymentTypeAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerExploration.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerExploration.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerExploration.java
deleted file mode 100644
index 53312bf..0000000
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerExploration.java
+++ /dev/null
@@ -1,39 +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;
-
-/**
- * {@link DeploymentType} for exploration usage.
- * 
- * <p>
- * TODO: this is currently only partly honoured; exploration actions are shown
- * and the correct object store is defaulted (ie in-memory); however Wicket
- * Objects will always pop up a login dialog.
- */
-public class WicketServerExploration extends DeploymentTypeAbstract {
-
-    public WicketServerExploration() {
-        super("WICKET_SERVER_EXPLORATION", DeploymentCategory.EXPLORING);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
index ad925e8..e0a5bd4 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
@@ -21,9 +21,17 @@ 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;
+import org.apache.isis.viewer.wicket.viewer.IsisWicketUnsecuredApplication;
 
 /**
  * {@link DeploymentType} for prototype usage.
+ * 
+ * <p>
+ * In {@link IsisWicketApplication} and {@link IsisWicketUnsecuredApplication} there
+ * is logic to select either this {@link DeploymentType} or {@link WicketServer}
+ * depending on the value of Wicket's own
+ * {@link Application#getConfigurationType() configuration mode}. 
  */
 public class WicketServerPrototype extends DeploymentTypeAbstract {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
index b290b51..6d2c422 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
@@ -58,7 +58,6 @@ public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession impl
     }
 
     private AuthenticationSession authenticationSession;
-    private int threadUsages;
 
     public AuthenticatedWebSessionForIsis(final Request request) {
         super(Ensure.ensureThatArg(request, is(not(nullValue(Request.class)))));
@@ -95,39 +94,9 @@ public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession impl
         return (WebClientInfo) super.getClientInfo();
     }
 
-    // /////////////////////////////////////////////////////////
-    // Thread counting
-    // /////////////////////////////////////////////////////////
-
-    /**
-     * Capture fact that this session is currently being used by a thread.
-     * 
-     * <p>
-     * There could be several concurrent requests all of which will use the same
-     * Session; for example to obtain img resources for entities. This counter
-     * keeps track of one of these threadUsages, when it gets back down to zero
-     * then we can close the thread.
-     * @return 
-     * 
-     * @see #deregisterUseByThread()
-     */
-    public int registerUseByThread() {
-        threadUsages++;
-        return getThreadUsage();
-    }
-
-    /**
-     * @see #registerUseByThread()
-     * @return whether the session is no longer used by any threadUsages.
-     */
-    public boolean deregisterUseByThread() {
-        threadUsages--;
-        return threadUsages <= 0;
-    }
-
-    public int getThreadUsage() {
-        return threadUsages;
-    }
+    // /////////////////////////////////////////////////
+    // Dependencies
+    // /////////////////////////////////////////////////
 
     protected AuthenticationManager getAuthenticationManager() {
         return IsisContext.getAuthenticationManager();

http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
index c5b44b0..17a1e77 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
@@ -65,9 +65,6 @@ public class WebRequestCycleForIsis extends AbstractRequestCycleListener {
         if (wicketSession == null) {
             return;
         }
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("thread usage: " + wicketSession.getThreadUsage());
-        }
         final AuthenticationSession authenticationSession = wicketSession.getAuthenticationSession();
         if (authenticationSession == null) {
             return;

http://git-wip-us.apache.org/repos/asf/isis/blob/ace2b5b4/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_ThreadManagement.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_ThreadManagement.java b/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_ThreadManagement.java
deleted file mode 100644
index 8a339e0..0000000
--- a/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/app/wicket/AuthenticatedWebSessionForIsis_ThreadManagement.java
+++ /dev/null
@@ -1,78 +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.app.wicket;
-
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-
-import java.util.Locale;
-
-import org.apache.wicket.request.Request;
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-import org.apache.isis.viewer.wicket.viewer.integration.wicket.AuthenticatedWebSessionForIsis;
-
-public class AuthenticatedWebSessionForIsis_ThreadManagement {
-
-    @Rule
-    public final JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
-    private AuthenticatedWebSessionForIsis webSession;
-
-    @Mock
-    private Request stubRequest;
-
-    @Before
-    public void setUp() throws Exception {
-        context.checking(new Expectations() {
-            {
-                // must provide explicit expectation, since Locale is final.
-                allowing(stubRequest).getLocale();
-                will(returnValue(Locale.getDefault()));
-
-                // stub everything else out
-                ignoring(stubRequest);
-            }
-        });
-
-        webSession = new AuthenticatedWebSessionForIsis(stubRequest);
-    }
-
-    @Test
-    public void testRegisterUseByThread() {
-        assertThat(webSession.getThreadUsage(), is(0));
-        webSession.registerUseByThread();
-        assertThat(webSession.getThreadUsage(), is(1));
-    }
-
-    @Test
-    public void testDeregisterUseByThread() {
-        webSession.registerUseByThread();
-        assertThat(webSession.getThreadUsage(), is(1));
-        webSession.deregisterUseByThread();
-        assertThat(webSession.getThreadUsage(), is(0));
-    }
-}