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));
- }
-}