You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/07/28 15:28:39 UTC
[01/39] git commit: ISIS-839: fixing RAT errors (missing license
headers).
Repository: isis
Updated Branches:
refs/heads/master 0af321912 -> 090e491cc
ISIS-839: fixing RAT errors (missing license headers).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/38f69b8d
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/38f69b8d
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/38f69b8d
Branch: refs/heads/master
Commit: 38f69b8d9cc820564508278b4410cac56789ebea
Parents: 3915970
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 18 17:50:34 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 18 17:50:34 2014 +0100
----------------------------------------------------------------------
.../core/wrapper/WrapperFactoryAbstractTest.java | 18 ++++++++++++++++++
core/pom.xml | 1 +
.../services/DeweyOrderComparatorTest.java | 18 ++++++++++++++++++
.../core/runtime/services/DeweyOrderUtilTest.java | 18 ++++++++++++++++++
.../authorization/IsisPermissionTest_equals.java | 18 ++++++++++++++++++
5 files changed, 73 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/38f69b8d/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java b/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
index c8323bd..6bc2e8e 100644
--- a/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
+++ b/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.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.core.wrapper;
import org.jmock.auto.Mock;
http://git-wip-us.apache.org/repos/asf/isis/blob/38f69b8d/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index df0e152..f013902 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -429,6 +429,7 @@
<exclude>**/*.json</exclude>
<exclude>**/*.min.js</exclude>
+ <exclude>**/MANIFEST.MF</exclude>
<exclude>**/*.ucd</exclude>
<exclude>**/*.ucls</exclude>
http://git-wip-us.apache.org/repos/asf/isis/blob/38f69b8d/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderComparatorTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderComparatorTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderComparatorTest.java
index 8335632..d0f5448 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderComparatorTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderComparatorTest.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.core.runtime.services;
import java.util.*;
http://git-wip-us.apache.org/repos/asf/isis/blob/38f69b8d/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderUtilTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderUtilTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderUtilTest.java
index 671a251..db256dc 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderUtilTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/DeweyOrderUtilTest.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.core.runtime.services;
import java.util.List;
http://git-wip-us.apache.org/repos/asf/isis/blob/38f69b8d/core/security-shiro/src/test/java/org/apache/isis/security/shiro/authorization/IsisPermissionTest_equals.java
----------------------------------------------------------------------
diff --git a/core/security-shiro/src/test/java/org/apache/isis/security/shiro/authorization/IsisPermissionTest_equals.java b/core/security-shiro/src/test/java/org/apache/isis/security/shiro/authorization/IsisPermissionTest_equals.java
index e4194fe..e3f9fb1 100644
--- a/core/security-shiro/src/test/java/org/apache/isis/security/shiro/authorization/IsisPermissionTest_equals.java
+++ b/core/security-shiro/src/test/java/org/apache/isis/security/shiro/authorization/IsisPermissionTest_equals.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.security.shiro.authorization;
import org.junit.Assert;
[31/39] ISIS-839: recreating todoapp archetype
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoTest_notYetCompleted.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoTest_notYetCompleted.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoTest_notYetCompleted.java
deleted file mode 100644
index bc02446..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoTest_notYetCompleted.java
+++ /dev/null
@@ -1,71 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/**
- * 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 dom.todo;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.applib.annotation.Bulk;
-import org.apache.isis.applib.services.eventbus.EventBusService;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-
-public class ToDoTest_notYetCompleted {
-
- @Rule
- public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
- @Mock
- private EventBusService eventBusService;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- toDoItem = new ToDoItem();
-
- toDoItem.bulkInteractionContext = Bulk.InteractionContext.regularAction(toDoItem);
- toDoItem.eventBusService = eventBusService;
-
- context.ignoring(eventBusService);
- toDoItem.setComplete(true);
- }
-
- @Test
- public void happyCase() throws Exception {
- // given
- assertThat(toDoItem.disableNotYetCompleted(), is(nullValue()));
-
- // when
- toDoItem.notYetCompleted();
-
- // then
- assertThat(toDoItem.isComplete(), is(false));
- assertThat(toDoItem.disableNotYetCompleted(), is(not(nullValue())));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/pom.xml
index 1872775..d75a856 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/pom.xml
@@ -26,7 +26,7 @@
</parent>
<artifactId>${artifactId}</artifactId>
- <name>Quickstart Wicket/Restful/JDO Fixtures</name>
+ <name>ToDo App Fixtures</name>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
index 38676d4..da1c7c3 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
@@ -24,6 +24,7 @@ package fixture.todo;
import fixture.todo.scenarios.RecreateToDoItemsAndCompleteSeveralForCurrent;
import java.util.List;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Named;
import org.apache.isis.applib.annotation.Prototype;
@@ -35,12 +36,18 @@ import org.apache.isis.applib.fixturescripts.FixtureScripts;
* Enables fixtures to be installed from the application.
*/
@Named("Prototyping") // has the effect of defining a "Prototyping" menu item
+@DomainService(menuOrder = "40.1")
public class ToDoItemsFixturesService extends FixtureScripts {
public ToDoItemsFixturesService() {
super("fixture.todo");
}
+ //@Override // compatibility with core 1.5.0
+ public FixtureScript default0RunFixtureScript() {
+ return findFixtureScriptFor(RecreateToDoItemsAndCompleteSeveralForCurrent.class);
+ }
+
/**
* Raising visibility to <tt>public</tt> so that choices are available for first param
* of {@link ${symbol_pound}runFixtureScript(FixtureScript, String)}.
@@ -50,6 +57,9 @@ public class ToDoItemsFixturesService extends FixtureScripts {
return super.choices0RunFixtureScript();
}
+ // //////////////////////////////////////
+
+
@Prototype
@MemberOrder(sequence="20")
public Object recreateToDoItemsForCurrentAndReturnFirst() {
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml
index 93dbfee..ba865c1 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/pom.xml
@@ -26,7 +26,7 @@
</parent>
<artifactId>${artifactId}</artifactId>
- <name>Quickstart Wicket/Restful/JDO Integration Tests</name>
+ <name>ToDo App Integration Tests</name>
<build>
<testResources>
@@ -76,8 +76,8 @@
<artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.objectstore</groupId>
- <artifactId>isis-objectstore-jdo-datanucleus</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/ToDoSystemInitializer.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/ToDoSystemInitializer.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/ToDoSystemInitializer.java
index f0f0cdf..70adfb8 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/ToDoSystemInitializer.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/ToDoSystemInitializer.java
@@ -19,25 +19,10 @@
*/
package integration;
-import app.ToDoItemAnalysis;
-import dom.todo.ToDoItemContributions;
-import dom.todo.ToDoItemSubscriptions;
-import dom.todo.ToDoItems;
-import fixture.todo.ToDoItemsFixturesService;
-
-import org.apache.isis.applib.annotation.Bulk;
-import org.apache.isis.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections;
-import org.apache.isis.applib.services.clock.ClockService;
-import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.integtestsupport.IsisSystemForTest;
-import org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceDefault;
-import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
-import org.apache.isis.core.wrapper.WrapperFactoryDefault;
import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller;
import org.apache.isis.objectstore.jdo.datanucleus.IsisConfigurationForJdoIntegTests;
-import org.apache.isis.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo;
-import org.apache.isis.objectstore.jdo.datanucleus.service.support.IsisJdoSupportImpl;
/**
* Holds an instance of an {@link IsisSystemForTest} as a {@link ThreadLocal} on the current thread,
@@ -59,27 +44,23 @@ public class ToDoSystemInitializer {
private static class ToDoSystemBuilder extends IsisSystemForTest.Builder {
public ToDoSystemBuilder() {
- //withFixtures( ... reference data fixtures ...); // if we had any...
withLoggingAt(org.apache.log4j.Level.INFO);
with(testConfiguration());
with(new DataNucleusPersistenceMechanismInstaller());
-
- withServices(
- new ToDoItems(),
- new ToDoItemAnalysis(),
- new ToDoItemContributions(),
- new ToDoItemsFixturesService(),
- new ClassDiscoveryServiceUsingReflections(),
- new ToDoItemSubscriptions(),
- new WrapperFactoryDefault(),
- new IsisJdoSupportImpl(),
- new Bulk.InteractionContext(),
- new EventBusServiceJdo(),
- new QueryResultsCache(),
- new MementoServiceDefault(),
- new BookmarkServiceDefault(),
- new ClockService()
- );
+
+ // services annotated with @DomainService
+ withServicesIn("app"
+ ,"dom.todo"
+ ,"fixture.todo"
+ ,"webapp.admin"
+ ,"webapp.prototyping"
+ ,"org.apache.isis.core.wrapper"
+ ,"org.apache.isis.applib"
+ ,"org.apache.isis.core.metamodel.services"
+ ,"org.apache.isis.core.runtime.services"
+ ,"org.apache.isis.objectstore.jdo.datanucleus.service.support" // IsisJdoSupportImpl
+ ,"org.apache.isis.objectstore.jdo.datanucleus.service.eventbus" // EventBusServiceJdo
+ );
}
private static IsisConfiguration testConfiguration() {
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/AbstractToDoIntegTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/AbstractToDoIntegTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/AbstractToDoIntegTest.java
new file mode 100644
index 0000000..f6625d1
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/AbstractToDoIntegTest.java
@@ -0,0 +1,41 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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 integration.tests;
+
+import integration.ToDoSystemInitializer;
+
+import org.junit.BeforeClass;
+import org.apache.isis.core.integtestsupport.IntegrationTestAbstract;
+import org.apache.isis.core.integtestsupport.scenarios.ScenarioExecutionForIntegration;
+
+public abstract class AbstractToDoIntegTest extends IntegrationTestAbstract {
+
+ @BeforeClass
+ public static void initClass() {
+ org.apache.log4j.PropertyConfigurator.configure("logging.properties");
+ ToDoSystemInitializer.initIsft();
+
+ // instantiating will install onto ThreadLocal
+ new ScenarioExecutionForIntegration();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoIntegTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoIntegTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoIntegTest.java
deleted file mode 100644
index ce12615..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoIntegTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests;
-
-import integration.ToDoSystemInitializer;
-
-import org.junit.BeforeClass;
-import org.apache.isis.core.integtestsupport.IntegrationTestAbstract;
-import org.apache.isis.core.integtestsupport.scenarios.ScenarioExecutionForIntegration;
-
-public abstract class ToDoIntegTest extends IntegrationTestAbstract {
-
- @BeforeClass
- public static void initClass() {
- org.apache.log4j.PropertyConfigurator.configure("logging.properties");
- ToDoSystemInitializer.initIsft();
-
- // instantiating will install onto ThreadLocal
- new ScenarioExecutionForIntegration();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java
new file mode 100644
index 0000000..c1b59ed
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java
@@ -0,0 +1,152 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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 integration.tests;
+
+import dom.todo.ToDoItem;
+import dom.todo.ToDoItemContributions;
+import dom.todo.ToDoItems;
+import fixture.todo.integtests.ToDoItemsIntegTestFixture;
+
+import java.util.List;
+import javax.inject.Inject;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public abstract class ToDoItemContributionsIntegTest extends AbstractToDoIntegTest {
+
+ @Before
+ public void setUpData() throws Exception {
+ scenarioExecution().install(new ToDoItemsIntegTestFixture().withTracing());
+ }
+
+ @Inject
+ ToDoItems toDoItems;
+ @Inject
+ ToDoItemContributions toDoItemContributions;
+
+ ToDoItemContributions toDoItemContributionsWrapped;
+ ToDoItem toDoItem;
+
+ @Before
+ public void setUp() throws Exception {
+ final List<ToDoItem> all = toDoItems.notYetComplete();
+ toDoItem = wrap(all.get(0));
+
+ toDoItemContributionsWrapped = wrap(toDoItemContributions);
+ }
+
+ public static class Actions {
+ public static class UpdateCategory extends ToDoItemContributionsIntegTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // when
+ toDoItemContributionsWrapped.updateCategory(toDoItem, ToDoItem.Category.Professional, ToDoItem.Subcategory.Consulting);
+
+ // then
+ assertThat(toDoItem.getCategory(), is(ToDoItem.Category.Professional));
+ assertThat(toDoItem.getSubcategory(), is(ToDoItem.Subcategory.Consulting));
+
+ // when
+ toDoItemContributionsWrapped.updateCategory(toDoItem, ToDoItem.Category.Domestic, ToDoItem.Subcategory.Chores);
+
+ // then
+ assertThat(toDoItem.getCategory(), is(ToDoItem.Category.Domestic));
+ assertThat(toDoItem.getSubcategory(), is(ToDoItem.Subcategory.Chores));
+ }
+
+
+ @Test
+ public void categoryCannotBeNull() throws Exception {
+
+ // when, then
+ expectedExceptions.expectMessage("'Category' is mandatory");
+ toDoItemContributionsWrapped.updateCategory(toDoItem, null, ToDoItem.Subcategory.Chores);
+ }
+
+ @Test
+ public void subcategoryCanBeNull() throws Exception {
+
+ // when, then
+ toDoItemContributionsWrapped.updateCategory(toDoItem, ToDoItem.Category.Professional, null);
+ }
+
+ @Test
+ public void subcategoryMustBelongToCategory() throws Exception {
+
+ // when, then
+ expectedExceptions.expectMessage(containsString("Invalid subcategory"));
+ toDoItemContributionsWrapped.updateCategory(toDoItem, ToDoItem.Category.Professional, ToDoItem.Subcategory.Chores);
+ }
+ }
+
+ public static class SimilarTo extends ToDoItemContributionsIntegTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // when
+ List<ToDoItem> similarItems = toDoItemContributionsWrapped.similarTo(toDoItem);
+
+ // then
+ assertThat(similarItems.size(), is(6));
+ }
+
+ }
+ }
+
+ public static class Properties {
+ public static class Priority extends ToDoItemContributionsIntegTest {
+
+ private List<ToDoItem> notYetComplete;
+
+ @Before
+ public void setUp() throws Exception {
+ notYetComplete = wrap(toDoItems).notYetComplete();
+ }
+
+ @Test
+ public void happyCase() throws Exception {
+ assertPriority(0, 1);
+ assertPriority(1, 2);
+ assertPriority(2, 4);
+ assertPriority(3, 6);
+ assertPriority(4, 5);
+ assertPriority(5, 7);
+ assertPriority(6, 9);
+ assertPriority(7, 8);
+ assertPriority(8, 3);
+ assertPriority(9, 10);
+ }
+
+ private void assertPriority(final int n, final int priority) {
+ assertThat(toDoItemContributions.relativePriority(notYetComplete.get(n)), is(Integer.valueOf(priority)));
+ }
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
new file mode 100644
index 0000000..447070e
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
@@ -0,0 +1,1040 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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 integration.tests;
+
+import dom.todo.ToDoItem;
+import dom.todo.ToDoItemSubscriptions;
+import dom.todo.ToDoItems;
+import fixture.todo.integtests.ToDoItemsIntegTestFixture;
+
+import java.math.BigDecimal;
+import java.nio.charset.Charset;
+import java.util.EventObject;
+import java.util.List;
+import javax.activation.MimeType;
+import javax.inject.Inject;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
+import org.jmock.Expectations;
+import org.jmock.Sequence;
+import org.jmock.auto.Mock;
+import org.joda.time.LocalDate;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.apache.isis.applib.NonRecoverableException;
+import org.apache.isis.applib.RecoverableException;
+import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.applib.services.clock.ClockService;
+import org.apache.isis.applib.services.eventbus.*;
+import org.apache.isis.applib.value.Blob;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+public class ToDoItemIntegTest extends AbstractToDoIntegTest {
+
+ @Before
+ public void setUpData() throws Exception {
+ scenarioExecution().install(new ToDoItemsIntegTestFixture());
+ }
+
+ @Inject
+ ToDoItems toDoItems;
+ @Inject
+ ToDoItemSubscriptions toDoItemSubscriptions;
+
+ ToDoItem toDoItem;
+
+ @Before
+ public void setUp() throws Exception {
+ final List<ToDoItem> all = toDoItems.notYetComplete();
+ toDoItem = wrap(all.get(0));
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ toDoItemSubscriptions.reset();
+ }
+
+
+ public static class Title extends ToDoItemIntegTest {
+
+ private LocalDate dueBy;
+
+ @Before
+ public void setUp() throws Exception {
+ final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
+ toDoItem = wrap(all.get(0));
+
+ dueBy = toDoItem.getDueBy();
+ }
+
+
+ @Test
+ public void includesDescription() throws Exception {
+
+ // given
+ assertThat(container().titleOf(toDoItem), containsString("Buy bread due by"));
+
+ // when
+ unwrap(toDoItem).setDescription("Buy bread and butter");
+
+ // then
+ assertThat(container().titleOf(toDoItem), containsString("Buy bread and butter due by"));
+ }
+
+ @Test
+ public void includesDueDateIfAny() throws Exception {
+
+ // given
+ assertThat(container().titleOf(toDoItem), containsString("due by " + dueBy.toString("yyyy-MM-dd")));
+
+ // when
+ final LocalDate fiveDaysFromNow = Clock.getTimeAsLocalDate().plusDays(5);
+ unwrap(toDoItem).setDueBy(fiveDaysFromNow);
+
+ // then
+ assertThat(container().titleOf(toDoItem), containsString("due by " + fiveDaysFromNow.toString("yyyy-MM-dd")));
+ }
+
+
+ @Test
+ public void ignoresDueDateIfNone() throws Exception {
+
+ // when
+ // (since wrapped, will call clearDueBy)
+ toDoItem.setDueBy(null);
+
+ // then
+ assertThat(container().titleOf(toDoItem), not(containsString("due by")));
+ }
+
+ @Test
+ public void usesWhetherCompleted() throws Exception {
+
+ // given
+ assertThat(container().titleOf(toDoItem), not(containsString("Completed!")));
+
+ // when
+ toDoItem.completed();
+
+ // then
+ assertThat(container().titleOf(toDoItem), not(containsString("due by")));
+ assertThat(container().titleOf(toDoItem), containsString("Buy bread - Completed!"));
+ }
+ }
+
+ public static class Actions {
+
+ public static class Completed extends ToDoItemIntegTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ assertThat(toDoItem.isComplete(), is(false));
+
+ // when
+ toDoItem.completed();
+
+ // then
+ assertThat(toDoItem.isComplete(), is(true));
+ }
+
+ @Test
+ public void cannotCompleteIfAlreadyCompleted() throws Exception {
+
+ // given
+ unwrap(toDoItem).setComplete(true);
+
+ // when, then should fail
+ expectedExceptions.expectMessage("Already completed");
+ toDoItem.completed();
+
+ // and then
+ final EventObject ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(EventObject.class);
+ assertThat(ev, is(nullValue()));
+ }
+
+
+ @Test
+ public void cannotSetPropertyDirectly() throws Exception {
+
+ // given
+
+ // when, then should fail
+ expectedExceptions.expectMessage("Always disabled");
+ toDoItem.setComplete(true);
+
+ // and then
+ final EventObject ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(EventObject.class);
+ assertThat(ev, is(nullValue()));
+ }
+
+ @Test
+ public void subscriberReceivesEvents() throws Exception {
+
+ // given
+ toDoItemSubscriptions.reset();
+ assertThat(toDoItemSubscriptions.getSubscriberBehaviour(), is(ToDoItemSubscriptions.Behaviour.AnyExecuteAccept));
+ assertThat(unwrap(toDoItem).isComplete(), is(false));
+
+ // when
+ toDoItem.completed();
+
+ // then
+ assertThat(unwrap(toDoItem).isComplete(), is(true));
+
+ // and then
+ final List<ToDoItem.CompletedEvent> receivedEvents = toDoItemSubscriptions.receivedEvents(ToDoItem.CompletedEvent.class);
+
+ // hide, disable, validate, executing, executed
+ // sent to both the general on(ActionInteractionEvent ev)
+ // and also the specific on(final ToDoItem.CompletedEvent ev)
+ assertThat(receivedEvents.size(), is(5*2));
+ final ToDoItem.CompletedEvent ev = receivedEvents.get(0);
+
+ ToDoItem source = ev.getSource();
+ assertThat(source, is(equalTo(unwrap(toDoItem))));
+ assertThat(ev.getIdentifier().getMemberName(), is("completed"));
+ }
+
+ @Test
+ public void subscriberVetoesEventWithRecoverableException() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
+
+ // then
+ expectedExceptions.expect(RecoverableException.class);
+
+ // when
+ toDoItem.completed();
+ }
+
+ @Test
+ public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
+
+ // then
+ expectedExceptions.expect(NonRecoverableException.class);
+
+ // when
+ toDoItem.completed();
+ }
+
+ @Test
+ public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
+
+ // when
+ toDoItem.completed();
+
+ // then
+ // (no expectedExceptions setup, expect to continue)
+ assertTrue(true);
+ }
+
+ }
+
+ /**
+ * This test demonstrates how a single service can be replaced, eg to use a mock.
+ */
+ public static class Completed_withMockService extends ToDoItemIntegTest {
+
+ private EventBusService originalEventBusService;
+ @Mock
+ private EventBusService mockEventBusService;
+
+ @Before
+ public void setUpMockEventBusService() throws Exception {
+ originalEventBusService = scenarioExecution().service(EventBusService.class);
+
+ context.checking(new Expectations() {{
+ ignoring(mockEventBusService).register(with(any(Object.class)));
+ ignoring(mockEventBusService).unregister(with(any(Object.class)));
+ }});
+
+ scenarioExecution().replaceService(originalEventBusService, mockEventBusService);
+ scenarioExecution().closeSession();
+ scenarioExecution().openSession();
+ }
+
+ @After
+ public void reinstateOriginalEventBusService() throws Exception {
+ scenarioExecution().replaceService(mockEventBusService, originalEventBusService);
+ }
+
+ @Test
+ public void raisesEvent() throws Exception {
+
+ final Sequence busRulesThenExec = context.sequence("busRulesThenExec");
+ // then
+ context.checking(new Expectations() {{
+ oneOf(mockEventBusService).post(with(completedEvent(AbstractInteractionEvent.Phase.HIDE)));
+ inSequence(busRulesThenExec);
+ oneOf(mockEventBusService).post(with(completedEvent(AbstractInteractionEvent.Phase.DISABLE)));
+ inSequence(busRulesThenExec);
+ oneOf(mockEventBusService).post(with(completedEvent(AbstractInteractionEvent.Phase.VALIDATE)));
+ inSequence(busRulesThenExec);
+ oneOf(mockEventBusService).post(with(completedEvent(AbstractInteractionEvent.Phase.EXECUTING)));
+ inSequence(busRulesThenExec);
+ oneOf(mockEventBusService).post(with(completedEvent(AbstractInteractionEvent.Phase.EXECUTED)));
+ inSequence(busRulesThenExec);
+ }});
+
+ // when
+ toDoItem.completed();
+ }
+
+ private Matcher<Object> completedEvent(final AbstractInteractionEvent.Phase phase) {
+ return new TypeSafeMatcher<Object>() {
+ @Override
+ protected boolean matchesSafely(Object item) {
+ if (!(item instanceof ToDoItem.CompletedEvent)) {
+ return false;
+ }
+
+ final ToDoItem.CompletedEvent completedEvent = (ToDoItem.CompletedEvent) item;
+ return completedEvent.getPhase() == phase;
+
+ }
+
+ @Override
+ public void describeTo(Description description) {
+ description.appendText(" instance of a ToDoItem.CompletedEvent, " + phase);
+ }
+ };
+ }
+ }
+
+
+ public static class Duplicate extends ToDoItemIntegTest {
+
+ ToDoItem duplicateToDoItem;
+
+ @Inject
+ private ClockService clockService;
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ final LocalDate todaysDate = clockService.now();
+ toDoItem.setDueBy(todaysDate);
+ toDoItem.updateCost(new BigDecimal("123.45"));
+
+ duplicateToDoItem = toDoItem.duplicate(
+ unwrap(toDoItem).default0Duplicate(),
+ unwrap(toDoItem).default1Duplicate(),
+ unwrap(toDoItem).default2Duplicate(),
+ unwrap(toDoItem).default3Duplicate(),
+ new BigDecimal("987.65"));
+
+ // then
+ assertThat(duplicateToDoItem.getDescription(), is(toDoItem.getDescription() + " - Copy"));
+ assertThat(duplicateToDoItem.getCategory(), is(toDoItem.getCategory()));
+ assertThat(duplicateToDoItem.getDueBy(), is(todaysDate));
+ assertThat(duplicateToDoItem.getCost(), is(new BigDecimal("987.65")));
+ }
+ }
+
+ public static class NotYetCompleted extends ToDoItemIntegTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ unwrap(toDoItem).setComplete(true);
+
+ // when
+ toDoItem.notYetCompleted();
+
+ // then
+ assertThat(toDoItem.isComplete(), is(false));
+ }
+
+ @Test
+ public void cannotUndoIfNotYetCompleted() throws Exception {
+
+ // given
+ assertThat(toDoItem.isComplete(), is(false));
+
+ // when, then should fail
+ expectedExceptions.expectMessage("Not yet completed");
+ toDoItem.notYetCompleted();
+ }
+
+ /**
+ * Even though {@link dom.todo.ToDoItem${symbol_pound}notYetCompleted()} is not annotated with
+ * {@link org.apache.isis.applib.annotation.ActionInteraction}, an event is still raised.
+ */
+ @Test
+ public void subscriberReceivesEvent() throws Exception {
+
+ // given
+ assertThat(toDoItemSubscriptions.getSubscriberBehaviour(), is(ToDoItemSubscriptions.Behaviour.AnyExecuteAccept));
+ unwrap(toDoItem).setComplete(true);
+
+ // when
+ toDoItem.notYetCompleted();
+
+ // then
+ assertThat(unwrap(toDoItem).isComplete(), is(false));
+
+ // and then
+ final ActionInteractionEvent<ToDoItem> ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(ActionInteractionEvent.class);
+ assertThat(ev, is(not(nullValue())));
+
+ ToDoItem source = ev.getSource();
+ assertThat(source, is(equalTo(unwrap(toDoItem))));
+ assertThat(ev.getIdentifier().getMemberName(), is("notYetCompleted"));
+ }
+ }
+ }
+
+ public static class Collections {
+
+ public static class Dependencies {
+ public static class Add extends ToDoItemIntegTest {
+
+ private ToDoItem otherToDoItem;
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ final List<ToDoItem> items = wrap(toDoItems).notYetComplete();
+ otherToDoItem = wrap(items.get(1));
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ unwrap(toDoItem).getDependencies().clear();
+ super.tearDown();
+ }
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ assertThat(toDoItem.getDependencies().size(), is(0));
+
+ // when
+ toDoItem.add(otherToDoItem);
+
+ // then
+ assertThat(toDoItem.getDependencies().size(), is(1));
+ assertThat(toDoItem.getDependencies().first(), is(unwrap(otherToDoItem)));
+ }
+
+
+ @Test
+ public void cannotDependOnSelf() throws Exception {
+
+ // then
+ expectedExceptions.expectMessage("Can't set up a dependency to self");
+
+ // when
+ toDoItem.add(toDoItem);
+ }
+
+ @Test
+ public void cannotAddIfComplete() throws Exception {
+
+ // given
+ unwrap(toDoItem).setComplete(true);
+
+ // then
+ expectedExceptions.expectMessage("Cannot add dependencies for items that are complete");
+
+ // when
+ toDoItem.add(otherToDoItem);
+ }
+
+
+ @Test
+ public void subscriberReceivesEvent() throws Exception {
+
+ // given
+ toDoItemSubscriptions.reset();
+
+ // when
+ toDoItem.add(otherToDoItem);
+
+ // then received events
+ @SuppressWarnings("unchecked")
+ final List<EventObject> receivedEvents = toDoItemSubscriptions.receivedEvents();
+
+ assertThat(receivedEvents.size(), is(7));
+ assertThat(receivedEvents.get(0) instanceof ActionInteractionEvent, is(true)); // ToDoItem${symbol_pound}add() executed
+ assertThat(receivedEvents.get(1) instanceof CollectionInteractionEvent, is(true)); // ToDoItem${symbol_pound}dependencies add, executed
+ assertThat(receivedEvents.get(2) instanceof CollectionInteractionEvent, is(true)); // ToDoItem${symbol_pound}dependencies add, executing
+ assertThat(receivedEvents.get(3) instanceof ActionInteractionEvent, is(true)); // ToDoItem${symbol_pound}add executing
+ assertThat(receivedEvents.get(4) instanceof ActionInteractionEvent, is(true)); // ToDoItem${symbol_pound}add validate
+ assertThat(receivedEvents.get(5) instanceof ActionInteractionEvent, is(true)); // ToDoItem${symbol_pound}add disable
+ assertThat(receivedEvents.get(6) instanceof ActionInteractionEvent, is(true)); // ToDoItem${symbol_pound}add hide
+
+ // inspect the collection interaction (posted programmatically in ToDoItem${symbol_pound}add)
+ final CollectionInteractionEvent<ToDoItem,ToDoItem> ciEv = (CollectionInteractionEvent<ToDoItem, ToDoItem>) toDoItemSubscriptions.mostRecentlyReceivedEvent(CollectionInteractionEvent.class);
+ assertThat(ciEv, is(notNullValue()));
+
+ assertThat(ciEv.getSource(), is(equalTo(unwrap(toDoItem))));
+ assertThat(ciEv.getIdentifier().getMemberName(), is("dependencies"));
+ assertThat(ciEv.getOf(), is(CollectionInteractionEvent.Of.ADD_TO));
+ assertThat(ciEv.getValue(), is(unwrap(otherToDoItem)));
+
+ // inspect the action interaction (posted declaratively by framework)
+ final ActionInteractionEvent<ToDoItem> aiEv = (ActionInteractionEvent<ToDoItem>) toDoItemSubscriptions.mostRecentlyReceivedEvent(ActionInteractionEvent.class);
+ assertThat(aiEv, is(notNullValue()));
+
+ assertThat(aiEv.getSource(), is(equalTo(unwrap(toDoItem))));
+ assertThat(aiEv.getIdentifier().getMemberName(), is("add"));
+ assertThat(aiEv.getArguments().size(), is(1));
+ assertThat(aiEv.getArguments().get(0), is(unwrap((Object)otherToDoItem)));
+ assertThat(aiEv.getCommand(), is(notNullValue()));
+ }
+
+ @Test
+ public void subscriberVetoesEventWithRecoverableException() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
+
+ // then
+ expectedExceptions.expect(RecoverableException.class);
+
+ // when
+ toDoItem.add(otherToDoItem);
+ }
+
+ @Test
+ public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
+
+ // then
+ expectedExceptions.expect(NonRecoverableException.class);
+
+ // when
+ toDoItem.add(otherToDoItem);
+ }
+
+ @Test
+ public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
+
+ // when
+ toDoItem.add(otherToDoItem);
+
+ // then
+ // (no expectedExceptions setup, expect to continue)
+ assertTrue(true);
+ }
+ }
+ public static class Remove extends ToDoItemIntegTest {
+
+ private ToDoItem otherToDoItem;
+ private ToDoItem yetAnotherToDoItem;
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ final List<ToDoItem> items = wrap(toDoItems).notYetComplete();
+ otherToDoItem = wrap(items.get(1));
+ yetAnotherToDoItem = wrap(items.get(2));
+
+ toDoItem.add(otherToDoItem);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ unwrap(toDoItem).getDependencies().clear();
+ super.tearDown();
+ }
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ assertThat(toDoItem.getDependencies().size(), is(1));
+
+ // when
+ toDoItem.remove(otherToDoItem);
+
+ // then
+ assertThat(toDoItem.getDependencies().size(), is(0));
+ }
+
+
+ @Test
+ public void cannotRemoveItemIfNotADependency() throws Exception {
+
+ // then
+ expectedExceptions.expectMessage("Not a dependency");
+
+ // when
+ toDoItem.remove(yetAnotherToDoItem);
+ }
+
+ @Test
+ public void cannotRemoveDependencyIfComplete() throws Exception {
+
+ // given
+ unwrap(toDoItem).setComplete(true);
+
+ // then
+ expectedExceptions.expectMessage("Cannot remove dependencies for items that are complete");
+
+ // when
+ toDoItem.remove(otherToDoItem);
+ }
+
+ @Test
+ public void subscriberVetoesEventWithRecoverableException() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
+
+ // then
+ expectedExceptions.expect(RecoverableException.class);
+
+ // when
+ toDoItem.remove(otherToDoItem);
+ }
+
+ @Test
+ public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
+
+ // then
+ expectedExceptions.expect(NonRecoverableException.class);
+
+ // when
+ toDoItem.remove(otherToDoItem);
+ }
+
+ @Test
+ public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
+
+ // when
+ toDoItem.remove(otherToDoItem);
+
+ // then
+ // (no expectedExceptions setup, expect to continue)
+ assertTrue(true);
+ }
+ }
+ }
+
+ }
+
+ public static class Properties {
+
+ public static class Attachment extends ToDoItemIntegTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ byte[] bytes = "{${symbol_escape}"foo${symbol_escape}": ${symbol_escape}"bar${symbol_escape}"}".getBytes(Charset.forName("UTF-8"));
+ final Blob newAttachment = new Blob("myfile.json", new MimeType("application/json"), bytes);
+
+ // when
+ toDoItem.setAttachment(newAttachment);
+
+ // then
+ assertThat(toDoItem.getAttachment(), is(newAttachment));
+ }
+
+ @Test
+ public void canBeNull() throws Exception {
+
+ // when
+ toDoItem.setAttachment((Blob)null);
+
+ // then
+ assertThat(toDoItem.getAttachment(), is((Blob)null));
+ }
+ }
+
+ public static class Category extends ToDoItemIntegTest {
+
+ @Test
+ public void cannotModify() throws Exception {
+
+ // when, then
+ expectedExceptions.expectMessage(containsString("Reason: Use action to update both category and subcategory."));
+ toDoItem.setCategory(ToDoItem.Category.Professional);
+ }
+ }
+
+ public static class Cost extends ToDoItemIntegTest {
+
+ private BigDecimal cost;
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ cost = toDoItem.getCost();
+ }
+
+ @Test
+ public void happyCaseUsingProperty() throws Exception {
+
+ final BigDecimal newCost = new BigDecimal("123.45");
+
+ // when
+ toDoItem.updateCost(newCost);
+
+ // then
+ assertThat(toDoItem.getCost(), is(newCost));
+ }
+
+ @Test
+ public void happyCaseUsingAction() throws Exception {
+
+ final BigDecimal newCost = new BigDecimal("123.45");
+
+ // when
+ toDoItem.updateCost(newCost);
+
+ // then
+ assertThat(toDoItem.getCost(), is(newCost));
+ }
+
+ @Test
+ public void canBeNull() throws Exception {
+
+ // when
+ toDoItem.updateCost((BigDecimal)null);
+
+ // then
+ assertThat(toDoItem.getCost(), is((BigDecimal)null));
+ }
+
+ @Test
+ public void defaultForAction() throws Exception {
+
+ // then
+ assertThat(unwrap(toDoItem).default0UpdateCost(), is(cost));
+ }
+
+ }
+
+ public static class Description extends ToDoItemIntegTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ assertThat(toDoItem.getDescription(), is("Buy bread"));
+
+ // when
+ toDoItem.setDescription("Buy bread and butter");
+
+ // then
+ assertThat(toDoItem.getDescription(), is("Buy bread and butter"));
+ }
+
+
+ @Test
+ public void failsRegex() throws Exception {
+
+ // when
+ expectedExceptions.expectMessage("Doesn't match pattern");
+ toDoItem.setDescription("exclamation marks are not allowed!!!");
+ }
+
+ @Test
+ public void cannotBeNull() throws Exception {
+
+ // when, then
+ expectedExceptions.expectMessage("Mandatory");
+ toDoItem.setDescription(null);
+ }
+
+ @Test
+ public void cannotUseModify() throws Exception {
+
+ expectedExceptions.expectMessage("Cannot invoke supporting method for 'Description'; use only property accessor/mutator");
+
+ // given
+ assertThat(toDoItem.getDescription(), is("Buy bread"));
+
+ // when
+ toDoItem.modifyDescription("Buy bread and butter");
+
+ // then
+ assertThat(toDoItem.getDescription(), is("Buy bread"));
+ }
+
+ @Test
+ public void cannotUseClear() throws Exception {
+
+ expectedExceptions.expectMessage("Cannot invoke supporting method for 'Description'; use only property accessor/mutator");
+
+ // given
+ assertThat(toDoItem.getDescription(), is("Buy bread"));
+
+ // when
+ toDoItem.clearDescription();
+
+ // then
+ assertThat(toDoItem.getDescription(), is("Buy bread"));
+ }
+
+
+ @Test
+ public void onlyJustShortEnough() throws Exception {
+
+ // when, then
+ toDoItem.setDescription(characters(100));
+ }
+
+ @Test
+ public void tooLong() throws Exception {
+
+ // then
+ expectedExceptions.expectMessage("The value proposed exceeds the maximum length of 100");
+
+ // when
+ toDoItem.setDescription(characters(101));
+ }
+
+
+ @Test
+ public void subscriberReceivesEvent() throws Exception {
+
+ // given
+ assertThat(toDoItemSubscriptions.getSubscriberBehaviour(), is(ToDoItemSubscriptions.Behaviour.AnyExecuteAccept));
+ assertThat(toDoItem.getDescription(), is("Buy bread"));
+
+ // when
+ toDoItem.setDescription("Buy bread and butter");
+
+ // then published and received
+ @SuppressWarnings("unchecked")
+ final PropertyInteractionEvent<ToDoItem,String> ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(PropertyInteractionEvent.class);
+ assertThat(ev, is(not(nullValue())));
+
+ ToDoItem source = ev.getSource();
+ assertThat(source, is(equalTo(unwrap(toDoItem))));
+ assertThat(ev.getIdentifier().getMemberName(), is("description"));
+ assertThat(ev.getOldValue(), is("Buy bread"));
+ assertThat(ev.getNewValue(), is("Buy bread and butter"));
+ }
+
+ @Test
+ public void subscriberVetoesEventWithRecoverableException() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithRecoverableException);
+
+ // then
+ expectedExceptions.expect(RecoverableException.class);
+
+ // when
+ toDoItem.setDescription("Buy bread and butter");
+ }
+
+
+ @Test
+ public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithNonRecoverableException);
+
+ // then
+ expectedExceptions.expect(NonRecoverableException.class);
+
+ // when
+ toDoItem.setDescription("Buy bread and butter");
+ }
+
+
+ @Test
+ public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
+
+ // given
+ toDoItemSubscriptions.subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteVetoWithOtherException);
+
+ // when
+ toDoItem.setDescription("Buy bread and butter");
+
+ // then
+ // (no expectedExceptions setup, expect to continue)
+ assertTrue(true);
+ }
+
+
+ private static String characters(final int n) {
+ StringBuffer buf = new StringBuffer();
+ for(int i=0; i<n; i++) {
+ buf.append("a");
+ }
+ return buf.toString();
+ }
+ }
+
+ public static class DueBy extends ToDoItemIntegTest {
+
+ @Inject
+ private ClockService clockService;
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // when
+ final LocalDate fiveDaysFromNow = clockService.now().plusDays(5);
+ toDoItem.setDueBy(fiveDaysFromNow);
+
+ // then
+ assertThat(toDoItem.getDueBy(), is(fiveDaysFromNow));
+ }
+
+
+ @Test
+ public void canBeNull() throws Exception {
+
+ // when
+ toDoItem.setDueBy((LocalDate)null);
+
+ // then
+ assertThat(toDoItem.getDueBy(), is((LocalDate)null));
+ }
+
+ @Test
+ public void canBeUpToSixDaysInPast() throws Exception {
+
+ final LocalDate nowAsLocalDate = clockService.now();
+ final LocalDate sixDaysAgo = nowAsLocalDate.plusDays(-5);
+
+ // when
+ toDoItem.setDueBy(sixDaysAgo);
+
+ // then
+ assertThat(toDoItem.getDueBy(), is(sixDaysAgo));
+ }
+
+
+ @Test
+ public void cannotBeMoreThanSixDaysInPast() throws Exception {
+
+ final LocalDate sevenDaysAgo = Clock.getTimeAsLocalDate().plusDays(-7);
+
+ // when, then
+ expectedExceptions.expectMessage("Due by date cannot be more than one week old");
+ toDoItem.setDueBy(sevenDaysAgo);
+ }
+ }
+
+ public static class Notes extends ToDoItemIntegTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ final String newNotes = "Lorem ipsum yada yada";
+
+ // when
+ toDoItem.setNotes(newNotes);
+
+ // then
+ assertThat(toDoItem.getNotes(), is(newNotes));
+ }
+
+ @Test
+ public void canBeNull() throws Exception {
+
+ // when
+ toDoItem.setNotes((String)null);
+
+ // then
+ assertThat(toDoItem.getNotes(), is((String)null));
+ }
+
+ @Test
+ public void suscriberReceivedDefaultEvent() throws Exception {
+
+ final String newNotes = "Lorem ipsum yada yada";
+
+ // when
+ toDoItem.setNotes(newNotes);
+
+ // then
+ assertThat(unwrap(toDoItem).getNotes(), is(newNotes));
+
+ // and then receive the default event.
+ @SuppressWarnings("unchecked")
+ final PropertyInteractionEvent.Default ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(PropertyInteractionEvent.Default.class);
+ assertThat(ev, is(notNullValue()));
+
+ assertThat(ev.getSource(), is((Object)unwrap(toDoItem)));
+ assertThat(ev.getNewValue(), is((Object)newNotes));
+ }
+
+
+ }
+
+ public static class OwnedBy extends ToDoItemIntegTest {
+
+ @Test
+ public void cannotModify() throws Exception {
+
+ // when, then
+ expectedExceptions.expectMessage("Always hidden");
+ toDoItem.setOwnedBy("other");
+ }
+
+
+ }
+
+ public static class Subcategory extends ToDoItemIntegTest {
+
+ @Test
+ public void cannotModify() throws Exception {
+
+ // when, then
+ expectedExceptions.expectMessage(containsString("Reason: Use action to update both category and subcategory."));
+ toDoItem.setSubcategory(ToDoItem.Subcategory.Chores);
+ }
+ }
+
+ }
+
+
+
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemsIntegTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemsIntegTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemsIntegTest.java
new file mode 100644
index 0000000..c95e9c0
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemsIntegTest.java
@@ -0,0 +1,116 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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 integration.tests;
+
+import dom.todo.ToDoItem;
+import dom.todo.ToDoItems;
+import fixture.todo.integtests.ToDoItemsIntegTestFixture;
+
+import java.util.List;
+import javax.inject.Inject;
+import org.hamcrest.Matchers;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class ToDoItemsIntegTest extends AbstractToDoIntegTest {
+
+ @Inject
+ ToDoItems toDoItems;
+
+ public static class Finders extends ToDoItemsIntegTest {
+
+ @Before
+ public void setUpData() throws Exception {
+ scenarioExecution().install(new ToDoItemsIntegTestFixture());
+ }
+
+ private int notYetCompletedSize;
+ private int completedSize;
+
+ @Before
+ public void setUp() throws Exception {
+ final List<ToDoItem> notYetCompleteItems = wrap(toDoItems).notYetComplete();
+ final List<ToDoItem> completedItems = wrap(toDoItems).complete();
+
+ notYetCompletedSize = notYetCompleteItems.size();
+ completedSize = completedItems.size();
+
+ assertThat(notYetCompletedSize, is(Matchers.greaterThan(5)));
+ }
+
+ @Test
+ public void complete_and_notYetComplete() throws Exception {
+
+ // given
+ List<ToDoItem> notYetCompleteItems = wrap(service(ToDoItems.class)).notYetComplete();
+ final ToDoItem toDoItem = wrap(notYetCompleteItems.get(0));
+
+ // when
+ toDoItem.completed();
+
+ // then
+ assertThat(wrap(service(ToDoItems.class)).notYetComplete().size(), is(notYetCompletedSize-1));
+ assertThat(wrap(service(ToDoItems.class)).complete().size(), is(completedSize+1));
+
+ // and when
+ toDoItem.notYetCompleted();
+
+ // then
+ assertThat(wrap(service(ToDoItems.class)).notYetComplete().size(), is(notYetCompletedSize));
+ assertThat(wrap(service(ToDoItems.class)).complete().size(), is(completedSize));
+ }
+ }
+
+ public static class NewToDo_and_Delete extends ToDoItemsIntegTest {
+
+ @Before
+ public void setUpData() throws Exception {
+ // none
+ }
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ int size = wrap(toDoItems).notYetComplete().size();
+
+ // when
+ final ToDoItem newToDo = toDoItems.newToDo("new todo", ToDoItem.Category.Professional, ToDoItem.Subcategory.OpenSource, null, null);
+
+ // then
+ assertThat(newToDo.getDescription(), is("new todo"));
+ assertThat(newToDo.getCategory(), is(ToDoItem.Category.Professional));
+ assertThat(wrap(service(ToDoItems.class)).notYetComplete().size(), is(size+1));
+
+ // when
+ newToDo.delete();
+
+ // then
+ assertThat(wrap(service(ToDoItems.class)).notYetComplete().size(), is(size));
+ }
+
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java
deleted file mode 100644
index 9fd3683..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemContributionsTest_updateCategory.java
+++ /dev/null
@@ -1,106 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.actions;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItem.Category;
-import dom.todo.ToDoItem.Subcategory;
-import dom.todo.ToDoItemContributions;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemContributionsTest_updateCategory extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture().withTracing());
- }
-
- @Inject
- private ToDoItems toDoItems;
- @Inject
- private ToDoItemContributions toDoItemContributions;
-
- private ToDoItemContributions toDoItemContributionsWrapper;
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = toDoItems.notYetComplete();
- toDoItem = wrap(all.get(0));
-
- toDoItemContributionsWrapper = wrap(toDoItemContributions);
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // when
- toDoItemContributionsWrapper.updateCategory(toDoItem, Category.Professional, Subcategory.Consulting);
-
- // then
- assertThat(toDoItem.getCategory(), is(Category.Professional));
- assertThat(toDoItem.getSubcategory(), is(Subcategory.Consulting));
-
- // when
- toDoItemContributionsWrapper.updateCategory(toDoItem, Category.Domestic, Subcategory.Chores);
-
- // then
- assertThat(toDoItem.getCategory(), is(Category.Domestic));
- assertThat(toDoItem.getSubcategory(), is(Subcategory.Chores));
- }
-
-
- @Test
- public void categoryCannotBeNull() throws Exception {
-
- // when, then
- expectedExceptions.expectMessage("'Category' is mandatory");
- toDoItemContributionsWrapper.updateCategory(toDoItem, null, Subcategory.Chores);
- }
-
- @Test
- public void subcategoryCanBeNull() throws Exception {
-
- // when, then
- toDoItemContributionsWrapper.updateCategory(toDoItem, Category.Professional, null);
- }
-
- @Test
- public void subcategoryMustBelongToCategory() throws Exception {
-
- // when, then
- expectedExceptions.expectMessage(containsString("Invalid subcategory"));
- toDoItemContributionsWrapper.updateCategory(toDoItem, Category.Professional, Subcategory.Chores);
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_completed.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_completed.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_completed.java
deleted file mode 100644
index 98e5ee8..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_completed.java
+++ /dev/null
@@ -1,174 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.actions;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItemSubscriptions;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.EventObject;
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.NonRecoverableException;
-import org.apache.isis.applib.RecoverableException;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-public class ToDoItemTest_completed extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
- @Inject
- private ToDoItemSubscriptions toDoItemSubscriptions;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = toDoItems.notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @After
- public void tearDown() throws Exception {
- toDoItemSubscriptions.reset();
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // given
- assertThat(toDoItem.isComplete(), is(false));
-
- // when
- toDoItem.completed();
-
- // then
- assertThat(toDoItem.isComplete(), is(true));
- }
-
- @Test
- public void cannotCompleteIfAlreadyCompleted() throws Exception {
-
- // given
- unwrap(toDoItem).setComplete(true);
-
- // when, then should fail
- expectedExceptions.expectMessage("Already completed");
- toDoItem.completed();
-
- // and then
- final EventObject ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(EventObject.class);
- assertThat(ev, is(nullValue()));
- }
-
-
- @Test
- public void cannotSetPropertyDirectly() throws Exception {
-
- // given
-
- // when, then should fail
- expectedExceptions.expectMessage("Always disabled");
- toDoItem.setComplete(true);
-
- // and then
- final EventObject ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(EventObject.class);
- assertThat(ev, is(nullValue()));
- }
-
- @Test
- public void subscriberReceivesEvent() throws Exception {
-
- // given
- assertThat(toDoItemSubscriptions.getSubscriberBehaviour(), is(ToDoItemSubscriptions.Behaviour.AcceptEvents));
- assertThat(toDoItem.isComplete(), is(false));
-
- // when
- toDoItem.completed();
-
- // then
- assertThat(toDoItem.isComplete(), is(true));
-
- // and then
- final ToDoItem.CompletedEvent ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(ToDoItem.CompletedEvent.class);
- assertThat(ev, is(not(nullValue())));
-
- ToDoItem source = ev.getSource();
- assertThat(source, is(equalTo(unwrap(toDoItem))));
- assertThat(ev.getIdentifier().getMemberName(), is("completed"));
- }
-
- @Test
- public void subscriberVetoesEventWithRecoverableException() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.RejectEventsWithRecoverableException);
-
- // then
- expectedExceptions.expect(RecoverableException.class);
-
- // when
- toDoItem.completed();
- }
-
- @Test
- public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.RejectEventsWithNonRecoverableException);
-
- // then
- expectedExceptions.expect(NonRecoverableException.class);
-
- // when
- toDoItem.completed();
- }
-
- @Test
- public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.ThrowOtherException);
-
- // when
- toDoItem.completed();
-
- // then
- // (no expectedExceptions setup, expect to continue)
- assertTrue(true);
- }
-
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_duplicate.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_duplicate.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_duplicate.java
deleted file mode 100644
index e959918..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_duplicate.java
+++ /dev/null
@@ -1,83 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.actions;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.math.BigDecimal;
-import java.util.List;
-import javax.inject.Inject;
-import org.joda.time.LocalDate;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.services.clock.ClockService;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemTest_duplicate extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
- @Inject
- private ClockService clockService;
-
- private ToDoItem toDoItem;
- private ToDoItem duplicateToDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // given
- final LocalDate todaysDate = clockService.now();
- toDoItem.setDueBy(todaysDate);
- toDoItem.updateCost(new BigDecimal("123.45"));
-
- duplicateToDoItem = toDoItem.duplicate(
- unwrap(toDoItem).default0Duplicate(),
- unwrap(toDoItem).default1Duplicate(),
- unwrap(toDoItem).default2Duplicate(),
- unwrap(toDoItem).default3Duplicate(),
- new BigDecimal("987.65"));
-
- // then
- assertThat(duplicateToDoItem.getDescription(), is(toDoItem.getDescription() + " - Copy"));
- assertThat(duplicateToDoItem.getCategory(), is(toDoItem.getCategory()));
- assertThat(duplicateToDoItem.getDueBy(), is(todaysDate));
- assertThat(duplicateToDoItem.getCost(), is(new BigDecimal("987.65")));
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_notYetCompleted.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_notYetCompleted.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_notYetCompleted.java
deleted file mode 100644
index 47ff7d8..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/actions/ToDoItemTest_notYetCompleted.java
+++ /dev/null
@@ -1,79 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.actions;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemTest_notYetCompleted extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // given
- unwrap(toDoItem).setComplete(true);
-
- // when
- toDoItem.notYetCompleted();
-
- // then
- assertThat(toDoItem.isComplete(), is(false));
- }
-
- @Test
- public void cannotUndoIfNotYetCompleted() throws Exception {
-
- // given
- assertThat(toDoItem.isComplete(), is(false));
-
- // when, then should fail
- expectedExceptions.expectMessage("Not yet completed");
- toDoItem.notYetCompleted();
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemContributionsTest_similarTo.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemContributionsTest_similarTo.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemContributionsTest_similarTo.java
deleted file mode 100644
index 451904a..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemContributionsTest_similarTo.java
+++ /dev/null
@@ -1,71 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.colls;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItemContributions;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemContributionsTest_similarTo extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
- @Inject
- private ToDoItemContributions toDoItemContributions;
-
- private ToDoItemContributions toDoItemContributionsWrapped;
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = this.toDoItems.notYetComplete();
- toDoItem = wrap(all.get(0));
-
- toDoItemContributionsWrapped = wrap(toDoItemContributions);
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // when
- List<ToDoItem> similarItems = toDoItemContributionsWrapped.similarTo(toDoItem);
-
- // then
- assertThat(similarItems.size(), is(6));
- }
-
-}
\ No newline at end of file
[30/39] ISIS-839: recreating todoapp archetype
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemTest_dependencies_add.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemTest_dependencies_add.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemTest_dependencies_add.java
deleted file mode 100644
index 3423a34..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemTest_dependencies_add.java
+++ /dev/null
@@ -1,181 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.colls;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItemSubscriptions;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.NonRecoverableException;
-import org.apache.isis.applib.RecoverableException;
-import org.apache.isis.applib.services.eventbus.CollectionAddedToEvent;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-public class ToDoItemTest_dependencies_add extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
-
- @Inject
- private ToDoItems toDoItems;
- @Inject
- private ToDoItemSubscriptions toDoItemSubscriptions;
-
- private ToDoItem toDoItem;
- private ToDoItem otherToDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> items = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(items.get(0));
- otherToDoItem = wrap(items.get(1));
- }
-
- @After
- public void tearDown() throws Exception {
- unwrap(toDoItem).getDependencies().clear();
- toDoItemSubscriptions.reset();
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // given
- assertThat(toDoItem.getDependencies().size(), is(0));
-
- // when
- toDoItem.add(otherToDoItem);
-
- // then
- assertThat(toDoItem.getDependencies().size(), is(1));
- assertThat(toDoItem.getDependencies().first(), is(unwrap(otherToDoItem)));
-
- // and then
- @SuppressWarnings("unchecked")
- final CollectionAddedToEvent<ToDoItem,ToDoItem> ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(CollectionAddedToEvent.class);
- assertThat(ev, is(not(nullValue())));
-
- ToDoItem source = ev.getSource();
- assertThat(source, is(equalTo(unwrap(toDoItem))));
- assertThat(ev.getIdentifier().getMemberName(), is("dependencies"));
- assertThat(ev.getValue(), is(unwrap(otherToDoItem)));
- }
-
-
- @Test
- public void cannotDependOnSelf() throws Exception {
-
- // then
- expectedExceptions.expectMessage("Can't set up a dependency to self");
-
- // when
- toDoItem.add(toDoItem);
- }
-
- @Test
- public void cannotAddDependencyIfComplete() throws Exception {
-
- // given
- unwrap(toDoItem).setComplete(true);
-
- // then
- expectedExceptions.expectMessage("Cannot add dependencies for items that are complete");
-
- // when
- toDoItem.add(otherToDoItem);
- }
-
-
- @Test
- public void subscriberReceivesEvent() throws Exception {
-
- // given
- assertThat(toDoItemSubscriptions.getSubscriberBehaviour(), is(ToDoItemSubscriptions.Behaviour.AcceptEvents));
-
- // when
- toDoItem.add(otherToDoItem);
-
- // then
- @SuppressWarnings("unchecked")
- final CollectionAddedToEvent<ToDoItem,ToDoItem> ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(CollectionAddedToEvent.class);
- assertThat(ev, is(not(nullValue())));
-
- ToDoItem source = ev.getSource();
- assertThat(source, is(equalTo(unwrap(toDoItem))));
- assertThat(ev.getIdentifier().getMemberName(), is("dependencies"));
- assertThat(ev.getValue(), is(unwrap(otherToDoItem)));
- }
-
- @Test
- public void subscriberVetoesEventWithRecoverableException() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.RejectEventsWithRecoverableException);
-
- // then
- expectedExceptions.expect(RecoverableException.class);
-
- // when
- toDoItem.add(otherToDoItem);
- }
-
- @Test
- public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.RejectEventsWithNonRecoverableException);
-
- // then
- expectedExceptions.expect(NonRecoverableException.class);
-
- // when
- toDoItem.add(otherToDoItem);
- }
-
- @Test
- public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.ThrowOtherException);
-
- // when
- toDoItem.add(otherToDoItem);
-
- // then
- // (no expectedExceptions setup, expect to continue)
- assertTrue(true);
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemTest_dependencies_remove.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemTest_dependencies_remove.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemTest_dependencies_remove.java
deleted file mode 100644
index de8fb37..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/colls/ToDoItemTest_dependencies_remove.java
+++ /dev/null
@@ -1,176 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.colls;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItemSubscriptions;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.NonRecoverableException;
-import org.apache.isis.applib.RecoverableException;
-import org.apache.isis.applib.services.eventbus.CollectionRemovedFromEvent;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-public class ToDoItemTest_dependencies_remove extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
- @Inject
- private ToDoItemSubscriptions toDoItemSubscriptions;
-
- private ToDoItem toDoItem;
- private ToDoItem otherToDoItem;
- private ToDoItem yetAnotherToDoItem;
-
-
- @Before
- public void setUp() throws Exception {
-
- final List<ToDoItem> items = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(items.get(0));
- otherToDoItem = wrap(items.get(1));
- yetAnotherToDoItem = wrap(items.get(2));
-
- toDoItem.add(otherToDoItem);
- }
-
- @After
- public void tearDown() throws Exception {
- unwrap(toDoItem).getDependencies().clear();
- toDoItemSubscriptions.reset();
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // given
- assertThat(toDoItem.getDependencies().size(), is(1));
-
- // when
- toDoItem.remove(otherToDoItem);
-
- // then
- assertThat(toDoItem.getDependencies().size(), is(0));
- }
-
-
- @Test
- public void cannotRemoveItemIfNotADependency() throws Exception {
-
- // then
- expectedExceptions.expectMessage("Not a dependency");
-
- // when
- toDoItem.remove(yetAnotherToDoItem);
- }
-
- @Test
- public void cannotRemoveDependencyIfComplete() throws Exception {
-
- // given
- unwrap(toDoItem).setComplete(true);
-
- // then
- expectedExceptions.expectMessage("Cannot remove dependencies for items that are complete");
-
- // when
- toDoItem.remove(otherToDoItem);
- }
-
- @Test
- public void subscriberReceivesEvent() throws Exception {
-
- // given
- assertThat(toDoItemSubscriptions.getSubscriberBehaviour(), is(ToDoItemSubscriptions.Behaviour.AcceptEvents));
- assertThat(toDoItem.getDependencies().size(), is(1));
-
- // when
- toDoItem.remove(otherToDoItem);
-
- // then
- @SuppressWarnings("unchecked")
- final CollectionRemovedFromEvent<ToDoItem,ToDoItem> ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(CollectionRemovedFromEvent.class);
- assertThat(ev, is(not(nullValue())));
-
- ToDoItem source = ev.getSource();
- assertThat(source, is(equalTo(unwrap(toDoItem))));
- assertThat(ev.getIdentifier().getMemberName(), is("dependencies"));
- assertThat(ev.getValue(), is(unwrap(otherToDoItem)));
- }
-
- @Test
- public void subscriberVetoesEventWithRecoverableException() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.RejectEventsWithRecoverableException);
-
- // then
- expectedExceptions.expect(RecoverableException.class);
-
- // when
- toDoItem.remove(otherToDoItem);
- }
-
- @Test
- public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.RejectEventsWithNonRecoverableException);
-
- // then
- expectedExceptions.expect(NonRecoverableException.class);
-
- // when
- toDoItem.remove(otherToDoItem);
- }
-
- @Test
- public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.ThrowOtherException);
-
- // when
- toDoItem.remove(otherToDoItem);
-
- // then
- // (no expectedExceptions setup, expect to continue)
- assertTrue(true);
- }
-
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemContributionsTest_priority.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemContributionsTest_priority.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemContributionsTest_priority.java
deleted file mode 100644
index 6f358c7..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemContributionsTest_priority.java
+++ /dev/null
@@ -1,75 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItemContributions;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemContributionsTest_priority extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
- @Inject
- private ToDoItemContributions toDoItemContributions;
-
- private List<ToDoItem> notYetComplete;
-
- @Before
- public void setUp() throws Exception {
- notYetComplete = wrap(toDoItems).notYetComplete();
- }
-
- @Test
- public void happyCase() throws Exception {
- assertPriority(0, 1);
- assertPriority(1, 2);
- assertPriority(2, 4);
- assertPriority(3, 6);
- assertPriority(4, 5);
- assertPriority(5, 7);
- assertPriority(6, 9);
- assertPriority(7, 8);
- assertPriority(8, 3);
- assertPriority(9, 10);
- }
-
- private void assertPriority(final int n, final int priority) {
- assertThat(toDoItemContributions.relativePriority(notYetComplete.get(n)), is(Integer.valueOf(priority)));
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_attachment.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_attachment.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_attachment.java
deleted file mode 100644
index 0e08405..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_attachment.java
+++ /dev/null
@@ -1,82 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.nio.charset.Charset;
-import java.util.List;
-import javax.activation.MimeType;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.value.Blob;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemTest_attachment extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @Test
- public void happyCase() throws Exception {
-
- byte[] bytes = "{${symbol_escape}"foo${symbol_escape}": ${symbol_escape}"bar${symbol_escape}"}".getBytes(Charset.forName("UTF-8"));
- final Blob newAttachment = new Blob("myfile.json", new MimeType("application/json"), bytes);
-
- // when
- toDoItem.setAttachment(newAttachment);
-
- // then
- assertThat(toDoItem.getAttachment(), is(newAttachment));
- }
-
- @Test
- public void canBeNull() throws Exception {
-
- // when
- toDoItem.setAttachment((Blob)null);
-
- // then
- assertThat(toDoItem.getAttachment(), is((Blob)null));
- }
-
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_category.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_category.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_category.java
deleted file mode 100644
index 75b907b..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_category.java
+++ /dev/null
@@ -1,62 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItem.Category;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.containsString;
-
-public class ToDoItemTest_category extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @Test
- public void cannotModify() throws Exception {
-
- // when, then
- expectedExceptions.expectMessage(containsString("Reason: Use action to update both category and subcategory."));
- toDoItem.setCategory(Category.Professional);
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_cost.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_cost.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_cost.java
deleted file mode 100644
index f9f2278..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_cost.java
+++ /dev/null
@@ -1,100 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.math.BigDecimal;
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemTest_cost extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- private ToDoItem toDoItem;
- private BigDecimal cost;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- cost = toDoItem.getCost();
- }
-
- @Test
- public void happyCaseUsingProperty() throws Exception {
-
- final BigDecimal newCost = new BigDecimal("123.45");
-
- // when
- toDoItem.updateCost(newCost);
-
- // then
- assertThat(toDoItem.getCost(), is(newCost));
- }
-
- @Test
- public void happyCaseUsingAction() throws Exception {
-
- final BigDecimal newCost = new BigDecimal("123.45");
-
- // when
- toDoItem.updateCost(newCost);
-
- // then
- assertThat(toDoItem.getCost(), is(newCost));
- }
-
- @Test
- public void canBeNull() throws Exception {
-
- // when
- toDoItem.updateCost((BigDecimal)null);
-
- // then
- assertThat(toDoItem.getCost(), is((BigDecimal)null));
- }
-
- @Test
- public void defaultForAction() throws Exception {
-
- // then
- assertThat(unwrap(toDoItem).default0UpdateCost(), is(cost));
- }
-
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_description.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_description.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_description.java
deleted file mode 100644
index 619520a..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_description.java
+++ /dev/null
@@ -1,220 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItemSubscriptions;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.NonRecoverableException;
-import org.apache.isis.applib.RecoverableException;
-import org.apache.isis.applib.services.eventbus.PropertyChangedEvent;
-
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-public class ToDoItemTest_description extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
- @Inject
- private ToDoItemSubscriptions toDoItemSubscriptions;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @After
- public void tearDown() throws Exception {
- toDoItemSubscriptions.reset();
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // given
- assertThat(toDoItem.getDescription(), is("Buy bread"));
-
- // when
- toDoItem.setDescription("Buy bread and butter");
-
- // then
- assertThat(toDoItem.getDescription(), is("Buy bread and butter"));
- }
-
-
- @Test
- public void failsRegex() throws Exception {
-
- // when
- expectedExceptions.expectMessage("Doesn't match pattern");
- toDoItem.setDescription("exclamation marks are not allowed!!!");
- }
-
- @Test
- public void cannotBeNull() throws Exception {
-
- // when, then
- expectedExceptions.expectMessage("Mandatory");
- toDoItem.setDescription(null);
- }
-
- @Test
- public void cannotUseModify() throws Exception {
-
- expectedExceptions.expectMessage("Cannot invoke supporting method for 'Description'; use only property accessor/mutator");
-
- // given
- assertThat(toDoItem.getDescription(), is("Buy bread"));
-
- // when
- toDoItem.modifyDescription("Buy bread and butter");
-
- // then
- assertThat(toDoItem.getDescription(), is("Buy bread"));
- }
-
- @Test
- public void cannotUseClear() throws Exception {
-
- expectedExceptions.expectMessage("Cannot invoke supporting method for 'Description'; use only property accessor/mutator");
-
- // given
- assertThat(toDoItem.getDescription(), is("Buy bread"));
-
- // when
- toDoItem.clearDescription();
-
- // then
- assertThat(toDoItem.getDescription(), is("Buy bread"));
- }
-
-
- @Test
- public void onlyJustShortEnough() throws Exception {
-
- // when, then
- toDoItem.setDescription(characters(100));
- }
-
- @Test
- public void tooLong() throws Exception {
-
- // then
- expectedExceptions.expectMessage("The value proposed exceeds the maximum length of 100");
-
- // when
- toDoItem.setDescription(characters(101));
- }
-
-
- @Test
- public void subscriberReceivesEvent() throws Exception {
-
- // given
- assertThat(toDoItemSubscriptions.getSubscriberBehaviour(), is(ToDoItemSubscriptions.Behaviour.AcceptEvents));
- assertThat(toDoItem.getDescription(), is("Buy bread"));
-
- // when
- toDoItem.setDescription("Buy bread and butter");
-
- // then published and received
- @SuppressWarnings("unchecked")
- final PropertyChangedEvent<ToDoItem,String> ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(PropertyChangedEvent.class);
- assertThat(ev, is(not(nullValue())));
-
- ToDoItem source = ev.getSource();
- assertThat(source, is(equalTo(unwrap(toDoItem))));
- assertThat(ev.getIdentifier().getMemberName(), is("description"));
- assertThat(ev.getOldValue(), is("Buy bread"));
- assertThat(ev.getNewValue(), is("Buy bread and butter"));
- }
-
- @Test
- public void subscriberVetoesEventWithRecoverableException() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.RejectEventsWithRecoverableException);
-
- // then
- expectedExceptions.expect(RecoverableException.class);
-
- // when
- toDoItem.setDescription("Buy bread and butter");
- }
-
-
- @Test
- public void subscriberVetoesEventWithNonRecoverableException() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.RejectEventsWithNonRecoverableException);
-
- // then
- expectedExceptions.expect(NonRecoverableException.class);
-
- // when
- toDoItem.setDescription("Buy bread and butter");
- }
-
-
- @Test
- public void subscriberThrowingOtherExceptionIsIgnored() throws Exception {
-
- // given
- toDoItemSubscriptions.subscriberBehaviour(ToDoItemSubscriptions.Behaviour.ThrowOtherException);
-
- // when
- toDoItem.setDescription("Buy bread and butter");
-
- // then
- // (no expectedExceptions setup, expect to continue)
- assertTrue(true);
- }
-
-
- private static String characters(final int n) {
- StringBuffer buf = new StringBuffer();
- for(int i=0; i<n; i++) {
- buf.append("a");
- }
- return buf.toString();
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_dueBy.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_dueBy.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_dueBy.java
deleted file mode 100644
index f9b043f..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_dueBy.java
+++ /dev/null
@@ -1,106 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.joda.time.LocalDate;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.clock.Clock;
-import org.apache.isis.applib.services.clock.ClockService;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemTest_dueBy extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ClockService clockService;
- @Inject
- private ToDoItems toDoItems;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @Test
- public void happyCase() throws Exception {
-
- // when
- final LocalDate fiveDaysFromNow = clockService.now().plusDays(5);
- toDoItem.setDueBy(fiveDaysFromNow);
-
- // then
- assertThat(toDoItem.getDueBy(), is(fiveDaysFromNow));
- }
-
-
- @Test
- public void canBeNull() throws Exception {
-
- // when
- toDoItem.setDueBy((LocalDate)null);
-
- // then
- assertThat(toDoItem.getDueBy(), is((LocalDate)null));
- }
-
- @Test
- public void canBeUpToSixDaysInPast() throws Exception {
-
- final LocalDate nowAsLocalDate = clockService.now();
- final LocalDate sixDaysAgo = nowAsLocalDate.plusDays(-5);
-
- // when
- toDoItem.setDueBy(sixDaysAgo);
-
- // then
- assertThat(toDoItem.getDueBy(), is(sixDaysAgo));
- }
-
-
- @Test
- public void cannotBeMoreThanSixDaysInPast() throws Exception {
-
- final LocalDate sevenDaysAgo = Clock.getTimeAsLocalDate().plusDays(-7);
-
- // when, then
- expectedExceptions.expectMessage("Due by date cannot be more than one week old");
- toDoItem.setDueBy(sevenDaysAgo);
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_notes.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_notes.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_notes.java
deleted file mode 100644
index e8b9a00..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_notes.java
+++ /dev/null
@@ -1,90 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItemSubscriptions;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.services.eventbus.PropertyChangedEvent;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemTest_notes extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- private ToDoItem toDoItem;
- private ToDoItemSubscriptions toDoItemSubscriptions;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(service(ToDoItems.class)).notYetComplete();
- toDoItem = wrap(all.get(0));
- toDoItemSubscriptions = service(ToDoItemSubscriptions.class);
- }
-
- @After
- public void tearDown() throws Exception {
- toDoItemSubscriptions.reset();
- }
-
- @Test
- public void happyCase() throws Exception {
-
- final String newNotes = "Lorem ipsum yada yada";
-
- // when
- toDoItem.setNotes(newNotes);
-
- // then
- assertThat(toDoItem.getNotes(), is(newNotes));
-
- // and then not published so not received
- @SuppressWarnings("unchecked")
- final PropertyChangedEvent<ToDoItem,String> ev = toDoItemSubscriptions.mostRecentlyReceivedEvent(PropertyChangedEvent.class);
- assertThat(ev, is(nullValue()));
- }
-
- @Test
- public void canBeNull() throws Exception {
-
- // when
- toDoItem.setNotes((String)null);
-
- // then
- assertThat(toDoItem.getNotes(), is((String)null));
- }
-
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_ownedBy.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_ownedBy.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_ownedBy.java
deleted file mode 100644
index caeb116..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_ownedBy.java
+++ /dev/null
@@ -1,61 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ToDoItemTest_ownedBy extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @Test
- public void cannotModify() throws Exception {
-
- // when, then
- expectedExceptions.expectMessage("Always hidden");
- toDoItem.setOwnedBy("other");
- }
-
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_subcategory.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_subcategory.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_subcategory.java
deleted file mode 100644
index 20579b2..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/props/ToDoItemTest_subcategory.java
+++ /dev/null
@@ -1,62 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.props;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItem.Subcategory;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.containsString;
-
-public class ToDoItemTest_subcategory extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
- }
-
- @Test
- public void cannotModify() throws Exception {
-
- // when, then
- expectedExceptions.expectMessage(containsString("Reason: Use action to update both category and subcategory."));
- toDoItem.setSubcategory(Subcategory.Chores);
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/repo/ToDoItemsTest_finders.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/repo/ToDoItemsTest_finders.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/repo/ToDoItemsTest_finders.java
deleted file mode 100644
index 03681ff..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/repo/ToDoItemsTest_finders.java
+++ /dev/null
@@ -1,84 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.repo;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.hamcrest.Matchers;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemsTest_finders extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- private int notYetCompletedSize;
- private int completedSize;
-
- @Before
- public void setUp() throws Exception {
- final List<ToDoItem> notYetCompleteItems = wrap(toDoItems).notYetComplete();
- final List<ToDoItem> completedItems = wrap(toDoItems).complete();
-
- notYetCompletedSize = notYetCompleteItems.size();
- completedSize = completedItems.size();
-
- assertThat(notYetCompletedSize, is(Matchers.greaterThan(5)));
- }
-
- @Test
- public void complete_and_notYetComplete() throws Exception {
-
- // given
- List<ToDoItem> notYetCompleteItems = wrap(service(ToDoItems.class)).notYetComplete();
- final ToDoItem toDoItem = wrap(notYetCompleteItems.get(0));
-
- // when
- toDoItem.completed();
-
- // then
- assertThat(wrap(service(ToDoItems.class)).notYetComplete().size(), is(notYetCompletedSize-1));
- assertThat(wrap(service(ToDoItems.class)).complete().size(), is(completedSize+1));
-
- // and when
- toDoItem.notYetCompleted();
-
- // then
- assertThat(wrap(service(ToDoItems.class)).notYetComplete().size(), is(notYetCompletedSize));
- assertThat(wrap(service(ToDoItems.class)).complete().size(), is(completedSize));
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/repo/ToDoItemsTest_newToDo_and_delete.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/repo/ToDoItemsTest_newToDo_and_delete.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/repo/ToDoItemsTest_newToDo_and_delete.java
deleted file mode 100644
index 6b8e94d..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/repo/ToDoItemsTest_newToDo_and_delete.java
+++ /dev/null
@@ -1,68 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.repo;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItem.Category;
-import dom.todo.ToDoItem.Subcategory;
-import dom.todo.ToDoItems;
-import integration.tests.ToDoIntegTest;
-
-import javax.inject.Inject;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemsTest_newToDo_and_delete extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- // none
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- @Test
- public void happyCase() throws Exception {
-
- // given
- int size = wrap(toDoItems).notYetComplete().size();
-
- // when
- final ToDoItem newToDo = wrap(service(ToDoItems.class)).newToDo("new todo", Category.Professional, Subcategory.OpenSource, null, null);
-
- // then
- assertThat(newToDo.getDescription(), is("new todo"));
- assertThat(newToDo.getCategory(), is(Category.Professional));
- assertThat(wrap(service(ToDoItems.class)).notYetComplete().size(), is(size+1));
-
- // when
- newToDo.delete();
-
- // then
- assertThat(wrap(service(ToDoItems.class)).notYetComplete().size(), is(size));
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/smoke/ToDoItemTest_title.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/smoke/ToDoItemTest_title.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/smoke/ToDoItemTest_title.java
deleted file mode 100644
index afbc6b7..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/smoke/ToDoItemTest_title.java
+++ /dev/null
@@ -1,116 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 integration.tests.smoke;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
-import integration.tests.ToDoIntegTest;
-
-import java.util.List;
-import javax.inject.Inject;
-import org.joda.time.LocalDate;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.isis.applib.clock.Clock;
-
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertThat;
-
-public class ToDoItemTest_title extends ToDoIntegTest {
-
- @Before
- public void setUpData() throws Exception {
- scenarioExecution().install(new ToDoItemsIntegTestFixture());
- }
-
- @Inject
- private ToDoItems toDoItems;
-
- private ToDoItem toDoItem;
- private LocalDate dueBy;
-
- @Before
- public void setUp() throws Exception {
-
- final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
- toDoItem = wrap(all.get(0));
-
- dueBy = toDoItem.getDueBy();
- }
-
-
- @Test
- public void includesDescription() throws Exception {
-
- // given
- assertThat(container().titleOf(toDoItem), containsString("Buy bread due by"));
-
- // when
- unwrap(toDoItem).setDescription("Buy bread and butter");
-
- // then
- assertThat(container().titleOf(toDoItem), containsString("Buy bread and butter due by"));
- }
-
- @Test
- public void includesDueDateIfAny() throws Exception {
-
- // given
- assertThat(container().titleOf(toDoItem), containsString("due by " + dueBy.toString("yyyy-MM-dd")));
-
- // when
- final LocalDate fiveDaysFromNow = Clock.getTimeAsLocalDate().plusDays(5);
- unwrap(toDoItem).setDueBy(fiveDaysFromNow);
-
- // then
- assertThat(container().titleOf(toDoItem), containsString("due by " + fiveDaysFromNow.toString("yyyy-MM-dd")));
- }
-
-
- @Test
- public void ignoresDueDateIfNone() throws Exception {
-
- // when
- // (since wrapped, will call clearDueBy)
- toDoItem.setDueBy(null);
-
- // then
- assertThat(container().titleOf(toDoItem), not(containsString("due by")));
- }
-
- @Test
- public void usesWhetherCompleted() throws Exception {
-
- // given
- assertThat(container().titleOf(toDoItem), not(containsString("Completed!")));
-
- // when
- toDoItem.completed();
-
- // then
- assertThat(container().titleOf(toDoItem), not(containsString("due by")));
- assertThat(container().titleOf(toDoItem), containsString("Buy bread - Completed!"));
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml
index 1ba2a5a..8b6ee60 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/pom.xml
@@ -23,7 +23,7 @@
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
- <name>Quickstart Wicket/Restful/JDO App</name>
+ <name>ToDo App</name>
<packaging>pom</packaging>
@@ -32,11 +32,8 @@
</prerequisites>
<properties>
- <isis.version>1.5.0</isis.version>
- <isis-objectstore-jdo.version>1.5.0</isis-objectstore-jdo.version>
- <isis-viewer-wicket.version>1.5.0</isis-viewer-wicket.version>
- <isis-viewer-restfulobjects.version>2.3.0</isis-viewer-restfulobjects.version>
- <isis-security-shiro.version>1.5.0</isis-security-shiro.version>
+ <isis.version>1.6.0</isis.version>
+ <isis-viewer-wicket.version>1.6.0</isis-viewer-wicket.version>
<!-- must be consistent with the versions defined by the JDO Objectstore -->
<datanucleus-accessplatform-jdo-rdbms.version>3.3.6</datanucleus-accessplatform-jdo-rdbms.version>
@@ -90,13 +87,9 @@
<version>2.16</version>
<configuration>
<includes>
- <include>**/*Test.java</include>
- <include>**/*Test_*.java</include>
- <include>**/*Spec*.java</include>
+ <include>**/*.java</include>
</includes>
<excludes>
- <exclude>**/Test*.java</exclude>
- <exclude>**/*ForTesting.java</exclude>
<exclude>**/*Abstract*.java</exclude>
</excludes>
<useFile>true</useFile>
@@ -310,14 +303,6 @@
</dependency>
<dependency>
- <groupId>org.apache.isis.objectstore</groupId>
- <artifactId>isis-objectstore-jdo</artifactId>
- <version>${isis-objectstore-jdo.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
- <dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
<version>${isis-viewer-wicket.version}</version>
@@ -325,22 +310,6 @@
<scope>import</scope>
</dependency>
- <dependency>
- <groupId>org.apache.isis.viewer</groupId>
- <artifactId>isis-viewer-restfulobjects</artifactId>
- <version>${isis-viewer-restfulobjects.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.isis.security</groupId>
- <artifactId>isis-security-shiro</artifactId>
- <version>${isis-security-shiro.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
<!-- this project's own modules -->
<dependency>
@@ -360,7 +329,6 @@
</dependency>
-
<!-- quartz scheduler integration -->
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/README.txt
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/README.txt b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/README.txt
new file mode 100644
index 0000000..4160805
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/README.txt
@@ -0,0 +1,6 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+Copy into workspace${symbol_escape}.idea${symbol_escape}runConfigurations directory, and adjust file paths for Maven tasks.
+
+
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/TodoApp_PROTOTYPE.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/TodoApp_PROTOTYPE.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/TodoApp_PROTOTYPE.xml
new file mode 100644
index 0000000..a1e657d
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/TodoApp_PROTOTYPE.xml
@@ -0,0 +1,32 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="TodoApp-PROTOTYPE" type="Application" factoryName="Application" singleton="true">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <option name="MAIN_CLASS_NAME" value="org.apache.isis.WebServer" />
+ <option name="VM_PARAMETERS" value="" />
+ <option name="PROGRAM_PARAMETERS" value="--type SERVER_PROTOTYPE --port 8080" />
+ <option name="WORKING_DIRECTORY" value="file://${symbol_dollar}MODULE_DIR${symbol_dollar}" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="${parentArtifactId}-webapp" />
+ <envs />
+ <RunnerSettings RunnerId="Debug">
+ <option name="DEBUG_PORT" value="" />
+ <option name="TRANSPORT" value="0" />
+ <option name="LOCAL" value="true" />
+ </RunnerSettings>
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Debug" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method>
+ <option name="Make" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/core/pom.xml" goal="-f pom-jdo-enhance-all.xml datanucleus:enhance -o" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/${parentArtifactId}/dom/pom.xml" goal="datanucleus:enhance -o" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/TodoApp__enhance_only_.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/TodoApp__enhance_only_.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/TodoApp__enhance_only_.xml
new file mode 100644
index 0000000..536351b
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/TodoApp__enhance_only_.xml
@@ -0,0 +1,26 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="TodoApp (enhance only)" type="Application" factoryName="Application">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <option name="MAIN_CLASS_NAME" value="org.apache.isis.Dummy" />
+ <option name="VM_PARAMETERS" value="" />
+ <option name="PROGRAM_PARAMETERS" value="" />
+ <option name="WORKING_DIRECTORY" value="file://${symbol_dollar}MODULE_DIR${symbol_dollar}" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="${parentArtifactId}-webapp" />
+ <envs />
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method>
+ <option name="Make" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/core/pom.xml" goal="-f pom-jdo-enhance-all.xml datanucleus:enhance -o" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/${parentArtifactId}/dom/pom.xml" goal="datanucleus:enhance -o" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml
index fd82d02..9fafe06 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/pom.xml
@@ -26,7 +26,7 @@
</parent>
<artifactId>${artifactId}</artifactId>
- <name>Quickstart Wicket/Restful/JDO Webapp</name>
+ <name>ToDo App Webapp</name>
<description>This module runs both the Wicket viewer and the Restfulobjects viewer in a single webapp configured to run using the datanucleus object store.</description>
@@ -156,20 +156,20 @@
<!-- other isis components -->
<dependency>
- <groupId>org.apache.isis.objectstore</groupId>
- <artifactId>isis-objectstore-jdo-datanucleus</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-impl</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.viewer</groupId>
- <artifactId>isis-viewer-restfulobjects-server</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-viewer-restfulobjects-server</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.security</groupId>
- <artifactId>isis-security-shiro</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-security-shiro</artifactId>
</dependency>
@@ -190,7 +190,39 @@
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security</artifactId>
</dependency>
-
+
+
+ <!-- isis modules -->
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-background</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-devutils-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-audit-jdo</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-command-jdo</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-publishing-jdo</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-publishingeventserializer-ro</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-settings-impl-jdo</artifactId>
+ </dependency>
+
+
<!-- to run using WebServer (optional) -->
<dependency>
<groupId>org.apache.isis.core</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/Admin.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/Admin.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/Admin.java
index 748b29e..9130c31 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/Admin.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/Admin.java
@@ -33,6 +33,7 @@ import org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoR
import org.apache.isis.objectstore.jdo.applib.service.publish.PublishedEventJdo;
import org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoRepository;
+@DomainService(menuOrder = "35")
public class Admin extends AbstractService {
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/AdminContributions.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/AdminContributions.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/AdminContributions.java
index a4b6707..1267098 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/AdminContributions.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/admin/AdminContributions.java
@@ -28,12 +28,8 @@ import org.joda.time.LocalDate;
import org.apache.isis.applib.AbstractService;
import org.apache.isis.applib.ViewModel;
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.NotInServiceMenu;
-import org.apache.isis.applib.annotation.Optional;
import org.apache.isis.applib.services.HasTransactionId;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
@@ -46,6 +42,7 @@ import org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoR
import org.apache.isis.objectstore.jdo.applib.service.publish.PublishedEventJdo;
import org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoRepository;
+@DomainService
public class AdminContributions extends AbstractService {
/**
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java
index f9bf99e..a75ecdb 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java
@@ -19,8 +19,7 @@
*/
package webapp.prototyping;
-import fixture.todo.ToDoItemsFixturesService;
-
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.value.Blob;
import org.apache.isis.applib.value.Clob;
@@ -28,8 +27,9 @@ import org.apache.isis.core.metamodel.services.devutils.DeveloperUtilitiesServic
/**
* These overrides are simply to 'move' the action underneath the
- * {@link ToDoItemsFixturesService fixtures} menu.
+ * 'Prototyping' menu.
*/
+@DomainService(menuOrder = "40.2")
public class DeveloperUtilities extends DeveloperUtilitiesServiceDefault {
@MemberOrder(name="Prototyping", sequence="90.1")
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
index a7326a8..b947ec1 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
@@ -22,17 +22,15 @@ package webapp.prototyping;
import java.net.MalformedURLException;
import java.net.URL;
-import org.apache.isis.applib.annotation.ActionSemantics;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.Prototype;
+import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.annotation.MemberOrder;
+@DomainService(menuOrder = "40.3")
public class ExternalLinksService {
public static enum ExternalLink {
ISIS_DOCUMENTATION("Apache Isis docs", "http://isis.apache.org/documentation.html"),
- PROJECT_ON_GITHUB("Project source code on Github", "https://github.com/apache/isis/tree/master/example/application/${parentArtifactId}/");
+ PROJECT_ON_GITHUB("Project source code on Github", "https://github.com/apache/isis/tree/master/example/application/quickstart_wicket_restful_jdo/");
private final String title;
private final String url;
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
new file mode 100644
index 0000000..5c7678f
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
@@ -0,0 +1,42 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+ * 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 webapp.prototyping;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.viewer.wicket.viewer.applib.WicketDeveloperUtilitiesService;
+
+/**
+ * These overrides are simply to 'move' the action underneath the
+ * 'Prototyping' menu.
+ */
+@DomainService(menuOrder = "40.3")
+public class WicketDeveloperUtilities extends WicketDeveloperUtilitiesService {
+
+ @Named("Clear i18n Cache")
+ @MemberOrder(name="Prototyping", sequence="90.3")
+ @Override
+ public void resetI18nCache() {
+ super.resetI18nCache();
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/ToDoApplication_en.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/ToDoApplication_en.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/ToDoApplication_en.properties
new file mode 100644
index 0000000..65dc6ea
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/ToDoApplication_en.properties
@@ -0,0 +1,54 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${symbol_pound}
+${symbol_pound} Licensed to the Apache Software Foundation (ASF) under one
+${symbol_pound} or more contributor license agreements. See the NOTICE file
+${symbol_pound} distributed with this work for additional information
+${symbol_pound} regarding copyright ownership. The ASF licenses this file
+${symbol_pound} to you under the Apache License, Version 2.0 (the
+${symbol_pound} "License"); you may not use this file except in compliance
+${symbol_pound} with the License. You may obtain a copy of the License at
+${symbol_pound}
+${symbol_pound} http://www.apache.org/licenses/LICENSE-2.0
+${symbol_pound}
+${symbol_pound} Unless required by applicable law or agreed to in writing,
+${symbol_pound} software distributed under the License is distributed on an
+${symbol_pound} "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+${symbol_pound} KIND, either express or implied. See the License for the
+${symbol_pound} specific language governing permissions and limitations
+${symbol_pound} under the License.
+${symbol_pound}
+
+
+${symbol_pound} override WicketSignInPage.properties
+loginHeader=Login
+
+${symbol_pound} override PageAbstract.properties
+aboutLabel=About
+logoutLabel=Logout
+
+${symbol_pound} override EntityPropertiesForm.properties and also
+${symbol_pound} override ActionParametersFormPanel.properties
+okLabel=OK
+cancelLabel=Cancel
+editLabel=Edit
+
+
+
+
+${symbol_pound}
+${symbol_pound} 3rd-party components
+${symbol_pound}
+
+${symbol_pound} Select2Choice
+
+${symbol_pound}noMatches=...
+${symbol_pound}inputTooShortSingular=...
+${symbol_pound}inputTooShortPlural=...
+${symbol_pound}loadMore=...
+${symbol_pound}searching=...
+
+${symbol_pound} datatables
+${symbol_pound}no-records-found=...
+
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/realm1.ini
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/realm1.ini b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/realm1.ini
index 13246ad..311694b 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/realm1.ini
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/realm1.ini
@@ -38,6 +38,18 @@ bob = pass, user_role, self-install_role
+#
+# some additional users/roles
+# require IsisPermissionResolver to be configured in shiro.ini, and
+# require additional role/perms to be configured below in [roles]
+#
+
+# # fred should have access to everything except the analysis features
+# fred = pass,isisperms_all_but_analysis_role
+# # bill should have access to everything (the admin role 'trumps' the vetos)
+# bill = pass,isisperms_all_but_analysis_role,isisperms_admin_role
+
+
# -----------------------------------------------------------------------------
# Roles with assigned permissions
#
@@ -66,3 +78,17 @@ analysis_role = *:ToDoItemAnalysis:*:*,\
self-install_role = *:ToDoItemsFixturesService:installFixtures:*
admin_role = *
+
+
+
+#
+# some additional role/perms
+# require IsisPermissionResolver to be configured in shiro.ini
+#
+
+# isisperms_all_but_analysis_role = aba/*,\
+# !aba/*:ToDoItemAnalysis:*,\
+# !aba/*:ToDoItemsByCategoryViewModel:*:*,\
+# !aba/*:ToDoItemsByDateRangeViewModel:*:*
+# isisperms_admin_role = adm/*
+
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html
index a71ec99..dda189b 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html
@@ -21,16 +21,17 @@
under the License.
-->
<p class="intro">
- <a href="http://isis.apache.org">Apache Isis</a>™ is a framework to let you rapidly develop
+ <a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a platform to let you rapidly develop
domain-driven apps in Java.
<br/>
<br/>
This app has been generated using Isis'
- <a href="http://isis.apache.org/getting-started/quickstart-archetype.html">quickstart</a> archetype,
+ <a href="http://isis.apache.org/intro/getting-started/todo%61pp-archetype.html" target="_blank">TodoApp</a> archetype,
which configures Isis' most commonly used components in a straightforward "todo" app.
<br/>
<br/>
- The core domain functionality class is provided by the <a href="https://github.com/apache/isis/blob/master/example/application/${parentArtifactId}/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank">ToDoItem</a> domain class.
+ The core functionality of the app is provided by the
+ <a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank">ToDoItem</a> domain class.
Supporting services provide additional capabilities.
<br/>
<br/>
[11/39] ISIS-833: reverting isis-module-wrapper -> isis-core-wrapper.
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
new file mode 100644
index 0000000..041083e
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
@@ -0,0 +1,39 @@
+/*
+ * 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.wrapper;
+
+
+import org.apache.isis.applib.annotation.DomainService;
+
+/**
+ * This service provides the ability to "wrap" of a domain object such that it can
+ * be interacted with while enforcing the hide/disable/validate rules implies by
+ * the Isis programming model.
+ *
+ * <p>
+ * This implementation has no UI-visible actions and is the supported implementation, so it is annotated with
+ * {@link org.apache.isis.applib.annotation.DomainService}. This means that by including
+ * <tt>o.a.i.core:isis-core-wrapper</tt> on the classpath, the service is automatically registered; no further
+ * configuration is required.
+ */
+@DomainService
+public class WrapperFactoryDefault extends WrapperFactoryJavassist {
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryJavassist.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryJavassist.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryJavassist.java
new file mode 100644
index 0000000..e71580f
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryJavassist.java
@@ -0,0 +1,30 @@
+/*
+ * 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.wrapper;
+
+import org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist;
+
+public class WrapperFactoryJavassist extends WrapperFactoryAbstract {
+
+ public WrapperFactoryJavassist() {
+ super(new ProxyInstantiatorForJavassist());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcher.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcher.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcher.java
new file mode 100644
index 0000000..2dfa70c
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcher.java
@@ -0,0 +1,28 @@
+/*
+ * 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.wrapper.dispatchers;
+
+import org.apache.isis.applib.events.InteractionEvent;
+
+public interface InteractionEventDispatcher {
+
+ void dispatch(InteractionEvent interactionEvent);
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcherTypeSafe.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcherTypeSafe.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcherTypeSafe.java
new file mode 100644
index 0000000..c568633
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcherTypeSafe.java
@@ -0,0 +1,34 @@
+/*
+ * 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.wrapper.dispatchers;
+
+import org.apache.isis.applib.events.InteractionEvent;
+
+public abstract class InteractionEventDispatcherTypeSafe<T extends InteractionEvent> implements InteractionEventDispatcher {
+
+ public abstract void dispatchTypeSafe(T interactionEvent);
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public void dispatch(final InteractionEvent interactionEvent) {
+ dispatchTypeSafe((T) interactionEvent);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/AbstractCollectionInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/AbstractCollectionInvocationHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/AbstractCollectionInvocationHandler.java
new file mode 100644
index 0000000..b8a4464
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/AbstractCollectionInvocationHandler.java
@@ -0,0 +1,92 @@
+/*
+ * 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.wrapper.handlers;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.events.CollectionMethodEvent;
+import org.apache.isis.applib.events.InteractionEvent;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+
+abstract class AbstractCollectionInvocationHandler<T, C> extends DelegatingInvocationHandlerDefault<C> {
+
+ private final List<Method> interceptedMethods = Lists.newArrayList();
+ private final List<Method> vetoedMethods = Lists.newArrayList();
+
+ private final String collectionName;
+ private final OneToManyAssociation oneToManyAssociation;
+ private final T domainObject;
+
+ public AbstractCollectionInvocationHandler(final C collectionOrMapToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
+ super(collectionOrMapToProxy, handler.getHeadlessViewer(), handler.getExecutionMode());
+ this.collectionName = collectionName;
+ this.oneToManyAssociation = otma;
+ this.domainObject = handler.getDelegate();
+ }
+
+ protected Method intercept(final Method method) {
+ this.interceptedMethods.add(method);
+ return method;
+ }
+
+ protected Method veto(final Method method) {
+ this.vetoedMethods.add(method);
+ return method;
+ }
+
+ public String getCollectionName() {
+ return collectionName;
+ }
+
+ public OneToManyAssociation getCollection() {
+ return oneToManyAssociation;
+ }
+
+ public T getDomainObject() {
+ return domainObject;
+ }
+
+ @Override
+ public Object invoke(final Object collectionObject, final Method method, final Object[] args) throws Throwable {
+
+ // delegate
+ final Object returnValueObj = delegate(method, args);
+
+ if (interceptedMethods.contains(method)) {
+
+ resolveIfRequired(domainObject);
+
+ final InteractionEvent ev = new CollectionMethodEvent(getDelegate(), getCollection().getIdentifier(), getDomainObject(), method.getName(), args, returnValueObj);
+ notifyListeners(ev);
+ return returnValueObj;
+ }
+
+ if (vetoedMethods.contains(method)) {
+ throw new UnsupportedOperationException(String.format("Method '%s' may not be called directly.", method.getName()));
+ }
+
+ return returnValueObj;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/CollectionInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/CollectionInvocationHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/CollectionInvocationHandler.java
new file mode 100644
index 0000000..bcf2973
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/CollectionInvocationHandler.java
@@ -0,0 +1,53 @@
+/*
+ * 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.wrapper.handlers;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.isis.core.commons.lang.ObjectExtensions;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+
+class CollectionInvocationHandler<T, R> extends AbstractCollectionInvocationHandler<T, R> {
+
+ public CollectionInvocationHandler(final R collectionToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
+ super(collectionToProxy, collectionName, handler, otma);
+
+ try {
+ intercept(ObjectExtensions.getMethod(collectionToProxy, "contains", Object.class));
+ intercept(ObjectExtensions.getMethod(collectionToProxy, "size"));
+ intercept(ObjectExtensions.getMethod(collectionToProxy, "isEmpty"));
+ if (collectionToProxy instanceof List) {
+ intercept(ObjectExtensions.getMethod(collectionToProxy, "get", int.class));
+ }
+ veto(ObjectExtensions.getMethod(collectionToProxy, "add", Object.class));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "remove", Object.class));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "addAll", Collection.class));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "removeAll", Collection.class));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "retainAll", Collection.class));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "clear"));
+ } catch (final NoSuchMethodException e) {
+ // ///CLOVER:OFF
+ throw new RuntimeException("A Collection method could not be found: " + e.getMessage());
+ // ///CLOVER:ON
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandler.java
new file mode 100644
index 0000000..d424f64
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandler.java
@@ -0,0 +1,32 @@
+/*
+ * 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.wrapper.handlers;
+
+import java.lang.reflect.InvocationHandler;
+
+public interface DelegatingInvocationHandler<T> extends InvocationHandler {
+
+ T getDelegate();
+
+ public boolean isResolveObjectChangedEnabled();
+
+ public void setResolveObjectChangedEnabled(boolean resolveObjectChangedEnabled);
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
new file mode 100644
index 0000000..e1b7cdd
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
@@ -0,0 +1,131 @@
+/*
+ * 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.wrapper.handlers;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.isis.applib.events.InteractionEvent;
+import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerObjectChanged;
+import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerResolve;
+
+public class DelegatingInvocationHandlerDefault<T> implements DelegatingInvocationHandler<T> {
+
+ private final T delegate;
+ protected final WrapperFactory wrapperFactory;
+ private final ExecutionMode executionMode;
+
+ protected final Method equalsMethod;
+ protected final Method hashCodeMethod;
+ protected final Method toStringMethod;
+
+ private final DomainObjectContainerObjectChanged domainObjectContainerObjectChanged;
+ private final DomainObjectContainerResolve domainObjectContainerResolve;
+
+ private boolean resolveObjectChangedEnabled;
+
+ public DelegatingInvocationHandlerDefault(final T delegate, final WrapperFactory headlessViewer, final ExecutionMode executionMode) {
+ if (delegate == null) {
+ throw new IllegalArgumentException("delegate must not be null");
+ }
+ this.delegate = delegate;
+ this.wrapperFactory = headlessViewer;
+ this.executionMode = executionMode;
+
+ this.domainObjectContainerResolve = new DomainObjectContainerResolve();
+ this.domainObjectContainerObjectChanged = new DomainObjectContainerObjectChanged();
+
+ try {
+ equalsMethod = delegate.getClass().getMethod("equals", new Class[] { Object.class });
+ hashCodeMethod = delegate.getClass().getMethod("hashCode", new Class[] {});
+ toStringMethod = delegate.getClass().getMethod("toString", new Class[] {});
+ } catch (final NoSuchMethodException e) {
+ // ///CLOVER:OFF
+ throw new RuntimeException("An Object method could not be found: " + e.getMessage());
+ // ///CLOVER:ON
+ }
+ }
+
+ @Override
+ public boolean isResolveObjectChangedEnabled() {
+ return resolveObjectChangedEnabled;
+ }
+
+ @Override
+ public void setResolveObjectChangedEnabled(final boolean resolveObjectChangedEnabled) {
+ this.resolveObjectChangedEnabled = resolveObjectChangedEnabled;
+ }
+
+ protected void resolveIfRequired(final ObjectAdapter targetAdapter) {
+ resolveIfRequired(targetAdapter.getObject());
+ }
+
+ protected void resolveIfRequired(final Object domainObject) {
+ if (resolveObjectChangedEnabled) {
+ domainObjectContainerResolve.resolve(domainObject);
+ }
+ }
+
+ protected void objectChangedIfRequired(final ObjectAdapter targetAdapter) {
+ objectChangedIfRequired(targetAdapter.getObject());
+ }
+
+ protected void objectChangedIfRequired(final Object domainObject) {
+ if (resolveObjectChangedEnabled) {
+ domainObjectContainerObjectChanged.objectChanged(domainObject);
+ }
+ }
+
+ public WrapperFactory getHeadlessViewer() {
+ return wrapperFactory;
+ }
+
+ @Override
+ public T getDelegate() {
+ return delegate;
+ }
+
+ public ExecutionMode getExecutionMode() {
+ return executionMode;
+ }
+
+ protected Object delegate(final Method method, final Object[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
+
+ return method.invoke(getDelegate(), args);
+ }
+
+ protected boolean isObjectMethod(final Method method) {
+ return toStringMethod.equals(method) || hashCodeMethod.equals(method) || equalsMethod.equals(method);
+ }
+
+ @Override
+ public Object invoke(final Object object, final Method method, final Object[] args) throws Throwable {
+ return method.invoke(object, args);
+ }
+
+ protected InteractionEvent notifyListeners(final InteractionEvent interactionEvent) {
+ wrapperFactory.notifyListeners(interactionEvent);
+ return interactionEvent;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
new file mode 100644
index 0000000..d505add
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -0,0 +1,720 @@
+/*
+ * 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.wrapper.handlers;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.events.*;
+import org.apache.isis.applib.filter.Filter;
+import org.apache.isis.applib.services.wrapper.*;
+import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
+import org.apache.isis.core.metamodel.consent.InteractionResult;
+import org.apache.isis.core.metamodel.facetapi.DecoratingFacet;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.facets.ImperativeFacet.Intent;
+import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
+
+public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandlerDefault<T> {
+
+ private final Map<Method, Collection<?>> collectionViewObjectsByMethod = new HashMap<Method, Collection<?>>();
+ private final Map<Method, Map<?, ?>> mapViewObjectsByMethod = new HashMap<Method, Map<?, ?>>();
+
+ private final AuthenticationSessionProvider authenticationSessionProvider;
+ private final SpecificationLoader specificationLookup;
+ private final AdapterManager adapterManager;
+ private final ObjectPersistor objectPersistor;
+
+ private final ProxyContextHandler proxy;
+ private final ExecutionMode executionMode;
+
+ /**
+ * The <tt>title()</tt> method; may be <tt>null</tt>.
+ */
+ protected Method titleMethod;
+
+ /**
+ * The <tt>__isis_save()</tt> method from {@link WrapperObject#__isis_save()}.
+ */
+ protected Method __isis_saveMethod;
+
+ /**
+ * The <tt>save()</tt> method from {@link WrapperObject#save()}.
+ */
+ @Deprecated
+ protected Method saveMethod;
+
+ /**
+ * The <tt>__isis_wrapped()</tt> method from {@link WrapperObject#__isis_wrapped()}.
+ */
+ protected Method __isis_wrappedMethod;
+
+ /**
+ * The <tt>wrapped()</tt> method from {@link WrapperObject#wrapped()}.
+ */
+ @Deprecated
+ protected Method wrappedMethod;
+
+ /**
+ * The <tt>__isis_executionMode()</tt> method from {@link WrapperObject#__isis_executionMode()}.
+ */
+ protected Method __isis_executionMode;
+
+ public DomainObjectInvocationHandler(
+ final T delegate,
+ final WrapperFactory wrapperFactory,
+ final ExecutionMode mode,
+ final AuthenticationSessionProvider authenticationSessionProvider,
+ final SpecificationLoader specificationLookup,
+ final AdapterManager adapterManager,
+ final ObjectPersistor objectPersistor,
+ final ProxyContextHandler proxy) {
+ super(delegate, wrapperFactory, mode);
+
+ this.proxy = proxy;
+ this.authenticationSessionProvider = authenticationSessionProvider;
+ this.specificationLookup = specificationLookup;
+ this.adapterManager = adapterManager;
+ this.objectPersistor = objectPersistor;
+ this.executionMode = mode;
+
+ try {
+ titleMethod = delegate.getClass().getMethod("title", new Class[]{});
+ __isis_saveMethod = WrapperObject.class.getMethod("__isis_save", new Class[]{});
+ __isis_wrappedMethod = WrapperObject.class.getMethod("__isis_wrapped", new Class[]{});
+ __isis_executionMode = WrapperObject.class.getMethod("__isis_executionMode", new Class[]{});
+ saveMethod = WrapperObject.class.getMethod("save", new Class[] {});
+ wrappedMethod = WrapperObject.class.getMethod("wrapped", new Class[] {});
+ } catch (final NoSuchMethodException e) {
+ }
+ }
+
+ @Override
+ public Object invoke(final Object proxyObject, final Method method, final Object[] args) throws Throwable {
+
+ if (isObjectMethod(method)) {
+ return delegate(method, args);
+ }
+
+ // workaround for JDO-enhanced..
+ if(isJdoMethod(method)) {
+ return delegate(method, args);
+ }
+
+ if(isInjectMethod(method)) {
+ return delegate(method, args);
+ }
+
+ final ObjectAdapter targetAdapter = getAdapterManager().adapterFor(getDelegate());
+
+ if (isTitleMethod(method)) {
+ return handleTitleMethod(method, args, targetAdapter);
+ }
+
+
+ final ObjectSpecification targetNoSpec = targetAdapter.getSpecification();
+
+ // save method, through the proxy
+ if (isSaveMethod(method)) {
+ return handleSaveMethod(getAuthenticationSession(), targetAdapter, targetNoSpec);
+ }
+
+ if (isWrappedMethod(method)) {
+ return getDelegate();
+ }
+
+ if (isExecutionModeMethod(method)) {
+ return executionMode;
+ }
+
+ final ObjectMember objectMember = locateAndCheckMember(method);
+
+ final String memberName = objectMember.getName();
+
+ final Intent intent = ImperativeFacet.Util.getIntent(objectMember, method);
+ if(intent == Intent.CHECK_IF_HIDDEN || intent == Intent.CHECK_IF_DISABLED) {
+ throw new UnsupportedOperationException(String.format("Cannot invoke supporting method '%s'", memberName));
+ }
+
+ final String methodName = method.getName();
+
+ if (intent == Intent.DEFAULTS || intent == Intent.CHOICES_OR_AUTOCOMPLETE) {
+ return method.invoke(getDelegate(), args);
+ }
+
+ if (objectMember.isOneToOneAssociation()) {
+
+ if (intent == Intent.CHECK_IF_VALID || intent == Intent.MODIFY_PROPERTY_SUPPORTING) {
+ throw new UnsupportedOperationException(String.format("Cannot invoke supporting method for '%s'; use only property accessor/mutator", memberName));
+ }
+
+ final OneToOneAssociation otoa = (OneToOneAssociation) objectMember;
+
+ if (intent == Intent.ACCESSOR) {
+ return handleGetterMethodOnProperty(args, targetAdapter, otoa, methodName);
+ }
+
+ if (intent == Intent.MODIFY_PROPERTY || intent == Intent.INITIALIZATION) {
+ return handleSetterMethodOnProperty(args, getAuthenticationSession(), targetAdapter, otoa, methodName);
+ }
+ }
+ if (objectMember.isOneToManyAssociation()) {
+
+ if (intent == Intent.CHECK_IF_VALID) {
+ throw new UnsupportedOperationException(String.format("Cannot invoke supporting method '%s'; use only collection accessor/mutator", memberName));
+ }
+
+ final OneToManyAssociation otma = (OneToManyAssociation) objectMember;
+ if (intent == Intent.ACCESSOR) {
+ return handleGetterMethodOnCollection(method, args, targetAdapter, otma, memberName);
+ }
+ if (intent == Intent.MODIFY_COLLECTION_ADD) {
+ return handleCollectionAddToMethod(args, targetAdapter, otma, methodName);
+ }
+ if (intent == Intent.MODIFY_COLLECTION_REMOVE) {
+ return handleCollectionRemoveFromMethod(args, targetAdapter, otma, methodName);
+ }
+ }
+
+ if (objectMember instanceof ObjectAction) {
+
+ if (intent == Intent.CHECK_IF_VALID) {
+ throw new UnsupportedOperationException(String.format("Cannot invoke supporting method '%s'; use only the 'invoke' method", memberName));
+ }
+
+ final ObjectAction noa = (ObjectAction) objectMember;
+ return handleActionMethod(args, getAuthenticationSession(), targetAdapter, noa, memberName);
+ }
+
+ throw new UnsupportedOperationException(String.format("Unknown member type '%s'", objectMember));
+ }
+
+ private boolean isJdoMethod(final Method method) {
+ return methodStartsWith(method, "jdo");
+ }
+
+ private boolean isInjectMethod(final Method method) {
+ return methodStartsWith(method, "inject");
+ }
+
+ private boolean methodStartsWith(final Method method, final String prefix) {
+ return method.getName().startsWith(prefix);
+ }
+
+ public List<Facet> getImperativeFacets(final ObjectMember objectMember, final Method method) {
+ final List<Facet> imperativeFacets = objectMember.getFacets(new Filter<Facet>() {
+ @Override
+ public boolean accept(final Facet facet) {
+ final ImperativeFacet imperativeFacet = asImperativeFacet(facet);
+ if (imperativeFacet == null) {
+ return false;
+ }
+ return imperativeFacet.getMethods().contains(method);
+ }
+
+ private ImperativeFacet asImperativeFacet(final Facet facet) {
+ if (facet == null) {
+ return null;
+ }
+ if (facet instanceof ImperativeFacet) {
+ return (ImperativeFacet) facet;
+ }
+ Facet underlyingFacet = facet.getUnderlyingFacet();
+ return asImperativeFacet(underlyingFacet);
+ }
+ });
+
+ // there will be at least one
+ if (imperativeFacets.isEmpty()) {
+ throw new IllegalStateException("should be at least one imperative facet");
+ }
+ return imperativeFacets;
+ }
+
+ private static boolean instanceOf(final List<?> objects, final Class<?>... superTypes) {
+ for (final Class<?> superType : superTypes) {
+ // REVIEW: this is all a bit hacky...
+ for (Object obj : objects) {
+ // handle the *decorators
+ if(obj instanceof DecoratingFacet) {
+ DecoratingFacet<?> decoratingFacet = (DecoratingFacet<?>) obj;
+ obj = ((DecoratingFacet<?>) obj).getDecoratedFacet();
+ }
+ if (superType.isAssignableFrom(obj.getClass())) {
+ return true;
+ }
+ if(obj instanceof Facet) {
+ Facet facet = (Facet) obj;
+ // handle any wrapping (eg PostPropertyChangedSetterEventFacet)
+ Facet underlyingFacet = facet.getUnderlyingFacet();
+ if(underlyingFacet != null && superType.isAssignableFrom(obj.getClass())) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // title
+ // /////////////////////////////////////////////////////////////////
+
+ private Object handleTitleMethod(final Method method, final Object[] args, final ObjectAdapter targetAdapter) throws IllegalAccessException, InvocationTargetException {
+
+ resolveIfRequired(targetAdapter);
+
+ final ObjectSpecification targetNoSpec = targetAdapter.getSpecification();
+ final ObjectTitleContext titleContext = targetNoSpec.createTitleInteractionContext(getAuthenticationSession(), InteractionInvocationMethod.BY_USER, targetAdapter);
+ final ObjectTitleEvent titleEvent = titleContext.createInteractionEvent();
+ notifyListeners(titleEvent);
+ return titleEvent.getTitle();
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // save
+ // /////////////////////////////////////////////////////////////////
+
+ private Object handleSaveMethod(final AuthenticationSession session, final ObjectAdapter targetAdapter, final ObjectSpecification targetNoSpec) {
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ final InteractionResult interactionResult = targetNoSpec.isValidResult(targetAdapter);
+ notifyListenersAndVetoIfRequired(interactionResult);
+ }
+
+ if (getExecutionMode().shouldExecute()) {
+ if (targetAdapter.isTransient()) {
+ getObjectPersistor().makePersistent(targetAdapter);
+ }
+ }
+ return null;
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // property - access
+ // /////////////////////////////////////////////////////////////////
+
+ private Object handleGetterMethodOnProperty(final Object[] args, final ObjectAdapter targetAdapter, final OneToOneAssociation otoa, final String methodName) {
+
+ if (args.length != 0) {
+ throw new IllegalArgumentException("Invoking a 'get' should have no arguments");
+ }
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ checkVisibility(getAuthenticationSession(), targetAdapter, otoa);
+ }
+
+ resolveIfRequired(targetAdapter);
+
+ final ObjectAdapter currentReferencedAdapter = otoa.get(targetAdapter);
+ final Object currentReferencedObj = ObjectAdapter.Util.unwrap(currentReferencedAdapter);
+
+ final PropertyAccessEvent ev = new PropertyAccessEvent(getDelegate(), otoa.getIdentifier(), currentReferencedObj);
+ notifyListeners(ev);
+ return currentReferencedObj;
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // property - modify
+ // /////////////////////////////////////////////////////////////////
+
+ private Object handleSetterMethodOnProperty(final Object[] args, final AuthenticationSession session, final ObjectAdapter targetAdapter, final OneToOneAssociation otoa, final String methodName) {
+ if (args.length != 1) {
+ throw new IllegalArgumentException("Invoking a setter should only have a single argument");
+ }
+
+ final Object argumentObj = underlying(args[0]);
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ checkVisibility(getAuthenticationSession(), targetAdapter, otoa);
+ checkUsability(getAuthenticationSession(), targetAdapter, otoa);
+ }
+
+ final ObjectAdapter argumentAdapter = argumentObj != null ? getAdapterManager().adapterFor(argumentObj) : null;
+
+ resolveIfRequired(targetAdapter);
+
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ final InteractionResult interactionResult = otoa.isAssociationValid(targetAdapter, argumentAdapter).getInteractionResult();
+ notifyListenersAndVetoIfRequired(interactionResult);
+ }
+
+ if (getExecutionMode().shouldExecute()) {
+ otoa.set(targetAdapter, argumentAdapter);
+ }
+
+ objectChangedIfRequired(targetAdapter);
+
+ return null;
+ }
+
+
+ // /////////////////////////////////////////////////////////////////
+ // collection - access
+ // /////////////////////////////////////////////////////////////////
+
+ private Object handleGetterMethodOnCollection(final Method method, final Object[] args, final ObjectAdapter targetAdapter, final OneToManyAssociation otma, final String memberName) {
+
+
+ if (args.length != 0) {
+ throw new IllegalArgumentException("Invoking a 'get' should have no arguments");
+ }
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ checkVisibility(getAuthenticationSession(), targetAdapter, otma);
+ }
+
+ resolveIfRequired(targetAdapter);
+
+ final ObjectAdapter currentReferencedAdapter = otma.get(targetAdapter);
+ final Object currentReferencedObj = ObjectAdapter.Util.unwrap(currentReferencedAdapter);
+
+ final CollectionAccessEvent ev = new CollectionAccessEvent(getDelegate(), otma.getIdentifier());
+
+ if (currentReferencedObj instanceof Collection) {
+ final Collection<?> collectionViewObject = lookupViewObject(method, memberName, (Collection<?>) currentReferencedObj, otma);
+ notifyListeners(ev);
+ return collectionViewObject;
+ } else if (currentReferencedObj instanceof Map) {
+ final Map<?, ?> mapViewObject = lookupViewObject(method, memberName, (Map<?, ?>) currentReferencedObj, otma);
+ notifyListeners(ev);
+ return mapViewObject;
+ }
+ throw new IllegalArgumentException(String.format("Collection type '%s' not supported by framework", currentReferencedObj.getClass().getName()));
+ }
+
+ /**
+ * Looks up (or creates) a proxy for this object.
+ */
+ private Collection<?> lookupViewObject(final Method method, final String memberName, final Collection<?> collectionToLookup, final OneToManyAssociation otma) {
+ Collection<?> collectionViewObject = collectionViewObjectsByMethod.get(method);
+ if (collectionViewObject == null) {
+ if (collectionToLookup instanceof WrapperObject) {
+ collectionViewObject = collectionToLookup;
+ } else {
+ collectionViewObject = proxy.proxy(collectionToLookup, memberName, this, otma);
+ }
+ collectionViewObjectsByMethod.put(method, collectionViewObject);
+ }
+ return collectionViewObject;
+ }
+
+ private Map<?, ?> lookupViewObject(final Method method, final String memberName, final Map<?, ?> mapToLookup, final OneToManyAssociation otma) {
+ Map<?, ?> mapViewObject = mapViewObjectsByMethod.get(method);
+ if (mapViewObject == null) {
+ if (mapToLookup instanceof WrapperObject) {
+ mapViewObject = mapToLookup;
+ } else {
+ mapViewObject = proxy.proxy(mapToLookup, memberName, this, otma);
+ }
+ mapViewObjectsByMethod.put(method, mapViewObject);
+ }
+ return mapViewObject;
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // collection - add to
+ // /////////////////////////////////////////////////////////////////
+
+ private Object handleCollectionAddToMethod(final Object[] args, final ObjectAdapter targetAdapter, final OneToManyAssociation otma, final String methodName) {
+
+ if (args.length != 1) {
+ throw new IllegalArgumentException("Invoking a addTo should only have a single argument");
+ }
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ checkVisibility(getAuthenticationSession(), targetAdapter, otma);
+ checkUsability(getAuthenticationSession(), targetAdapter, otma);
+ }
+
+ resolveIfRequired(targetAdapter);
+
+ final Object argumentObj = underlying(args[0]);
+ if (argumentObj == null) {
+ throw new IllegalArgumentException("Must provide a non-null object to add");
+ }
+ final ObjectAdapter argumentNO = getAdapterManager().adapterFor(argumentObj);
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ final InteractionResult interactionResult = otma.isValidToAdd(targetAdapter, argumentNO).getInteractionResult();
+ notifyListenersAndVetoIfRequired(interactionResult);
+ }
+
+ if (getExecutionMode().shouldExecute()) {
+ otma.addElement(targetAdapter, argumentNO);
+ }
+
+ objectChangedIfRequired(targetAdapter);
+
+ return null;
+ }
+
+
+ // /////////////////////////////////////////////////////////////////
+ // collection - remove from
+ // /////////////////////////////////////////////////////////////////
+
+ private Object handleCollectionRemoveFromMethod(final Object[] args, final ObjectAdapter targetAdapter, final OneToManyAssociation otma, final String methodName) {
+ if (args.length != 1) {
+ throw new IllegalArgumentException("Invoking a removeFrom should only have a single argument");
+ }
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ checkVisibility(getAuthenticationSession(), targetAdapter, otma);
+ checkUsability(getAuthenticationSession(), targetAdapter, otma);
+ }
+
+
+ resolveIfRequired(targetAdapter);
+
+ final Object argumentObj = underlying(args[0]);
+ if (argumentObj == null) {
+ throw new IllegalArgumentException("Must provide a non-null object to remove");
+ }
+ final ObjectAdapter argumentAdapter = getAdapterManager().adapterFor(argumentObj);
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ final InteractionResult interactionResult = otma.isValidToRemove(targetAdapter, argumentAdapter).getInteractionResult();
+ notifyListenersAndVetoIfRequired(interactionResult);
+ }
+
+ if (getExecutionMode().shouldExecute()) {
+ otma.removeElement(targetAdapter, argumentAdapter);
+ }
+
+ objectChangedIfRequired(targetAdapter);
+
+ return null;
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // action
+ // /////////////////////////////////////////////////////////////////
+
+ private Object handleActionMethod(final Object[] args, final AuthenticationSession session, final ObjectAdapter targetAdapter, final ObjectAction noa, final String memberName) {
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ checkVisibility(getAuthenticationSession(), targetAdapter, noa);
+ checkUsability(getAuthenticationSession(), targetAdapter, noa);
+ }
+
+ final Object[] underlyingArgs = new Object[args.length];
+ int i = 0;
+ for (final Object arg : args) {
+ underlyingArgs[i++] = underlying(arg);
+ }
+
+ final ObjectAdapter[] argAdapters = new ObjectAdapter[underlyingArgs.length];
+ int j = 0;
+ for (final Object underlyingArg : underlyingArgs) {
+ argAdapters[j++] = underlyingArg != null ? getAdapterManager().adapterFor(underlyingArg) : null;
+ }
+
+ if(getExecutionMode().shouldEnforceRules()) {
+ final InteractionResult interactionResult = noa.isProposedArgumentSetValid(targetAdapter, argAdapters).getInteractionResult();
+ notifyListenersAndVetoIfRequired(interactionResult);
+ }
+
+ if (getExecutionMode().shouldExecute()) {
+ final ObjectAdapter actionReturnNO = noa.execute(targetAdapter, argAdapters);
+ return ObjectAdapter.Util.unwrap(actionReturnNO);
+ }
+
+ objectChangedIfRequired(targetAdapter);
+
+ return null;
+ }
+
+ private Object underlying(final Object arg) {
+ if (arg instanceof WrapperObject) {
+ final WrapperObject argViewObject = (WrapperObject) arg;
+ return argViewObject.wrapped();
+ } else {
+ return arg;
+ }
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // visibility and usability checks (common to all members)
+ // /////////////////////////////////////////////////////////////////
+
+ /**
+ * REVIEW: ideally should provide some way to allow to caller to indicate the 'where' context. Having
+ * a hard-coded value like this is an approximation.
+ */
+ private final Where where = Where.ANYWHERE;
+
+ private void checkVisibility(final AuthenticationSession session, final ObjectAdapter targetObjectAdapter, final ObjectMember objectMember) {
+ final Consent visibleConsent = objectMember.isVisible(getAuthenticationSession(), targetObjectAdapter, where);
+ final InteractionResult interactionResult = visibleConsent.getInteractionResult();
+ notifyListenersAndVetoIfRequired(interactionResult);
+ }
+
+ private void checkUsability(final AuthenticationSession session, final ObjectAdapter targetObjectAdapter, final ObjectMember objectMember) {
+ final InteractionResult interactionResult = objectMember.isUsable(getAuthenticationSession(), targetObjectAdapter, where).getInteractionResult();
+ notifyListenersAndVetoIfRequired(interactionResult);
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // notify listeners
+ // /////////////////////////////////////////////////////////////////
+
+ private void notifyListenersAndVetoIfRequired(final InteractionResult interactionResult) {
+ final InteractionEvent interactionEvent = interactionResult.getInteractionEvent();
+ notifyListeners(interactionEvent);
+ if (interactionEvent.isVeto()) {
+ throw toException(interactionEvent);
+ }
+ }
+
+ private String decode(final ObjectMember objectMember) {
+ if (objectMember instanceof OneToOneAssociation) {
+ return "a property";
+ }
+ if (objectMember instanceof OneToManyAssociation) {
+ return "a collection";
+ }
+ if (objectMember instanceof ObjectAction) {
+ return "an action";
+ }
+ return "an UNKNOWN member type";
+ }
+
+ /**
+ * Wraps a {@link InteractionEvent#isVeto() vetoing}
+ * {@link InteractionEvent} in a corresponding {@link InteractionException},
+ * and returns it.
+ */
+ private InteractionException toException(final InteractionEvent interactionEvent) {
+ if (!interactionEvent.isVeto()) {
+ throw new IllegalArgumentException("Provided interactionEvent must be a veto");
+ }
+ if (interactionEvent instanceof ValidityEvent) {
+ final ValidityEvent validityEvent = (ValidityEvent) interactionEvent;
+ return new InvalidException(validityEvent);
+ }
+ if (interactionEvent instanceof VisibilityEvent) {
+ final VisibilityEvent visibilityEvent = (VisibilityEvent) interactionEvent;
+ return new HiddenException(visibilityEvent);
+ }
+ if (interactionEvent instanceof UsabilityEvent) {
+ final UsabilityEvent usabilityEvent = (UsabilityEvent) interactionEvent;
+ return new DisabledException(usabilityEvent);
+ }
+ throw new IllegalArgumentException("Provided interactionEvent must be a VisibilityEvent, UsabilityEvent or a ValidityEvent");
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // switching
+ // /////////////////////////////////////////////////////////////////
+
+ private ObjectMember locateAndCheckMember(final Method method) {
+ final ObjectSpecificationDefault objectSpecificationDefault = getJavaSpecificationOfOwningClass(method);
+ final ObjectMember member = objectSpecificationDefault.getMember(method);
+
+ if (member == null) {
+ final String methodName = method.getName();
+ throw new UnsupportedOperationException("Method '" + methodName + "' being invoked does not correspond to any of the object's fields or actions.");
+ }
+ return member;
+ }
+
+ protected boolean isTitleMethod(final Method method) {
+ return method.equals(titleMethod);
+ }
+
+ protected boolean isSaveMethod(final Method method) {
+ return method.equals(saveMethod) || method.equals(__isis_saveMethod);
+ }
+
+ protected boolean isWrappedMethod(final Method method) {
+ return method.equals(wrappedMethod) || method.equals(__isis_wrappedMethod);
+ }
+
+ protected boolean isExecutionModeMethod(final Method method) {
+ return method.equals(__isis_executionMode);
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // Specification lookup
+ // /////////////////////////////////////////////////////////////////
+
+ private ObjectSpecificationDefault getJavaSpecificationOfOwningClass(final Method method) {
+ return getJavaSpecification(method.getDeclaringClass());
+ }
+
+ private ObjectSpecificationDefault getJavaSpecification(final Class<?> clazz) {
+ final ObjectSpecification nos = getSpecification(clazz);
+ if (!(nos instanceof ObjectSpecificationDefault)) {
+ throw new UnsupportedOperationException("Only Java is supported (specification is '" + nos.getClass().getCanonicalName() + "')");
+ }
+ return (ObjectSpecificationDefault) nos;
+ }
+
+ private ObjectSpecification getSpecification(final Class<?> type) {
+ final ObjectSpecification nos = getSpecificationLookup().loadSpecification(type);
+ return nos;
+ }
+
+ // /////////////////////////////////////////////////////////////////
+ // Dependencies
+ // /////////////////////////////////////////////////////////////////
+
+ protected SpecificationLoader getSpecificationLookup() {
+ return specificationLookup;
+ }
+
+ public AuthenticationSessionProvider getAuthenticationSessionProvider() {
+ return authenticationSessionProvider;
+ }
+
+ protected AuthenticationSession getAuthenticationSession() {
+ return getAuthenticationSessionProvider().getAuthenticationSession();
+ }
+
+ protected AdapterManager getAdapterManager() {
+ return adapterManager;
+ }
+
+ protected ObjectPersistor getObjectPersistor() {
+ return objectPersistor;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/MapInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/MapInvocationHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/MapInvocationHandler.java
new file mode 100644
index 0000000..ed6cbc1
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/MapInvocationHandler.java
@@ -0,0 +1,48 @@
+/*
+ * 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.wrapper.handlers;
+
+import java.util.Map;
+
+import org.apache.isis.core.commons.lang.ObjectExtensions;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+
+class MapInvocationHandler<T, C> extends AbstractCollectionInvocationHandler<T, C> {
+
+ public MapInvocationHandler(final C collectionToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
+ super(collectionToProxy, collectionName, handler, otma);
+
+ try {
+ intercept(ObjectExtensions.getMethod(collectionToProxy, "containsKey", Object.class));
+ intercept(ObjectExtensions.getMethod(collectionToProxy, "containsValue", Object.class));
+ intercept(ObjectExtensions.getMethod(collectionToProxy, "size"));
+ intercept(ObjectExtensions.getMethod(collectionToProxy, "isEmpty"));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "put", Object.class, Object.class));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "remove", Object.class));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "putAll", Map.class));
+ veto(ObjectExtensions.getMethod(collectionToProxy, "clear"));
+ } catch (final NoSuchMethodException e) {
+ // ///CLOVER:OFF
+ throw new RuntimeException("A Collection method could not be found: " + e.getMessage());
+ // ///CLOVER:ON
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
new file mode 100644
index 0000000..5f942bc
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
@@ -0,0 +1,84 @@
+/*
+ * 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.wrapper.handlers;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.ensure.Ensure;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.wrapper.proxy.ProxyInstantiator;
+
+public class ProxyContextHandler {
+
+ private final ProxyInstantiator proxyInstantiator;
+
+ public ProxyContextHandler(final ProxyInstantiator proxyInstantiator) {
+ this.proxyInstantiator = proxyInstantiator;
+ }
+
+ public <T> T proxy(final T domainObject, final WrapperFactory wrapperFactory, final ExecutionMode mode, final AuthenticationSessionProvider authenticationSessionProvider, final SpecificationLoader specificationLookup, final AdapterManager adapterManager, final ObjectPersistor objectPersistor) {
+
+ Ensure.ensureThatArg(wrapperFactory, is(not(nullValue())));
+ Ensure.ensureThatArg(authenticationSessionProvider, is(not(nullValue())));
+ Ensure.ensureThatArg(specificationLookup, is(not(nullValue())));
+ Ensure.ensureThatArg(adapterManager, is(not(nullValue())));
+ Ensure.ensureThatArg(objectPersistor, is(not(nullValue())));
+
+ final DomainObjectInvocationHandler<T> invocationHandler = new DomainObjectInvocationHandler<T>(domainObject, wrapperFactory, mode, authenticationSessionProvider, specificationLookup, adapterManager, objectPersistor, this);
+
+ return proxyInstantiator.instantiateProxy(invocationHandler);
+ }
+
+ /**
+ * Whether to execute or not will be picked up from the supplied parent
+ * handler.
+ */
+ public <T, E> Collection<E> proxy(final Collection<E> collectionToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
+
+ final CollectionInvocationHandler<T, Collection<E>> collectionInvocationHandler = new CollectionInvocationHandler<T, Collection<E>>(collectionToProxy, collectionName, handler, otma);
+ collectionInvocationHandler.setResolveObjectChangedEnabled(handler.isResolveObjectChangedEnabled());
+
+ return proxyInstantiator.instantiateProxy(collectionInvocationHandler);
+ }
+
+ /**
+ * Whether to execute or not will be picked up from the supplied parent
+ * handler.
+ */
+ public <T, P, Q> Map<P, Q> proxy(final Map<P, Q> collectionToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
+
+ final MapInvocationHandler<T, Map<P, Q>> mapInvocationHandler = new MapInvocationHandler<T, Map<P, Q>>(collectionToProxy, collectionName, handler, otma);
+ mapInvocationHandler.setResolveObjectChangedEnabled(handler.isResolveObjectChangedEnabled());
+
+ return proxyInstantiator.instantiateProxy(mapInvocationHandler);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Constants.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Constants.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Constants.java
new file mode 100644
index 0000000..0021038
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Constants.java
@@ -0,0 +1,52 @@
+/*
+ * 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.wrapper.internal.util;
+
+public final class Constants {
+ private Constants() {
+ }
+
+ public static final String PREFIX_CHOICES = "choices";
+ public static final String PREFIX_DEFAULT = "default";
+ public static final String PREFIX_HIDE = "hide";
+ public static final String PREFIX_DISABLE = "disable";
+ public static final String PREFIX_VALIDATE_REMOVE_FROM = "validateRemoveFrom";
+ public static final String PREFIX_VALIDATE_ADD_TO = "validateAddTo";
+ public static final String PREFIX_VALIDATE = "validate";
+ public static final String PREFIX_REMOVE_FROM = "removeFrom";
+ public static final String PREFIX_ADD_TO = "addTo";
+ public static final String PREFIX_MODIFY = "modify";
+ public static final String PREFIX_CLEAR = "clear";
+ public static final String PREFIX_SET = "set";
+ public static final String PREFIX_GET = "get";
+
+ public final static String TITLE_METHOD_NAME = "title";
+ public final static String TO_STRING_METHOD_NAME = "toString";
+
+ /**
+ * Cannot invoke methods with these prefixes.
+ */
+ public final static String[] INVALID_PREFIXES = { PREFIX_MODIFY, PREFIX_CLEAR, PREFIX_DISABLE, PREFIX_VALIDATE, PREFIX_VALIDATE_ADD_TO, PREFIX_VALIDATE_REMOVE_FROM, PREFIX_HIDE, };
+
+ public final static String[] PROPERTY_PREFIXES = { PREFIX_GET, PREFIX_SET, PREFIX_MODIFY, PREFIX_CLEAR, PREFIX_DISABLE, PREFIX_VALIDATE, PREFIX_HIDE, PREFIX_DEFAULT, PREFIX_CHOICES };
+ public final static String[] COLLECTION_PREFIXES = { PREFIX_GET, PREFIX_SET, PREFIX_ADD_TO, PREFIX_REMOVE_FROM, PREFIX_DISABLE, PREFIX_VALIDATE_ADD_TO, PREFIX_VALIDATE_REMOVE_FROM, PREFIX_HIDE, PREFIX_DEFAULT, PREFIX_CHOICES };
+ public final static String[] ACTION_PREFIXES = { PREFIX_VALIDATE, PREFIX_DISABLE, PREFIX_HIDE, PREFIX_DEFAULT, PREFIX_CHOICES, };
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/MethodPrefixFinder.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/MethodPrefixFinder.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/MethodPrefixFinder.java
new file mode 100644
index 0000000..dd78056
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/MethodPrefixFinder.java
@@ -0,0 +1,48 @@
+/*
+ * 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.wrapper.internal.util;
+
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+
+public final class MethodPrefixFinder {
+
+ // a Linked Hash Set is used to ensure that the ordering is preserved.
+ public final static LinkedHashSet<String> ALL_PREFIXES = new LinkedHashSet<String>() {
+ private static final long serialVersionUID = 1L;
+ {
+ // collection prefixes are added first because we want to
+ // test validateAddTo and validateRemoveFrom before validate
+ addAll(Arrays.asList(Constants.COLLECTION_PREFIXES));
+ addAll(Arrays.asList(Constants.PROPERTY_PREFIXES));
+ addAll(Arrays.asList(Constants.ACTION_PREFIXES));
+ }
+ };
+
+ public String findPrefix(final String methodName) {
+ for (final String prefix : ALL_PREFIXES) {
+ if (methodName.startsWith(prefix)) {
+ return prefix;
+ }
+ }
+ return "";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Util.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Util.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Util.java
new file mode 100644
index 0000000..7cfecbd
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Util.java
@@ -0,0 +1,53 @@
+/*
+ * 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.wrapper.internal.util;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+
+import org.objenesis.ObjenesisHelper;
+
+public final class Util {
+
+ private Util(){}
+
+ @SuppressWarnings("unchecked")
+ public static <T> T createInstance(final Class<T> toProxy, final InvocationHandler handler, final Class<?>... auxiliaryTypes) {
+ return (T) Proxy.newProxyInstance(toProxy.getClassLoader(), combine(toProxy, auxiliaryTypes) , handler);
+ }
+
+ /**
+ * Return a new instance of the specified class. The recommended way is
+ * without calling any constructor. This is usually done by doing like
+ * <code>ObjectInputStream.readObject()</code> which is JVM specific.
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> T createInstance(final Class<T> enhancedClass) {
+ return (T) ObjenesisHelper.newInstance(enhancedClass);
+ }
+
+ private static Class<?>[] combine(Class<?> first, Class<?>... rest) {
+ Class<?>[] all = new Class<?>[rest.length+1];
+ all[0] = first;
+ System.arraycopy(rest, 0, all, 1, rest.length);
+ return all;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiator.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiator.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiator.java
new file mode 100644
index 0000000..255cbfa
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiator.java
@@ -0,0 +1,26 @@
+/*
+ * 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.wrapper.proxy;
+
+import org.apache.isis.core.wrapper.handlers.DelegatingInvocationHandler;
+
+public interface ProxyInstantiator {
+ public <T> T instantiateProxy(final DelegatingInvocationHandler<T> invocationHandler);
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForCglib.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForCglib.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForCglib.java
new file mode 100644
index 0000000..65241e9
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForCglib.java
@@ -0,0 +1,101 @@
+/*
+ * 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.wrapper.proxy;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import net.sf.cglib.proxy.Callback;
+import net.sf.cglib.proxy.Enhancer;
+import net.sf.cglib.proxy.Factory;
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+
+import org.apache.isis.applib.services.wrapper.WrapperObject;
+import org.apache.isis.core.metamodel.specloader.classsubstitutor.CglibEnhanced;
+import org.apache.isis.core.wrapper.handlers.DelegatingInvocationHandler;
+import org.apache.isis.core.wrapper.internal.util.Util;
+
+public class ProxyInstantiatorForCglib implements ProxyInstantiator {
+
+ @SuppressWarnings("unchecked")
+ public <T> T instantiateProxy(final DelegatingInvocationHandler<T> handler) {
+
+ final T toProxy = handler.getDelegate();
+
+ // handle if already proxied using cglib
+ // (this is in case the CglibObjectFactory is configured, to handle lazy loading/object dirtying.
+ // Have decided not to port this over to the Javassist version, in anticipation of the CglibObjectFactory being dropped from Isis in v2.0.0.
+ // (If that isn't the case, then this class is still available).
+ if (CglibEnhanced.class.isAssignableFrom(toProxy.getClass())) {
+
+ handler.setResolveObjectChangedEnabled(true);
+
+ final Class<? extends Object> enhancedClass = toProxy.getClass();
+ final Class<? extends Object> origSuperclass = toProxy.getClass().getSuperclass();
+
+ final List<Class<?>> interfaces = Lists.newArrayList();
+ interfaces.addAll(Arrays.asList(enhancedClass.getInterfaces()));
+ interfaces.remove(Factory.class); // if there.
+ interfaces.add(WrapperObject.class);
+
+ return (T) Enhancer.create(origSuperclass, interfaces.toArray(new Class[] {}), newMethodInterceptor(handler));
+ }
+
+ final Class<T> clazz = (Class<T>) toProxy.getClass();
+
+ if (clazz.isInterface()) {
+ return Util.createInstance(clazz, handler, WrapperObject.class);
+ } else {
+ final Class<T> enhancedClass = createEnhancedClass(clazz, handler, WrapperObject.class);
+ return Util.createInstance(enhancedClass);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private static <T> Class<T> createEnhancedClass(final Class<T> toProxyClass, final InvocationHandler handler, final Class<?>... auxiliaryTypes) {
+
+ // Create the proxy
+ final Enhancer enhancer = new Enhancer();
+ enhancer.setSuperclass(toProxyClass);
+ enhancer.setInterfaces(auxiliaryTypes);
+ enhancer.setCallbackType(newMethodInterceptor(handler).getClass());
+
+ final Class<?> enhancedClass = enhancer.createClass();
+
+ Enhancer.registerCallbacks(enhancedClass, new Callback[] { newMethodInterceptor(handler) });
+ return (Class<T>) enhancedClass;
+ }
+
+ private static <T> MethodInterceptor newMethodInterceptor(final InvocationHandler handler) {
+ return new MethodInterceptor() {
+ @Override
+ public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
+ return handler.invoke(obj, method, args);
+ }
+ };
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForJavassist.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForJavassist.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForJavassist.java
new file mode 100644
index 0000000..3d2b838
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForJavassist.java
@@ -0,0 +1,77 @@
+/*
+ * 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.wrapper.proxy;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+import javassist.util.proxy.MethodFilter;
+import javassist.util.proxy.MethodHandler;
+import javassist.util.proxy.ProxyFactory;
+import javassist.util.proxy.ProxyObject;
+
+import org.apache.isis.applib.services.wrapper.WrapperObject;
+import org.apache.isis.core.commons.lang.ArrayExtensions;
+import org.apache.isis.core.wrapper.handlers.DelegatingInvocationHandler;
+import org.apache.isis.core.wrapper.internal.util.Util;
+
+public class ProxyInstantiatorForJavassist implements ProxyInstantiator {
+
+ @SuppressWarnings("unchecked")
+ public <T> T instantiateProxy(final DelegatingInvocationHandler<T> handler) {
+
+ final T toProxy = handler.getDelegate();
+
+ final Class<T> clazz = (Class<T>) toProxy.getClass();
+
+ if (clazz.isInterface()) {
+ return Util.createInstance(clazz, handler, WrapperObject.class);
+ } else {
+ final Class<T> enhancedClass = createEnhancedClass(clazz, handler, WrapperObject.class);
+ ProxyObject proxyObject = (ProxyObject) Util.createInstance(enhancedClass);
+ proxyObject.setHandler(new MethodHandler() {
+ @Override
+ public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args) throws Throwable {
+ return handler.invoke(self, thisMethod, args);
+ }
+ });
+ return (T) proxyObject;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private static <T> Class<T> createEnhancedClass(final Class<T> toProxyClass, final InvocationHandler handler, final Class<?>... auxiliaryTypes) {
+
+ final ProxyFactory proxyFactory = new ProxyFactory();
+ proxyFactory.setSuperclass(toProxyClass);
+ proxyFactory.setInterfaces(ArrayExtensions.combine(toProxyClass.getInterfaces(), new Class<?>[]{org.apache.isis.core.metamodel.specloader.classsubstitutor.JavassistEnhanced.class}, auxiliaryTypes));
+
+ proxyFactory.setFilter(new MethodFilter() {
+ @Override
+ public boolean isHandled(final Method m) {
+ // ignore finalize()
+ return !m.getName().equals("finalize") || m.isBridge();
+ }
+ });
+
+ return proxyFactory.createClass();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
new file mode 100644
index 0000000..6bc2e8e
--- /dev/null
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
@@ -0,0 +1,127 @@
+/*
+ * 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.wrapper;
+
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.applib.services.wrapper.WrappingObject;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.wrapper.proxy.ProxyInstantiator;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class WrapperFactoryAbstractTest {
+
+ private static class DomainObject {
+ }
+
+ private static class WrappedDomainObject extends DomainObject implements WrappingObject {
+
+ private final DomainObject wrappedObject;
+ private final WrapperFactory.ExecutionMode mode;
+
+ WrappedDomainObject(final DomainObject wrappedObject, WrapperFactory.ExecutionMode mode) {
+ this.wrappedObject = wrappedObject;
+ this.mode = mode;
+ }
+
+ @Override
+ public void __isis_save() {
+ }
+
+ @Override
+ public Object __isis_wrapped() {
+ return wrappedObject;
+ }
+
+ @Override
+ public WrapperFactory.ExecutionMode __isis_executionMode() {
+ return mode;
+ }
+ }
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
+
+ @Mock
+ private ProxyInstantiator mockProxyInstantiator;
+ private WrapperFactoryAbstract wrapperFactory;
+
+ private DomainObject createProxyCalledWithDomainObject;
+ private WrapperFactory.ExecutionMode createProxyCalledWithMode;
+
+ @Before
+ public void setUp() throws Exception {
+ wrapperFactory = new WrapperFactoryAbstract(mockProxyInstantiator) {
+
+ @Override
+ protected <T> T createProxy(T domainObject, ExecutionMode mode) {
+ WrapperFactoryAbstractTest.this.createProxyCalledWithMode = mode;
+ WrapperFactoryAbstractTest.this.createProxyCalledWithDomainObject = (DomainObject) domainObject;
+ return domainObject;
+ }
+ };
+ }
+
+ @Test
+ public void wrap_ofUnwrapped_delegates_to_createProxy() throws Exception {
+ final DomainObject domainObject = new DomainObject();
+ wrapperFactory.wrap(domainObject);
+
+ assertThat(createProxyCalledWithDomainObject, is(domainObject));
+ assertThat(createProxyCalledWithMode, is(WrapperFactory.ExecutionMode.EXECUTE));
+ }
+
+
+ @Test
+ public void wrap_ofWrapped_sameMode_returnsUnchanged() throws Exception {
+ // given
+ final DomainObject wrappedObject = new DomainObject();
+ final DomainObject domainObject = new WrappedDomainObject(wrappedObject, WrapperFactory.ExecutionMode.EXECUTE);
+
+ // when
+ final DomainObject wrappingObject = wrapperFactory.wrap(domainObject, WrapperFactory.ExecutionMode.EXECUTE);
+
+ // then
+ assertThat(wrappingObject, is(domainObject));
+ assertThat(createProxyCalledWithDomainObject, is(nullValue()));
+ }
+
+ @Test
+ public void wrap_ofWrapped_differentMode_delegates_to_createProxy() throws Exception {
+ // given
+ final DomainObject wrappedObject = new DomainObject();
+ final DomainObject domainObject = new WrappedDomainObject(wrappedObject, WrapperFactory.ExecutionMode.EXECUTE);
+
+ // when
+ final DomainObject wrappingObject = wrapperFactory.wrap(domainObject, WrapperFactory.ExecutionMode.SKIP_RULES);
+
+ // then
+ assertThat(wrappingObject, is(not(domainObject)));
+ assertThat(createProxyCalledWithDomainObject, is(wrappedObject));
+ assertThat(createProxyCalledWithMode, is(WrapperFactory.ExecutionMode.SKIP_RULES));
+ }
+
+}
\ No newline at end of file
[33/39] git commit: [maven-release-plugin] prepare release
todoapp-archetype-1.6.0-RC3
Posted by da...@apache.org.
[maven-release-plugin] prepare release todoapp-archetype-1.6.0-RC3
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/055a18ca
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/055a18ca
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/055a18ca
Branch: refs/heads/master
Commit: 055a18caa59396bc21b8900787d4b50c06ea7749
Parents: 95b3e9e
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 25 08:26:27 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:26:27 2014 +0100
----------------------------------------------------------------------
example/archetype/todoapp/pom.xml | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/055a18ca/example/archetype/todoapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/pom.xml b/example/archetype/todoapp/pom.xml
index 19c35fe..c8cb973 100644
--- a/example/archetype/todoapp/pom.xml
+++ b/example/archetype/todoapp/pom.xml
@@ -17,11 +17,11 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.isis.archetype</groupId>
<artifactId>todoapp-archetype</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<packaging>maven-archetype</packaging>
<name>todoapp-archetype</name>
<build>
@@ -47,4 +47,8 @@
<version>1.6.0</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
+
+ <scm>
+ <tag>todoapp-archetype-1.6.0-RC3</tag>
+ </scm>
</project>
[06/39] git commit: ISIS-839: audit,
command and publish services all @DomainService ...
Posted by da...@apache.org.
ISIS-839: audit, command and publish services all @DomainService ...
... since now in own modules; can use inclusion on classpath as indicator as to whether to register or not.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c0d3c41e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c0d3c41e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c0d3c41e
Branch: refs/heads/master
Commit: c0d3c41efbe77860aaa4e1a9025f5bd3375d47d3
Parents: 19cfaa8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 21 11:12:46 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 21 12:34:17 2014 +0100
----------------------------------------------------------------------
.../jdo/applib/service/audit/AuditingServiceJdo.java | 7 ++++---
.../jdo/applib/service/command/CommandServiceJdo.java | 2 ++
.../jdo/applib/service/publish/PublishingServiceJdo.java | 2 ++
3 files changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/c0d3c41e/core/module-audit-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/audit/AuditingServiceJdo.java
----------------------------------------------------------------------
diff --git a/core/module-audit-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/audit/AuditingServiceJdo.java b/core/module-audit-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/audit/AuditingServiceJdo.java
index 13e12f7..54a0211 100644
--- a/core/module-audit-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/audit/AuditingServiceJdo.java
+++ b/core/module-audit-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/audit/AuditingServiceJdo.java
@@ -19,13 +19,14 @@
package org.apache.isis.objectstore.jdo.applib.service.audit;
import java.util.UUID;
-
-import org.apache.isis.applib.AbstractFactoryAndRepository;
+import org.apache.isis.applib.AbstractService;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.audit.AuditingService3;
import org.apache.isis.applib.services.bookmark.Bookmark;
-public class AuditingServiceJdo extends AbstractFactoryAndRepository implements AuditingService3 {
+@DomainService
+public class AuditingServiceJdo extends AbstractService implements AuditingService3 {
@Programmatic
public void audit(
http://git-wip-us.apache.org/repos/asf/isis/blob/c0d3c41e/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/command/CommandServiceJdo.java
----------------------------------------------------------------------
diff --git a/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/command/CommandServiceJdo.java b/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/command/CommandServiceJdo.java
index 5e34831..45616c8 100644
--- a/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/command/CommandServiceJdo.java
+++ b/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/command/CommandServiceJdo.java
@@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory;
import org.apache.isis.applib.AbstractService;
import org.apache.isis.applib.annotation.Command.ExecuteIn;
import org.apache.isis.applib.annotation.Command.Persistence;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.clock.Clock;
import org.apache.isis.applib.services.command.Command;
@@ -33,6 +34,7 @@ import org.apache.isis.applib.services.command.spi.CommandService;
/**
*
*/
+@DomainService
public class CommandServiceJdo extends AbstractService implements CommandService {
@SuppressWarnings("unused")
http://git-wip-us.apache.org/repos/asf/isis/blob/c0d3c41e/core/module-publishing-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/publish/PublishingServiceJdo.java
----------------------------------------------------------------------
diff --git a/core/module-publishing-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/publish/PublishingServiceJdo.java b/core/module-publishing-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/publish/PublishingServiceJdo.java
index 52903c8..6611fb9 100644
--- a/core/module-publishing-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/publish/PublishingServiceJdo.java
+++ b/core/module-publishing-jdo/src/main/java/org/apache/isis/objectstore/jdo/applib/service/publish/PublishingServiceJdo.java
@@ -22,6 +22,7 @@ package org.apache.isis.objectstore.jdo.applib.service.publish;
import java.util.Map;
import javax.annotation.PostConstruct;
import org.apache.isis.applib.AbstractService;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.command.CommandContext;
import org.apache.isis.applib.services.publish.EventMetadata;
@@ -33,6 +34,7 @@ import org.apache.isis.applib.services.publish.PublishingService;
* An implementation of {@link PublishingService} that persists events as
* entities into a JDO-backed database.
*/
+@DomainService
public class PublishingServiceJdo extends AbstractService implements PublishingService {
private static final String SERIALIZED_FORM_LOCAL_KEY = "datanucleus.PublishingService.serializedForm";
[27/39] git commit: [maven-release-plugin] prepare release
simpleapp-archetype-1.6.0-RC3
Posted by da...@apache.org.
[maven-release-plugin] prepare release simpleapp-archetype-1.6.0-RC3
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/9b5f53c8
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/9b5f53c8
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/9b5f53c8
Branch: refs/heads/master
Commit: 9b5f53c831a4f5e69d1de06bc8823a72c9e13504
Parents: b33b296
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 25 08:21:09 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:21:09 2014 +0100
----------------------------------------------------------------------
example/archetype/simpleapp/pom.xml | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/9b5f53c8/example/archetype/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/pom.xml b/example/archetype/simpleapp/pom.xml
index cd61e80..8f9fe65 100644
--- a/example/archetype/simpleapp/pom.xml
+++ b/example/archetype/simpleapp/pom.xml
@@ -17,11 +17,11 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.isis.archetype</groupId>
<artifactId>simpleapp-archetype</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<packaging>maven-archetype</packaging>
<name>simpleapp-archetype</name>
<build>
@@ -47,4 +47,8 @@
<version>1.6.0</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
+
+ <scm>
+ <tag>simpleapp-archetype-1.6.0-RC3</tag>
+ </scm>
</project>
[14/39] git commit: ISIS-843: fixing non-serializable stack trace for
about page.
Posted by da...@apache.org.
ISIS-843: fixing non-serializable stack trace for about page.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/f506213d
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/f506213d
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/f506213d
Branch: refs/heads/master
Commit: f506213d712098a6d8427ae018c7ec69e098f66f
Parents: dec6705
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 17:24:39 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 17:24:39 2014 +0100
----------------------------------------------------------------------
.../isis/viewer/wicket/ui/components/about/AboutPanel.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/f506213d/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java
index 9d3ac09..68f16fa 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/AboutPanel.java
@@ -44,10 +44,14 @@ public class AboutPanel extends PanelAbstract<AboutModel> {
/**
* We take care to read this only once.
+ *
+ * <p>
+ * Is <code>transient</code> because
+ * </p>
*/
@Inject
@Named("metaInfManifest")
- private InputStream metaInfManifestIs;
+ private transient InputStream metaInfManifestIs;
private JarManifestModel jarManifestModel;
[28/39] git commit: [maven-release-plugin] prepare for next
development iteration
Posted by da...@apache.org.
[maven-release-plugin] prepare for next development iteration
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/cb33718f
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/cb33718f
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/cb33718f
Branch: refs/heads/master
Commit: cb33718fb4f3cc72a3a2ae963e99fe76fb519864
Parents: 9b5f53c
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 25 08:21:12 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:21:12 2014 +0100
----------------------------------------------------------------------
example/archetype/simpleapp/pom.xml | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/cb33718f/example/archetype/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/pom.xml b/example/archetype/simpleapp/pom.xml
index 8f9fe65..4eeade6 100644
--- a/example/archetype/simpleapp/pom.xml
+++ b/example/archetype/simpleapp/pom.xml
@@ -21,7 +21,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.isis.archetype</groupId>
<artifactId>simpleapp-archetype</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
<name>simpleapp-archetype</name>
<build>
@@ -47,8 +47,4 @@
<version>1.6.0</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
-
- <scm>
- <tag>simpleapp-archetype-1.6.0-RC3</tag>
- </scm>
</project>
[22/39] git commit: ISIS-839: updating pom.xml for Wicket viewer to
reference non-SNAPSHOT parents.
Posted by da...@apache.org.
ISIS-839: updating pom.xml for Wicket viewer to reference non-SNAPSHOT parents.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/61434a53
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/61434a53
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/61434a53
Branch: refs/heads/master
Commit: 61434a53615032261ceb05ad7309c0e298338b4f
Parents: be6a424
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Jul 19 11:10:33 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 07:35:29 2014 +0100
----------------------------------------------------------------------
component/viewer/wicket/pom.xml | 2 +-
component/viewer/wicket/tck/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/61434a53/component/viewer/wicket/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/pom.xml b/component/viewer/wicket/pom.xml
index e8fbe9d..318aeb6 100644
--- a/component/viewer/wicket/pom.xml
+++ b/component/viewer/wicket/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
http://git-wip-us.apache.org/repos/asf/isis/blob/61434a53/component/viewer/wicket/tck/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/tck/pom.xml b/component/viewer/wicket/tck/pom.xml
index 6614337..bf4b3f2 100644
--- a/component/viewer/wicket/tck/pom.xml
+++ b/component/viewer/wicket/tck/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<relativePath>../../../../core/tck/pom.xml</relativePath>
</parent>
[12/39] ISIS-833: reverting isis-module-wrapper -> isis-core-wrapper.
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
deleted file mode 100644
index 5f942bc..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/ProxyContextHandler.java
+++ /dev/null
@@ -1,84 +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.wrapper.handlers;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.wrapper.proxy.ProxyInstantiator;
-
-public class ProxyContextHandler {
-
- private final ProxyInstantiator proxyInstantiator;
-
- public ProxyContextHandler(final ProxyInstantiator proxyInstantiator) {
- this.proxyInstantiator = proxyInstantiator;
- }
-
- public <T> T proxy(final T domainObject, final WrapperFactory wrapperFactory, final ExecutionMode mode, final AuthenticationSessionProvider authenticationSessionProvider, final SpecificationLoader specificationLookup, final AdapterManager adapterManager, final ObjectPersistor objectPersistor) {
-
- Ensure.ensureThatArg(wrapperFactory, is(not(nullValue())));
- Ensure.ensureThatArg(authenticationSessionProvider, is(not(nullValue())));
- Ensure.ensureThatArg(specificationLookup, is(not(nullValue())));
- Ensure.ensureThatArg(adapterManager, is(not(nullValue())));
- Ensure.ensureThatArg(objectPersistor, is(not(nullValue())));
-
- final DomainObjectInvocationHandler<T> invocationHandler = new DomainObjectInvocationHandler<T>(domainObject, wrapperFactory, mode, authenticationSessionProvider, specificationLookup, adapterManager, objectPersistor, this);
-
- return proxyInstantiator.instantiateProxy(invocationHandler);
- }
-
- /**
- * Whether to execute or not will be picked up from the supplied parent
- * handler.
- */
- public <T, E> Collection<E> proxy(final Collection<E> collectionToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
-
- final CollectionInvocationHandler<T, Collection<E>> collectionInvocationHandler = new CollectionInvocationHandler<T, Collection<E>>(collectionToProxy, collectionName, handler, otma);
- collectionInvocationHandler.setResolveObjectChangedEnabled(handler.isResolveObjectChangedEnabled());
-
- return proxyInstantiator.instantiateProxy(collectionInvocationHandler);
- }
-
- /**
- * Whether to execute or not will be picked up from the supplied parent
- * handler.
- */
- public <T, P, Q> Map<P, Q> proxy(final Map<P, Q> collectionToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
-
- final MapInvocationHandler<T, Map<P, Q>> mapInvocationHandler = new MapInvocationHandler<T, Map<P, Q>>(collectionToProxy, collectionName, handler, otma);
- mapInvocationHandler.setResolveObjectChangedEnabled(handler.isResolveObjectChangedEnabled());
-
- return proxyInstantiator.instantiateProxy(mapInvocationHandler);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Constants.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Constants.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Constants.java
deleted file mode 100644
index 0021038..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Constants.java
+++ /dev/null
@@ -1,52 +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.wrapper.internal.util;
-
-public final class Constants {
- private Constants() {
- }
-
- public static final String PREFIX_CHOICES = "choices";
- public static final String PREFIX_DEFAULT = "default";
- public static final String PREFIX_HIDE = "hide";
- public static final String PREFIX_DISABLE = "disable";
- public static final String PREFIX_VALIDATE_REMOVE_FROM = "validateRemoveFrom";
- public static final String PREFIX_VALIDATE_ADD_TO = "validateAddTo";
- public static final String PREFIX_VALIDATE = "validate";
- public static final String PREFIX_REMOVE_FROM = "removeFrom";
- public static final String PREFIX_ADD_TO = "addTo";
- public static final String PREFIX_MODIFY = "modify";
- public static final String PREFIX_CLEAR = "clear";
- public static final String PREFIX_SET = "set";
- public static final String PREFIX_GET = "get";
-
- public final static String TITLE_METHOD_NAME = "title";
- public final static String TO_STRING_METHOD_NAME = "toString";
-
- /**
- * Cannot invoke methods with these prefixes.
- */
- public final static String[] INVALID_PREFIXES = { PREFIX_MODIFY, PREFIX_CLEAR, PREFIX_DISABLE, PREFIX_VALIDATE, PREFIX_VALIDATE_ADD_TO, PREFIX_VALIDATE_REMOVE_FROM, PREFIX_HIDE, };
-
- public final static String[] PROPERTY_PREFIXES = { PREFIX_GET, PREFIX_SET, PREFIX_MODIFY, PREFIX_CLEAR, PREFIX_DISABLE, PREFIX_VALIDATE, PREFIX_HIDE, PREFIX_DEFAULT, PREFIX_CHOICES };
- public final static String[] COLLECTION_PREFIXES = { PREFIX_GET, PREFIX_SET, PREFIX_ADD_TO, PREFIX_REMOVE_FROM, PREFIX_DISABLE, PREFIX_VALIDATE_ADD_TO, PREFIX_VALIDATE_REMOVE_FROM, PREFIX_HIDE, PREFIX_DEFAULT, PREFIX_CHOICES };
- public final static String[] ACTION_PREFIXES = { PREFIX_VALIDATE, PREFIX_DISABLE, PREFIX_HIDE, PREFIX_DEFAULT, PREFIX_CHOICES, };
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/MethodPrefixFinder.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/MethodPrefixFinder.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/MethodPrefixFinder.java
deleted file mode 100644
index dd78056..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/MethodPrefixFinder.java
+++ /dev/null
@@ -1,48 +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.wrapper.internal.util;
-
-import java.util.Arrays;
-import java.util.LinkedHashSet;
-
-public final class MethodPrefixFinder {
-
- // a Linked Hash Set is used to ensure that the ordering is preserved.
- public final static LinkedHashSet<String> ALL_PREFIXES = new LinkedHashSet<String>() {
- private static final long serialVersionUID = 1L;
- {
- // collection prefixes are added first because we want to
- // test validateAddTo and validateRemoveFrom before validate
- addAll(Arrays.asList(Constants.COLLECTION_PREFIXES));
- addAll(Arrays.asList(Constants.PROPERTY_PREFIXES));
- addAll(Arrays.asList(Constants.ACTION_PREFIXES));
- }
- };
-
- public String findPrefix(final String methodName) {
- for (final String prefix : ALL_PREFIXES) {
- if (methodName.startsWith(prefix)) {
- return prefix;
- }
- }
- return "";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Util.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Util.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Util.java
deleted file mode 100644
index 7cfecbd..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/internal/util/Util.java
+++ /dev/null
@@ -1,53 +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.wrapper.internal.util;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Proxy;
-
-import org.objenesis.ObjenesisHelper;
-
-public final class Util {
-
- private Util(){}
-
- @SuppressWarnings("unchecked")
- public static <T> T createInstance(final Class<T> toProxy, final InvocationHandler handler, final Class<?>... auxiliaryTypes) {
- return (T) Proxy.newProxyInstance(toProxy.getClassLoader(), combine(toProxy, auxiliaryTypes) , handler);
- }
-
- /**
- * Return a new instance of the specified class. The recommended way is
- * without calling any constructor. This is usually done by doing like
- * <code>ObjectInputStream.readObject()</code> which is JVM specific.
- */
- @SuppressWarnings("unchecked")
- public static <T> T createInstance(final Class<T> enhancedClass) {
- return (T) ObjenesisHelper.newInstance(enhancedClass);
- }
-
- private static Class<?>[] combine(Class<?> first, Class<?>... rest) {
- Class<?>[] all = new Class<?>[rest.length+1];
- all[0] = first;
- System.arraycopy(rest, 0, all, 1, rest.length);
- return all;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiator.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiator.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiator.java
deleted file mode 100644
index 255cbfa..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiator.java
+++ /dev/null
@@ -1,26 +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.wrapper.proxy;
-
-import org.apache.isis.core.wrapper.handlers.DelegatingInvocationHandler;
-
-public interface ProxyInstantiator {
- public <T> T instantiateProxy(final DelegatingInvocationHandler<T> invocationHandler);
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForCglib.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForCglib.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForCglib.java
deleted file mode 100644
index 65241e9..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForCglib.java
+++ /dev/null
@@ -1,101 +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.wrapper.proxy;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-import net.sf.cglib.proxy.Callback;
-import net.sf.cglib.proxy.Enhancer;
-import net.sf.cglib.proxy.Factory;
-import net.sf.cglib.proxy.MethodInterceptor;
-import net.sf.cglib.proxy.MethodProxy;
-
-import org.apache.isis.applib.services.wrapper.WrapperObject;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.CglibEnhanced;
-import org.apache.isis.core.wrapper.handlers.DelegatingInvocationHandler;
-import org.apache.isis.core.wrapper.internal.util.Util;
-
-public class ProxyInstantiatorForCglib implements ProxyInstantiator {
-
- @SuppressWarnings("unchecked")
- public <T> T instantiateProxy(final DelegatingInvocationHandler<T> handler) {
-
- final T toProxy = handler.getDelegate();
-
- // handle if already proxied using cglib
- // (this is in case the CglibObjectFactory is configured, to handle lazy loading/object dirtying.
- // Have decided not to port this over to the Javassist version, in anticipation of the CglibObjectFactory being dropped from Isis in v2.0.0.
- // (If that isn't the case, then this class is still available).
- if (CglibEnhanced.class.isAssignableFrom(toProxy.getClass())) {
-
- handler.setResolveObjectChangedEnabled(true);
-
- final Class<? extends Object> enhancedClass = toProxy.getClass();
- final Class<? extends Object> origSuperclass = toProxy.getClass().getSuperclass();
-
- final List<Class<?>> interfaces = Lists.newArrayList();
- interfaces.addAll(Arrays.asList(enhancedClass.getInterfaces()));
- interfaces.remove(Factory.class); // if there.
- interfaces.add(WrapperObject.class);
-
- return (T) Enhancer.create(origSuperclass, interfaces.toArray(new Class[] {}), newMethodInterceptor(handler));
- }
-
- final Class<T> clazz = (Class<T>) toProxy.getClass();
-
- if (clazz.isInterface()) {
- return Util.createInstance(clazz, handler, WrapperObject.class);
- } else {
- final Class<T> enhancedClass = createEnhancedClass(clazz, handler, WrapperObject.class);
- return Util.createInstance(enhancedClass);
- }
- }
-
- @SuppressWarnings("unchecked")
- private static <T> Class<T> createEnhancedClass(final Class<T> toProxyClass, final InvocationHandler handler, final Class<?>... auxiliaryTypes) {
-
- // Create the proxy
- final Enhancer enhancer = new Enhancer();
- enhancer.setSuperclass(toProxyClass);
- enhancer.setInterfaces(auxiliaryTypes);
- enhancer.setCallbackType(newMethodInterceptor(handler).getClass());
-
- final Class<?> enhancedClass = enhancer.createClass();
-
- Enhancer.registerCallbacks(enhancedClass, new Callback[] { newMethodInterceptor(handler) });
- return (Class<T>) enhancedClass;
- }
-
- private static <T> MethodInterceptor newMethodInterceptor(final InvocationHandler handler) {
- return new MethodInterceptor() {
- @Override
- public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
- return handler.invoke(obj, method, args);
- }
- };
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForJavassist.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForJavassist.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForJavassist.java
deleted file mode 100644
index 3d2b838..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/proxy/ProxyInstantiatorForJavassist.java
+++ /dev/null
@@ -1,77 +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.wrapper.proxy;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-
-import javassist.util.proxy.MethodFilter;
-import javassist.util.proxy.MethodHandler;
-import javassist.util.proxy.ProxyFactory;
-import javassist.util.proxy.ProxyObject;
-
-import org.apache.isis.applib.services.wrapper.WrapperObject;
-import org.apache.isis.core.commons.lang.ArrayExtensions;
-import org.apache.isis.core.wrapper.handlers.DelegatingInvocationHandler;
-import org.apache.isis.core.wrapper.internal.util.Util;
-
-public class ProxyInstantiatorForJavassist implements ProxyInstantiator {
-
- @SuppressWarnings("unchecked")
- public <T> T instantiateProxy(final DelegatingInvocationHandler<T> handler) {
-
- final T toProxy = handler.getDelegate();
-
- final Class<T> clazz = (Class<T>) toProxy.getClass();
-
- if (clazz.isInterface()) {
- return Util.createInstance(clazz, handler, WrapperObject.class);
- } else {
- final Class<T> enhancedClass = createEnhancedClass(clazz, handler, WrapperObject.class);
- ProxyObject proxyObject = (ProxyObject) Util.createInstance(enhancedClass);
- proxyObject.setHandler(new MethodHandler() {
- @Override
- public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args) throws Throwable {
- return handler.invoke(self, thisMethod, args);
- }
- });
- return (T) proxyObject;
- }
- }
-
- @SuppressWarnings("unchecked")
- private static <T> Class<T> createEnhancedClass(final Class<T> toProxyClass, final InvocationHandler handler, final Class<?>... auxiliaryTypes) {
-
- final ProxyFactory proxyFactory = new ProxyFactory();
- proxyFactory.setSuperclass(toProxyClass);
- proxyFactory.setInterfaces(ArrayExtensions.combine(toProxyClass.getInterfaces(), new Class<?>[]{org.apache.isis.core.metamodel.specloader.classsubstitutor.JavassistEnhanced.class}, auxiliaryTypes));
-
- proxyFactory.setFilter(new MethodFilter() {
- @Override
- public boolean isHandled(final Method m) {
- // ignore finalize()
- return !m.getName().equals("finalize") || m.isBridge();
- }
- });
-
- return proxyFactory.createClass();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java b/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
deleted file mode 100644
index 6bc2e8e..0000000
--- a/core/module-wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryAbstractTest.java
+++ /dev/null
@@ -1,127 +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.wrapper;
-
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.applib.services.wrapper.WrappingObject;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.wrapper.proxy.ProxyInstantiator;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-public class WrapperFactoryAbstractTest {
-
- private static class DomainObject {
- }
-
- private static class WrappedDomainObject extends DomainObject implements WrappingObject {
-
- private final DomainObject wrappedObject;
- private final WrapperFactory.ExecutionMode mode;
-
- WrappedDomainObject(final DomainObject wrappedObject, WrapperFactory.ExecutionMode mode) {
- this.wrappedObject = wrappedObject;
- this.mode = mode;
- }
-
- @Override
- public void __isis_save() {
- }
-
- @Override
- public Object __isis_wrapped() {
- return wrappedObject;
- }
-
- @Override
- public WrapperFactory.ExecutionMode __isis_executionMode() {
- return mode;
- }
- }
-
- @Rule
- public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
-
- @Mock
- private ProxyInstantiator mockProxyInstantiator;
- private WrapperFactoryAbstract wrapperFactory;
-
- private DomainObject createProxyCalledWithDomainObject;
- private WrapperFactory.ExecutionMode createProxyCalledWithMode;
-
- @Before
- public void setUp() throws Exception {
- wrapperFactory = new WrapperFactoryAbstract(mockProxyInstantiator) {
-
- @Override
- protected <T> T createProxy(T domainObject, ExecutionMode mode) {
- WrapperFactoryAbstractTest.this.createProxyCalledWithMode = mode;
- WrapperFactoryAbstractTest.this.createProxyCalledWithDomainObject = (DomainObject) domainObject;
- return domainObject;
- }
- };
- }
-
- @Test
- public void wrap_ofUnwrapped_delegates_to_createProxy() throws Exception {
- final DomainObject domainObject = new DomainObject();
- wrapperFactory.wrap(domainObject);
-
- assertThat(createProxyCalledWithDomainObject, is(domainObject));
- assertThat(createProxyCalledWithMode, is(WrapperFactory.ExecutionMode.EXECUTE));
- }
-
-
- @Test
- public void wrap_ofWrapped_sameMode_returnsUnchanged() throws Exception {
- // given
- final DomainObject wrappedObject = new DomainObject();
- final DomainObject domainObject = new WrappedDomainObject(wrappedObject, WrapperFactory.ExecutionMode.EXECUTE);
-
- // when
- final DomainObject wrappingObject = wrapperFactory.wrap(domainObject, WrapperFactory.ExecutionMode.EXECUTE);
-
- // then
- assertThat(wrappingObject, is(domainObject));
- assertThat(createProxyCalledWithDomainObject, is(nullValue()));
- }
-
- @Test
- public void wrap_ofWrapped_differentMode_delegates_to_createProxy() throws Exception {
- // given
- final DomainObject wrappedObject = new DomainObject();
- final DomainObject domainObject = new WrappedDomainObject(wrappedObject, WrapperFactory.ExecutionMode.EXECUTE);
-
- // when
- final DomainObject wrappingObject = wrapperFactory.wrap(domainObject, WrapperFactory.ExecutionMode.SKIP_RULES);
-
- // then
- assertThat(wrappingObject, is(not(domainObject)));
- assertThat(createProxyCalledWithDomainObject, is(wrappedObject));
- assertThat(createProxyCalledWithMode, is(WrapperFactory.ExecutionMode.SKIP_RULES));
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java b/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
deleted file mode 100644
index a3609b8..0000000
--- a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
+++ /dev/null
@@ -1,376 +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.progmodel.wrapper;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.Assert.assertThat;
-
-import java.lang.reflect.Method;
-import java.util.Collections;
-
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import org.apache.isis.applib.services.wrapper.DisabledException;
-import org.apache.isis.applib.services.wrapper.HiddenException;
-import org.apache.isis.applib.services.wrapper.InvalidException;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
-import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
-import org.apache.isis.core.metamodel.adapter.ResolveState;
-import org.apache.isis.core.metamodel.adapter.ServicesProvider;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
-import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
-import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl;
-import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.core.metamodel.facets.members.disabled.method.DisableForContextFacetViaMethod;
-import org.apache.isis.core.metamodel.facets.members.hidden.method.HideForContextFacetViaMethod;
-import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
-import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaClearMethod;
-import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod;
-import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
-import org.apache.isis.core.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethod;
-import org.apache.isis.core.runtime.authentication.standard.SimpleSession;
-import org.apache.isis.core.tck.dom.claimapp.employees.Employee;
-import org.apache.isis.core.tck.dom.claimapp.employees.EmployeeRepository;
-import org.apache.isis.core.tck.dom.claimapp.employees.EmployeeRepositoryImpl;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
-
-public abstract class WrapperFactoryAbstractTest_wrappedObject {
-
- @Rule
- public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- @Mock
- private AdapterManager mockAdapterManager;
- @Mock
- private AuthenticationSessionProvider mockAuthenticationSessionProvider;
- @Mock
- private ObjectPersistor mockObjectPersistor;
- @Mock
- private QuerySubmitter mockQuerySubmitter;
- @Mock
- private ServicesProvider mockServicesProvider;
- @Mock
- private SpecificationLoader mockSpecificationLookup;
-
- private ObjectMemberContext objectMemberContext;
-
- @Mock
- private ObjectSpecificationDefault mockEmployeeSpec;
- private ObjectMember employeeNameMember;
-
- @Mock
- private ObjectSpecificationDefault mockStringSpec;
-
- @Mock
- private ObjectAdapter mockEmployeeAdapter;
-
- @Mock
- private ObjectAdapter mockAdapterForStringSmith;
- @Mock
- private ObjectAdapter mockAdapterForStringJones;
-
- private final SimpleSession session = new SimpleSession("tester", Collections.<String>emptyList());
-
- private EmployeeRepository employeeRepository;
-
- private Employee employeeDO;
- private Employee employeeWO;
-
- private WrapperFactoryAbstract wrapperFactory;
-
-
- @Before
- public void setUp() {
-
- objectMemberContext = new ObjectMemberContext(DeploymentCategory.PRODUCTION, mockAuthenticationSessionProvider, mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, new CollectionTypeRegistryDefault(), mockServicesProvider);
-
- employeeRepository = new EmployeeRepositoryImpl();
-
- employeeDO = new Employee();
- employeeDO.setName("Smith");
- employeeDO.setEmployeeRepository(employeeRepository);
-
- wrapperFactory = createWrapperFactory();
- wrapperFactory.setAdapterManager(mockAdapterManager);
- wrapperFactory.setAuthenticationSessionProvider(mockAuthenticationSessionProvider);
- wrapperFactory.setObjectPersistor(mockObjectPersistor);
- wrapperFactory.setSpecificationLookup(mockSpecificationLookup);
-
- context.checking(new Expectations() {
- {
- allowing(mockSpecificationLookup).loadSpecification(String.class);
- will(returnValue(mockStringSpec));
-
- allowing(mockStringSpec).getShortIdentifier();
- will(returnValue(String.class.getName()));
- }
- });
-
-
- final Method employeeGetNameMethod = methodOf(Employee.class, "getName");
- final Method employeeSetNameMethod = methodOf(Employee.class, "setName", String.class);
- final Method employeeModifyNameMethod = methodOf(Employee.class, "modifyName", String.class);
- final Method employeeHideNameMethod = methodOf(Employee.class, "hideName");
- final Method employeeDisableNameMethod = methodOf(Employee.class, "disableName");
- final Method employeeValidateNameMethod = methodOf(Employee.class, "validateName", String.class);
- final Method employeeClearNameMethod = methodOf(Employee.class, "clearName");
- employeeNameMember = new OneToOneAssociationImpl(
- facetedMethodForProperty(
- employeeSetNameMethod, employeeGetNameMethod, employeeModifyNameMethod, employeeClearNameMethod, employeeHideNameMethod, employeeDisableNameMethod, employeeValidateNameMethod), objectMemberContext);
-
- context.checking(new Expectations() {
- {
- allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
- will(returnValue(session));
-
- allowing(mockAdapterManager).getAdapterFor(employeeDO);
- will(returnValue(mockEmployeeAdapter));
-
- allowing(mockEmployeeAdapter).getSpecification();
- will(returnValue(mockEmployeeSpec));
-
- allowing(mockSpecificationLookup).loadSpecification(Employee.class);
- will(returnValue(mockEmployeeSpec));
-
- allowing(mockEmployeeSpec).getMember(methodOf(Employee.class, "getEmployeeRepository"));
- will(returnValue(null));
-
- allowing(mockEmployeeSpec).getMember(employeeGetNameMethod);
- will(returnValue(employeeNameMember));
-
- allowing(mockEmployeeSpec).getMember(employeeSetNameMethod);
- will(returnValue(employeeNameMember));
-
- allowing(mockEmployeeSpec).getMember(employeeModifyNameMethod);
- will(returnValue(employeeNameMember));
-
- allowing(mockEmployeeSpec).getMember(employeeClearNameMethod);
- will(returnValue(employeeNameMember));
-
- allowing(mockEmployeeAdapter).getObject();
- will(returnValue(employeeDO));
-
- allowing(mockEmployeeAdapter).representsPersistent();
- will(returnValue(true));
- }
- });
-
-
- employeeWO = wrapperFactory.wrap(employeeDO);
- }
-
- /**
- * Mandatory hook.
- */
- protected abstract WrapperFactoryAbstract createWrapperFactory();
-
- @Test
- public void shouldWrapDomainObject() {
- // then
- assertThat(employeeWO, is(notNullValue()));
- }
-
- @Test
- public void shouldBeAbleToInjectIntoDomainObjects() {
- assertThat(employeeDO.getEmployeeRepository(), is(notNullValue()));
- }
-
- @Test
- public void cannotAccessMethodNotCorrespondingToMember() {
-
- expectedException.expectMessage("Method 'getEmployeeRepository' being invoked does not correspond to any of the object's fields or actions.");
-
- // then
- assertThat(employeeWO.getEmployeeRepository(), is(notNullValue()));
- }
-
- @Test
- public void shouldBeAbleToReadVisibleProperty() {
-
- allowingEmployeeHasSmithAdapter();
-
-
- // then
- assertThat(employeeWO.getName(), is(employeeDO.getName()));
- }
-
- @Test
- public void shouldNotBeAbleToViewHiddenProperty() {
-
- expectedException.expect(HiddenException.class);
-
- allowingEmployeeHasSmithAdapter();
-
- // given
- employeeDO.whetherHideName = true;
- // when
- employeeWO.getName();
- // then should throw exception
- }
-
- @Test
- public void shouldBeAbleToModifyEnabledPropertyUsingSetter() {
-
- allowingJonesStringValueAdapter();
-
- context.checking(new Expectations() {
- {
-
- oneOf(mockAdapterManager).adapterFor("Jones", mockEmployeeAdapter);
- will(returnValue(mockAdapterForStringJones));
- }
- });
-
- // when
- employeeWO.setName("Jones");
- // then
- assertThat(employeeDO.getName(), is("Jones"));
- assertThat(employeeWO.getName(), is(employeeDO.getName()));
- }
-
- @Test
- public void shouldNotBeAbleToModifyDisabledProperty() {
-
- expectedException.expect(DisabledException.class);
-
- // given
- employeeDO.reasonDisableName = "sorry, no change allowed";
- // when
- employeeWO.setName("Jones");
- // then should throw exception
- }
-
- @Test
- public void shouldNotBeAbleToModifyPropertyUsingModify() {
-
- allowingJonesStringValueAdapter();
-
- expectedException.expect(UnsupportedOperationException.class);
-
- // when
- employeeWO.modifyName("Jones");
- // then should throw exception
- }
-
- @Test
- public void shouldNotBeAbleToModifyPropertyUsingClear() {
-
- expectedException.expect(UnsupportedOperationException.class);
-
- // when
- employeeWO.clearName();
- // then should throw exception
- }
-
- @Test
- public void shouldNotBeAbleToModifyPropertyIfInvalid() {
-
- allowingJonesStringValueAdapter();
-
- expectedException.expect(InvalidException.class);
-
- // given
- employeeDO.reasonValidateName = "sorry, invalid data";
- // when
- employeeWO.setName("Jones");
- // then should throw exception
- }
-
-
- // //////////////////////////////////////
-
- private static FacetedMethod facetedMethodForProperty(
- Method init, Method accessor, Method modify, Method clear, Method hide, Method disable, Method validate) {
- FacetedMethod facetedMethod = FacetedMethod.createForProperty(accessor.getDeclaringClass(), accessor);
- FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(accessor, facetedMethod));
- FacetUtil.addFacet(new PropertyInitializationFacetViaSetterMethod(init, facetedMethod));
- FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modify, facetedMethod));
- FacetUtil.addFacet(new PropertyClearFacetViaClearMethod(clear, facetedMethod));
- FacetUtil.addFacet(new HideForContextFacetViaMethod(hide, facetedMethod));
- FacetUtil.addFacet(new DisableForContextFacetViaMethod(disable, facetedMethod));
- FacetUtil.addFacet(new PropertyValidateFacetViaMethod(validate, facetedMethod));
- FacetUtil.addFacet(new NamedFacetInferred(accessor.getName(), facetedMethod));
- return facetedMethod;
- }
-
- private static Method methodOf(Class<?> cls, String methodName) {
- return methodOf(cls, methodName, new Class<?>[]{});
- }
-
- private static Method methodOf(Class<?> cls, String methodName, Class<?>... args) {
- try {
- return cls.getMethod(methodName, args);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- // //////////////////////////////////////
-
- private void allowingEmployeeHasSmithAdapter() {
- context.checking(new Expectations() {
- {
- allowing(mockAdapterManager).adapterFor("Smith", mockEmployeeAdapter);
- will(returnValue(mockAdapterForStringSmith));
-
- allowing(mockAdapterForStringSmith).getObject();
- will(returnValue("Smith"));
- }
- });
- }
-
- private void allowingJonesStringValueAdapter() {
- context.checking(new Expectations() {
- {
- allowing(mockAdapterManager).adapterFor("Jones");
- will(returnValue(mockAdapterForStringJones));
-
- allowing(mockAdapterForStringJones).getObject();
- will(returnValue("Jones"));
-
- allowing(mockAdapterForStringJones).isTransient();
- will(returnValue(ResolveState.VALUE.isTransient()));
- }
- });
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java b/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
deleted file mode 100644
index e9d1adb..0000000
--- a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
+++ /dev/null
@@ -1,257 +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.progmodel.wrapper;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.events.PropertyModifyEvent;
-import org.apache.isis.applib.events.PropertyUsabilityEvent;
-import org.apache.isis.applib.events.PropertyVisibilityEvent;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.applib.services.wrapper.DisabledException;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.consent.Allow;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionResult;
-import org.apache.isis.core.metamodel.consent.Veto;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAlwaysEverywhere;
-import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
-import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
-import org.apache.isis.core.runtime.authentication.standard.SimpleSession;
-import org.apache.isis.core.tck.dom.claimapp.employees.Employee;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
-
-/**
- * Contract test.
- */
-public abstract class WrapperFactoryAbstractTest_wrappedObject_transient {
-
- @Rule
- public final JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
- @Mock
- private AdapterManager mockAdapterManager;
- @Mock
- private AuthenticationSessionProvider mockAuthenticationSessionProvider;
- @Mock
- private ObjectPersistor mockObjectPersistor;
- @Mock
- private SpecificationLoader mockSpecificationLookup;
-
- private Employee employeeDO;
- @Mock
- private ObjectAdapter mockEmployeeAdapter;
- @Mock
- private ObjectSpecificationDefault mockEmployeeSpec;
- @Mock
- private OneToOneAssociation mockPasswordMember;
- @Mock
- private Identifier mockPasswordIdentifier;
-
- @Mock
- protected ObjectAdapter mockPasswordAdapter;
-
- private final String passwordValue = "12345678";
-
- private final SimpleSession session = new SimpleSession("tester", Collections.<String>emptyList());
-
- private List<Facet> facets;
- private Method getPasswordMethod;
- private Method setPasswordMethod;
-
- private WrapperFactoryAbstract wrapperFactory;
- private Employee employeeWO;
-
-
- @Before
- public void setUp() throws Exception {
-
- employeeDO = new Employee();
- employeeDO.setName("Smith");
-
- getPasswordMethod = Employee.class.getMethod("getPassword");
- setPasswordMethod = Employee.class.getMethod("setPassword", String.class);
-
- wrapperFactory = createWrapperFactory();
- wrapperFactory.setAdapterManager(mockAdapterManager);
- wrapperFactory.setAuthenticationSessionProvider(mockAuthenticationSessionProvider);
- wrapperFactory.setObjectPersistor(mockObjectPersistor);
- wrapperFactory.setSpecificationLookup(mockSpecificationLookup);
-
- context.checking(new Expectations() {
- {
- allowing(mockAdapterManager).getAdapterFor(employeeDO);
- will(returnValue(mockEmployeeAdapter));
-
- allowing(mockAdapterManager).adapterFor(passwordValue);
- will(returnValue(mockPasswordAdapter));
-
- allowing(mockEmployeeAdapter).getSpecification();
- will(returnValue(mockEmployeeSpec));
-
- allowing(mockEmployeeAdapter).getObject();
- will(returnValue(employeeDO));
-
- allowing(mockPasswordAdapter).getObject();
- will(returnValue(passwordValue));
-
- allowing(mockPasswordMember).getIdentifier();
- will(returnValue(mockPasswordIdentifier));
-
- allowing(mockSpecificationLookup).loadSpecification(Employee.class);
- will(returnValue(mockEmployeeSpec));
-
- allowing(mockEmployeeSpec).getMember(with(setPasswordMethod));
- will(returnValue(mockPasswordMember));
-
- allowing(mockEmployeeSpec).getMember(with(getPasswordMethod));
- will(returnValue(mockPasswordMember));
-
- allowing(mockPasswordMember).getName();
- will(returnValue("password"));
-
- allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
- will(returnValue(session));
-
- allowing(mockPasswordMember).isOneToOneAssociation();
- will(returnValue(true));
-
- allowing(mockPasswordMember).isOneToManyAssociation();
- will(returnValue(false));
- }
- });
-
- employeeWO = wrapperFactory.wrap(employeeDO);
- }
-
- /**
- * Mandatory hook.
- */
- protected abstract WrapperFactoryAbstract createWrapperFactory();
-
- @Test(expected = DisabledException.class)
- public void shouldNotBeAbleToModifyProperty() {
-
- // given
- final DisabledFacet disabledFacet = new DisabledFacetAlwaysEverywhere(mockPasswordMember);
- facets = Arrays.asList((Facet)disabledFacet, new PropertySetterFacetViaSetterMethod(setPasswordMethod, mockPasswordMember));
-
- final Consent visibilityConsent = new Allow(new InteractionResult(new PropertyVisibilityEvent(employeeDO, null)));
-
- final InteractionResult usabilityInteractionResult = new InteractionResult(new PropertyUsabilityEvent(employeeDO, null));
- usabilityInteractionResult.advise("disabled", disabledFacet);
- final Consent usabilityConsent = new Veto(usabilityInteractionResult);
-
- context.checking(new Expectations() {
- {
- allowing(mockPasswordMember).getFacets(with(any(Filter.class)));
- will(returnValue(facets));
-
- allowing(mockPasswordMember).isVisible(session, mockEmployeeAdapter, Where.ANYWHERE);
- will(returnValue(visibilityConsent));
-
- allowing(mockPasswordMember).isUsable(session, mockEmployeeAdapter, Where.ANYWHERE);
- will(returnValue(usabilityConsent));
- }
- });
-
- // when
- employeeWO.setPassword(passwordValue);
-
- // then should throw exception
- }
-
- @Ignore("TODO - reinstate or replace with integration tests")
- @Test
- public void canModifyProperty() {
- // given
-
- final Consent visibilityConsent = new Allow(new InteractionResult(new PropertyVisibilityEvent(employeeDO, mockPasswordIdentifier)));
- final Consent usabilityConsent = new Allow(new InteractionResult(new PropertyUsabilityEvent(employeeDO, mockPasswordIdentifier)));
- final Consent validityConsent = new Allow(new InteractionResult(new PropertyModifyEvent(employeeDO, mockPasswordIdentifier, passwordValue)));
-
- context.checking(new Expectations() {
- {
- allowing(mockPasswordMember).isVisible(session, mockEmployeeAdapter, Where.ANYWHERE);
- will(returnValue(visibilityConsent));
-
- allowing(mockPasswordMember).isUsable(session, mockEmployeeAdapter, Where.ANYWHERE);
- will(returnValue(usabilityConsent));
-
- allowing(mockPasswordMember).isAssociationValid(mockEmployeeAdapter, mockPasswordAdapter);
- will(returnValue(validityConsent));
- }
- });
-
- facets = Arrays.asList((Facet)new PropertySetterFacetViaSetterMethod(setPasswordMethod, mockPasswordMember));
- context.checking(new Expectations() {
- {
- allowing(mockPasswordMember).getFacets(with(any(Filter.class)));
- will(returnValue(facets));
-
- oneOf(mockPasswordMember).set(mockEmployeeAdapter, mockPasswordAdapter);
- }
- });
-
- // when
- employeeWO.setPassword(passwordValue);
-
-
- // and given
- facets = Arrays.asList((Facet)new PropertyAccessorFacetViaAccessor(getPasswordMethod, mockPasswordMember));
- context.checking(new Expectations() {
- {
- allowing(mockPasswordMember).getFacets(with(any(Filter.class)));
- will(returnValue(facets));
-
- oneOf(mockPasswordMember).get(mockEmployeeAdapter);
- will(returnValue(mockPasswordAdapter));
- }
- });
-
- // then be allowed
- assertThat(employeeWO.getPassword(), is(passwordValue));
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject.java b/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject.java
deleted file mode 100644
index b867968..0000000
--- a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject.java
+++ /dev/null
@@ -1,32 +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.progmodel.wrapper;
-
-import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
-import org.apache.isis.core.wrapper.WrapperFactoryCglib;
-
-public class WrapperFactoryCglibTest_wrappedObject extends WrapperFactoryAbstractTest_wrappedObject {
-
- @Override
- protected WrapperFactoryAbstract createWrapperFactory() {
- return new WrapperFactoryCglib();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject_transient.java b/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject_transient.java
deleted file mode 100644
index 05dfdec..0000000
--- a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject_transient.java
+++ /dev/null
@@ -1,34 +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.progmodel.wrapper;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
-import org.apache.isis.core.wrapper.WrapperFactoryCglib;
-
-public class WrapperFactoryCglibTest_wrappedObject_transient extends WrapperFactoryAbstractTest_wrappedObject_transient {
-
- @Override
- protected WrapperFactoryAbstract createWrapperFactory() {
- return new WrapperFactoryCglib();
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject.java b/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject.java
deleted file mode 100644
index b7ce494..0000000
--- a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject.java
+++ /dev/null
@@ -1,32 +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.progmodel.wrapper;
-
-import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
-import org.apache.isis.core.wrapper.WrapperFactoryJavassist;
-
-public class WrapperFactoryJavassistTest_wrappedObject extends WrapperFactoryAbstractTest_wrappedObject {
-
- @Override
- protected WrapperFactoryAbstract createWrapperFactory() {
- return new WrapperFactoryJavassist();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject_transient.java b/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject_transient.java
deleted file mode 100644
index c613348..0000000
--- a/core/module-wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject_transient.java
+++ /dev/null
@@ -1,31 +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.progmodel.wrapper;
-
-import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
-import org.apache.isis.core.wrapper.WrapperFactoryJavassist;
-
-public class WrapperFactoryJavassistTest_wrappedObject_transient extends WrapperFactoryAbstractTest_wrappedObject_transient {
-
- @Override
- protected WrapperFactoryAbstract createWrapperFactory() {
- return new WrapperFactoryJavassist();
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index f013902..f806d8f 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -1095,6 +1095,11 @@ ${license.additional-notes}
<type>test-jar</type>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-wrapper</artifactId>
+ <version>1.6.0-SNAPSHOT</version>
+ </dependency>
<!-- bytecode components -->
<dependency>
@@ -1388,11 +1393,6 @@ ${license.additional-notes}
<scope>test</scope>
<type>test-jar</type>
</dependency>
- <dependency>
- <groupId>org.apache.isis.module</groupId>
- <artifactId>isis-module-wrapper</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- </dependency>
<!-- JodaTime -->
@@ -2074,6 +2074,7 @@ ${license.additional-notes}
<module>log4j</module>
<module>metamodel</module>
<module>runtime</module>
+ <module>wrapper</module>
<module>webserver</module>
<module>bytecode-cglib</module>
@@ -2103,7 +2104,6 @@ ${license.additional-notes}
<module>module-publishing-jdo</module>
<module>module-publishingeventserializer-ro</module>
<module>module-settings</module>
- <module>module-wrapper</module>
<module>tck</module>
</modules>
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/specsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/specsupport/pom.xml b/core/specsupport/pom.xml
index 50d6048..8d85116 100644
--- a/core/specsupport/pom.xml
+++ b/core/specsupport/pom.xml
@@ -64,8 +64,8 @@
<artifactId>isis-core-applib</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.module</groupId>
- <artifactId>isis-module-wrapper</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/pom.xml
----------------------------------------------------------------------
diff --git a/core/wrapper/pom.xml b/core/wrapper/pom.xml
new file mode 100644
index 0000000..c5a58b3
--- /dev/null
+++ b/core/wrapper/pom.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis</artifactId>
+ <version>1.6.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>isis-core-wrapper</artifactId>
+
+ <name>Isis Core Wrapper Service</name>
+ <description>Isis Core Wrapper Service</description>
+
+
+ <properties>
+ <siteBaseDir>..</siteBaseDir>
+ <relativeUrl>wrapper/</relativeUrl>
+ </properties>
+
+ <!-- used in Site generation for relative references. -->
+ <url>http://isis.apache.org/${relativeUrl}</url>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-project-info-reports-plugin</artifactId>
+ <inherited>false</inherited>
+ <configuration>
+ <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
+ </configuration>
+ <reportSets>
+ <reportSet>
+ <inherited>false</inherited>
+ <reports>
+ <report>dependencies</report>
+ <report>dependency-convergence</report>
+ <report>plugins</report>
+ <report>summary</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>3.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib-nodep</artifactId>
+ <version>2.2.2</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-runtime</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-metamodel</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-runtime</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-unittestsupport</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-tck-dom</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.objenesis</groupId>
+ <artifactId>objenesis</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.javassist</groupId>
+ <artifactId>javassist</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <!-- explicitly include for use of WrapperFactoryCglib -->
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>cglib</groupId>
+ <artifactId>cglib-nodep</artifactId>
+ <!-- explicitly include for use of WrapperFactoryCglib -->
+ <optional>true</optional>
+ </dependency>
+
+ </dependencies>
+
+</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryAbstract.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryAbstract.java
new file mode 100644
index 0000000..ceea4a5
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryAbstract.java
@@ -0,0 +1,314 @@
+/*
+ * 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.wrapper;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.events.*;
+import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.applib.services.wrapper.WrappingObject;
+import org.apache.isis.applib.services.wrapper.listeners.InteractionListener;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistorAware;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
+import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcher;
+import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcherTypeSafe;
+import org.apache.isis.core.wrapper.handlers.ProxyContextHandler;
+import org.apache.isis.core.wrapper.proxy.ProxyInstantiator;
+
+public abstract class WrapperFactoryAbstract implements WrapperFactory, AuthenticationSessionProviderAware, SpecificationLoaderAware, AdapterManagerAware, ObjectPersistorAware {
+
+ private final List<InteractionListener> listeners = new ArrayList<InteractionListener>();
+ private final Map<Class<? extends InteractionEvent>, InteractionEventDispatcher> dispatchersByEventClass = new HashMap<Class<? extends InteractionEvent>, InteractionEventDispatcher>();
+
+ private AuthenticationSessionProvider authenticationSessionProvider;
+ private SpecificationLoader specificationLookup;
+ private AdapterManager adapterManager;
+ private ObjectPersistor objectPersistor;
+
+ private final ProxyContextHandler proxy;
+
+ public WrapperFactoryAbstract(final ProxyInstantiator proxyInstantiator) {
+
+ proxy = new ProxyContextHandler(proxyInstantiator);
+
+ dispatchersByEventClass.put(ObjectTitleEvent.class, new InteractionEventDispatcherTypeSafe<ObjectTitleEvent>() {
+ @Override
+ public void dispatchTypeSafe(final ObjectTitleEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.objectTitleRead(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(PropertyVisibilityEvent.class, new InteractionEventDispatcherTypeSafe<PropertyVisibilityEvent>() {
+ @Override
+ public void dispatchTypeSafe(final PropertyVisibilityEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.propertyVisible(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(PropertyUsabilityEvent.class, new InteractionEventDispatcherTypeSafe<PropertyUsabilityEvent>() {
+ @Override
+ public void dispatchTypeSafe(final PropertyUsabilityEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.propertyUsable(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(PropertyAccessEvent.class, new InteractionEventDispatcherTypeSafe<PropertyAccessEvent>() {
+ @Override
+ public void dispatchTypeSafe(final PropertyAccessEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.propertyAccessed(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(PropertyModifyEvent.class, new InteractionEventDispatcherTypeSafe<PropertyModifyEvent>() {
+ @Override
+ public void dispatchTypeSafe(final PropertyModifyEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.propertyModified(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(CollectionVisibilityEvent.class, new InteractionEventDispatcherTypeSafe<CollectionVisibilityEvent>() {
+ @Override
+ public void dispatchTypeSafe(final CollectionVisibilityEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.collectionVisible(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(CollectionUsabilityEvent.class, new InteractionEventDispatcherTypeSafe<CollectionUsabilityEvent>() {
+ @Override
+ public void dispatchTypeSafe(final CollectionUsabilityEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.collectionUsable(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(CollectionAccessEvent.class, new InteractionEventDispatcherTypeSafe<CollectionAccessEvent>() {
+ @Override
+ public void dispatchTypeSafe(final CollectionAccessEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.collectionAccessed(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(CollectionAddToEvent.class, new InteractionEventDispatcherTypeSafe<CollectionAddToEvent>() {
+ @Override
+ public void dispatchTypeSafe(final CollectionAddToEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.collectionAddedTo(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(CollectionRemoveFromEvent.class, new InteractionEventDispatcherTypeSafe<CollectionRemoveFromEvent>() {
+ @Override
+ public void dispatchTypeSafe(final CollectionRemoveFromEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.collectionRemovedFrom(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(ActionVisibilityEvent.class, new InteractionEventDispatcherTypeSafe<ActionVisibilityEvent>() {
+ @Override
+ public void dispatchTypeSafe(final ActionVisibilityEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.actionVisible(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(ActionUsabilityEvent.class, new InteractionEventDispatcherTypeSafe<ActionUsabilityEvent>() {
+ @Override
+ public void dispatchTypeSafe(final ActionUsabilityEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.actionUsable(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(ActionArgumentEvent.class, new InteractionEventDispatcherTypeSafe<ActionArgumentEvent>() {
+ @Override
+ public void dispatchTypeSafe(final ActionArgumentEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.actionArgument(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(ActionInvocationEvent.class, new InteractionEventDispatcherTypeSafe<ActionInvocationEvent>() {
+ @Override
+ public void dispatchTypeSafe(final ActionInvocationEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.actionInvoked(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(ObjectValidityEvent.class, new InteractionEventDispatcherTypeSafe<ObjectValidityEvent>() {
+ @Override
+ public void dispatchTypeSafe(final ObjectValidityEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.objectPersisted(interactionEvent);
+ }
+ }
+ });
+ dispatchersByEventClass.put(CollectionMethodEvent.class, new InteractionEventDispatcherTypeSafe<CollectionMethodEvent>() {
+ @Override
+ public void dispatchTypeSafe(final CollectionMethodEvent interactionEvent) {
+ for (final InteractionListener l : getListeners()) {
+ l.collectionMethodInvoked(interactionEvent);
+ }
+ }
+ });
+ }
+
+ // /////////////////////////////////////////////////////////////
+ // wrap and unwrap
+ // /////////////////////////////////////////////////////////////
+
+ @Override
+ public <T> T wrap(final T domainObject) {
+ return wrap(domainObject, ExecutionMode.EXECUTE);
+ }
+
+ @Override
+ public <T> T wrapNoExecute(final T domainObject) {
+ return wrap(domainObject, ExecutionMode.NO_EXECUTE);
+ }
+
+ @Override
+ public <T> T wrapSkipRules(final T domainObject) {
+ return wrap(domainObject, ExecutionMode.SKIP_RULES);
+ }
+
+ @Override
+ public <T> T wrap(final T domainObject, final ExecutionMode mode) {
+ if (domainObject instanceof WrappingObject) {
+ final WrappingObject wrapperObject = (WrappingObject) domainObject;
+ final ExecutionMode wrapperMode = wrapperObject.__isis_executionMode();
+ if(wrapperMode != mode) {
+ final Object underlyingDomainObject = wrapperObject.__isis_wrapped();
+ return (T)createProxy(underlyingDomainObject, mode);
+ }
+ return domainObject;
+ }
+ return createProxy(domainObject, mode);
+ }
+
+ protected <T> T createProxy(final T domainObject, final ExecutionMode mode) {
+ return proxy.proxy(domainObject, this, mode, getAuthenticationSessionProvider(), getSpecificationLookup(), getAdapterManager(), getObjectPersistor());
+ }
+
+ @Override
+ public boolean isWrapper(final Object possibleWrappedDomainObject) {
+ return possibleWrappedDomainObject instanceof WrappingObject;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ @Programmatic
+ public <T> T unwrap(T possibleWrappedDomainObject) {
+ if(isWrapper(possibleWrappedDomainObject)) {
+ final WrappingObject wrappingObject = (WrappingObject) possibleWrappedDomainObject;
+ return (T) wrappingObject.__isis_wrapped();
+ }
+ return possibleWrappedDomainObject;
+ }
+
+ // /////////////////////////////////////////////////////////////
+ // Listeners
+ // /////////////////////////////////////////////////////////////
+
+ @Override
+ public List<InteractionListener> getListeners() {
+ return listeners;
+ }
+
+ @Override
+ public boolean addInteractionListener(final InteractionListener listener) {
+ return listeners.add(listener);
+ }
+
+ @Override
+ public boolean removeInteractionListener(final InteractionListener listener) {
+ return listeners.remove(listener);
+ }
+
+ @Override
+ public void notifyListeners(final InteractionEvent interactionEvent) {
+ final InteractionEventDispatcher dispatcher = dispatchersByEventClass.get(interactionEvent.getClass());
+ if (dispatcher == null) {
+ throw new RuntimeException("Unknown InteractionEvent - register into dispatchers map");
+ }
+ dispatcher.dispatch(interactionEvent);
+ }
+
+ // /////////////////////////////////////////////////////////////
+ // Listeners
+ // /////////////////////////////////////////////////////////////
+
+ protected AuthenticationSessionProvider getAuthenticationSessionProvider() {
+ return authenticationSessionProvider;
+ }
+ @Programmatic
+ @Override
+ public void setAuthenticationSessionProvider(final AuthenticationSessionProvider authenticationSessionProvider) {
+ this.authenticationSessionProvider = authenticationSessionProvider;
+ }
+
+ protected AdapterManager getAdapterManager() {
+ return adapterManager;
+ }
+ @Programmatic
+ @Override
+ public void setAdapterManager(final AdapterManager adapterManager) {
+ this.adapterManager = adapterManager;
+ }
+
+
+ protected SpecificationLoader getSpecificationLookup() {
+ return specificationLookup;
+ }
+ @Programmatic
+ @Override
+ public void setSpecificationLookup(final SpecificationLoader specificationLookup) {
+ this.specificationLookup = specificationLookup;
+ }
+
+ protected ObjectPersistor getObjectPersistor() {
+ return objectPersistor;
+ }
+ @Programmatic
+ @Override
+ public void setObjectPersistor(final ObjectPersistor objectPersistor) {
+ this.objectPersistor = objectPersistor;
+ }
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryCglib.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryCglib.java b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryCglib.java
new file mode 100644
index 0000000..fd75b59
--- /dev/null
+++ b/core/wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryCglib.java
@@ -0,0 +1,30 @@
+/*
+ * 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.wrapper;
+
+import org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForCglib;
+
+public class WrapperFactoryCglib extends WrapperFactoryAbstract {
+
+ public WrapperFactoryCglib() {
+ super(new ProxyInstantiatorForCglib());
+ }
+
+}
[04/39] git commit: ISIS-839: fix Reflections discovery of
@DomainService for jetty-console,
remove "harmless" stack traces when running in jetty:run.
Posted by da...@apache.org.
ISIS-839: fix Reflections discovery of @DomainService for jetty-console, remove "harmless" stack traces when running in jetty:run.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/4e93d1b8
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/4e93d1b8
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/4e93d1b8
Branch: refs/heads/master
Commit: 4e93d1b875caaa7de6102301bc4435e284e3b125
Parents: d2394b8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 21 11:11:33 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 21 11:11:33 2014 +0100
----------------------------------------------------------------------
.../ClassDiscoveryServiceUsingReflections.java | 104 ++++++++++++++++++-
.../ServicesInstallerFromAnnotation.java | 3 +
2 files changed, 102 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/4e93d1b8/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java b/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java
index a8b5df2..993319f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java
@@ -18,12 +18,20 @@
*/
package org.apache.isis.applib.services.classdiscovery;
+import java.io.UnsupportedEncodingException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.List;
import java.util.Set;
-
+import com.google.common.collect.Lists;
import org.reflections.Reflections;
import org.reflections.scanners.SubTypesScanner;
import org.reflections.util.ClasspathHelper;
-
+import org.reflections.util.ConfigurationBuilder;
+import org.reflections.vfs.SystemDir;
+import org.reflections.vfs.Vfs;
import org.apache.isis.applib.AbstractService;
import org.apache.isis.applib.annotation.DomainService;
@@ -42,13 +50,99 @@ public class ClassDiscoveryServiceUsingReflections
extends AbstractService
implements ClassDiscoveryService {
+
@Override
public <T> Set<Class<? extends T>> findSubTypesOfClasses(Class<T> type) {
- final Reflections reflections = new Reflections(
- ClasspathHelper.forClassLoader(Thread.currentThread().getContextClassLoader()),
- ClasspathHelper.forClass(Object.class),
+ List<Vfs.UrlType> urlTypes = getUrlTypes();
+ Vfs.setDefaultURLTypes(urlTypes);
+
+ ConfigurationBuilder configuration = ConfigurationBuilder.build(
+ ClasspathHelper.forClassLoader(Thread.currentThread().getContextClassLoader()),
+ ClasspathHelper.forClass(Object.class),
new SubTypesScanner(false));
+ // doesn't seem to do anything
+ // configuration = configuration.filterInputsBy(ignorePom());
+ final Reflections reflections = new Reflections(configuration);
return reflections.getSubTypesOf(type);
}
+ // //////////////////////////////////////
+
+ /**
+ * Has <tt>public</tt> visibility only so can be reused by other services (including Isis runtime itself).
+ */
+ public static List<Vfs.UrlType> getUrlTypes() {
+ final List<Vfs.UrlType> urlTypes = Lists.newArrayList();
+ urlTypes.add(new PomUrlType());
+ urlTypes.add(new JettyConsoleUrlType());
+ urlTypes.addAll(Arrays.asList(Vfs.DefaultUrlTypes.values()));
+ return urlTypes;
+ }
+
+ private static class PomUrlType implements Vfs.UrlType {
+ public boolean matches(URL url) {
+ final String protocol = url.getProtocol();
+ final String externalForm = url.toExternalForm();
+ return protocol.equals("file") && externalForm.endsWith(".pom");
+ }
+
+ public Vfs.Dir createDir(final URL url) throws Exception {
+ return null;
+ }
+ }
+
+ public static class JettyConsoleUrlType implements Vfs.UrlType {
+ public boolean matches(URL url) {
+ final String protocol = url.getProtocol();
+ final String externalForm = url.toExternalForm();
+ final boolean matches = protocol.equals("file") && externalForm.contains("jetty-console") && externalForm.contains("-any-") && externalForm.endsWith("webapp/WEB-INF/classes/");
+ return matches;
+ }
+
+ public Vfs.Dir createDir(final URL url) throws Exception {
+ return new SystemDir(getFile(url));
+ }
+ }
+
+ /**
+ * try to get {@link java.io.File} from url
+ *
+ * <p>
+ * Copied from {@link org.reflections.vfs.Vfs} (not publicly accessible)
+ * </p>
+ */
+ static java.io.File getFile(URL url) {
+ java.io.File file;
+ String path;
+
+ try {
+ path = url.toURI().getSchemeSpecificPart();
+ if ((file = new java.io.File(path)).exists()) return file;
+ } catch (URISyntaxException e) {
+ }
+
+ try {
+ path = URLDecoder.decode(url.getPath(), "UTF-8");
+ if (path.contains(".jar!")) path = path.substring(0, path.lastIndexOf(".jar!") + ".jar".length());
+ if ((file = new java.io.File(path)).exists()) return file;
+
+ } catch (UnsupportedEncodingException e) {
+ }
+
+ try {
+ path = url.toExternalForm();
+ if (path.startsWith("jar:")) path = path.substring("jar:".length());
+ if (path.startsWith("file:")) path = path.substring("file:".length());
+ if (path.contains(".jar!")) path = path.substring(0, path.indexOf(".jar!") + ".jar".length());
+ if ((file = new java.io.File(path)).exists()) return file;
+
+ path = path.replace("%20", " ");
+ if ((file = new java.io.File(path)).exists()) return file;
+
+ } catch (Exception e) {
+ }
+
+ return null;
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/4e93d1b8/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
index 6e091f8..68c187b 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
@@ -29,9 +29,11 @@ import com.google.common.base.*;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import org.reflections.Reflections;
+import org.reflections.vfs.Vfs;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections;
import org.apache.isis.core.commons.config.InstallerAbstract;
import org.apache.isis.core.runtime.system.DeploymentType;
@@ -182,6 +184,7 @@ public class ServicesInstallerFromAnnotation extends InstallerAbstract implement
initIfRequired();
for (final String packagePrefix : Iterables.transform(Splitter.on(",").split(packagePrefixes), trim())) {
+ Vfs.setDefaultURLTypes(ClassDiscoveryServiceUsingReflections.getUrlTypes());
Reflections reflections = new Reflections(packagePrefix);
final Iterable<Class<?>> classes = Iterables.filter(
[15/39] git commit: ISIS-825,
ISIS-544: fix for auto-focus of BigDecimal, also for date fields.
Posted by da...@apache.org.
ISIS-825, ISIS-544: fix for auto-focus of BigDecimal, also for date fields.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/0e346e47
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/0e346e47
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/0e346e47
Branch: refs/heads/master
Commit: 0e346e476294bc144d53525893bd89dc3577602b
Parents: f506213
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 06:24:44 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 18:18:15 2014 +0100
----------------------------------------------------------------------
.../components/widgets/cssmenu/ActionLinkFactoryAbstract.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/0e346e47/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java
index 4b09951..945bd27 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ActionLinkFactoryAbstract.java
@@ -130,7 +130,11 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
final Component actionPanelFirstParam = actionPanel.visitChildren(new IVisitor<Component, Component>() {
@Override
public void component(Component object, IVisit<Component> visit) {
- if (object instanceof FormComponent) {
+ if (object instanceof FormComponent &&
+ !"scalarIfCompact".equals(object.getId()) &&
+ object.getOutputMarkupId()) {
+ // there are components for 'compact' and 'regular'; we want the 'regular' one
+ // also double check that has outputMarkupId enabled (prereq for setting focus)
visit.stop(object);
}
}
[21/39] git commit: [maven-release-plugin] prepare for next
development iteration
Posted by da...@apache.org.
[maven-release-plugin] prepare for next development iteration
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/be6a4246
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/be6a4246
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/be6a4246
Branch: refs/heads/master
Commit: be6a42466c280f80d6d9026ab3ab8bc751ffbf39
Parents: 59f9b00
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 23:47:08 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 23:47:08 2014 +0100
----------------------------------------------------------------------
core/applib/pom.xml | 2 +-
core/bytecode-cglib/pom.xml | 2 +-
core/bytecode-javassist/pom.xml | 4 +-
core/integtestsupport/pom.xml | 2 +-
core/log4j/pom.xml | 2 +-
core/metamodel/pom.xml | 2 +-
core/module-audit-jdo/pom.xml | 2 +-
core/module-background/pom.xml | 2 +-
core/module-command-jdo/pom.xml | 2 +-
core/module-devutils/applib/pom.xml | 2 +-
core/module-devutils/impl/pom.xml | 2 +-
core/module-devutils/pom.xml | 10 +-
core/module-publishing-jdo/pom.xml | 2 +-
.../module-publishingeventserializer-ro/pom.xml | 2 +-
core/module-settings/applib/pom.xml | 2 +-
core/module-settings/impl-jdo/pom.xml | 2 +-
core/module-settings/pom.xml | 10 +-
core/objectstore-inmemory/pom.xml | 2 +-
core/objectstore-jdo-datanucleus/pom.xml | 2 +-
core/objectstore-jdo-metamodel/pom.xml | 2 +-
core/pom.xml | 114 +++++++++----------
core/profilestore-inmemory/pom.xml | 2 +-
core/runtime/pom.xml | 2 +-
core/security-noop/pom.xml | 2 +-
core/security-shiro/pom.xml | 6 +-
core/specsupport/pom.xml | 2 +-
core/tck/pom.xml | 2 +-
core/tck/tck-dom/pom.xml | 2 +-
core/tck/tck-fixture/pom.xml | 2 +-
core/tck/tck-viewer-restfulobjects/pom.xml | 2 +-
core/unittestsupport/pom.xml | 2 +-
core/viewer-restfulobjects-applib/pom.xml | 2 +-
core/viewer-restfulobjects-rendering/pom.xml | 2 +-
core/viewer-restfulobjects-server/pom.xml | 2 +-
core/webserver/pom.xml | 2 +-
core/wrapper/pom.xml | 2 +-
36 files changed, 103 insertions(+), 103 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/applib/pom.xml b/core/applib/pom.xml
index 4e88b7d..fc1b23d 100644
--- a/core/applib/pom.xml
+++ b/core/applib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/bytecode-cglib/pom.xml
----------------------------------------------------------------------
diff --git a/core/bytecode-cglib/pom.xml b/core/bytecode-cglib/pom.xml
index dcca1bc..4c4eb6f 100644
--- a/core/bytecode-cglib/pom.xml
+++ b/core/bytecode-cglib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-bytecode-cglib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/bytecode-javassist/pom.xml
----------------------------------------------------------------------
diff --git a/core/bytecode-javassist/pom.xml b/core/bytecode-javassist/pom.xml
index 4ed3221..9398006 100644
--- a/core/bytecode-javassist/pom.xml
+++ b/core/bytecode-javassist/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-bytecode-javassist</artifactId>
@@ -39,7 +39,7 @@
<connection>scm:svn:http://svn.apache.org/repos/asf/incubator/isis/trunk/runtimes/dflt/bytecode/javassist/</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/isis/trunk$/{relativeUrl}</developerConnection>
<url>http://svn.apache.org/repos/asf/incubator/isis/trunk/runtimes/dflt/bytecode/javassist/</url>
- <tag>isis-1.6.0-RC3</tag>
+ <tag>HEAD</tag>
</scm>
<!-- used in Site generation for relative references. -->
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/integtestsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/integtestsupport/pom.xml b/core/integtestsupport/pom.xml
index 37f9397..943da21 100644
--- a/core/integtestsupport/pom.xml
+++ b/core/integtestsupport/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-integtestsupport</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/log4j/pom.xml
----------------------------------------------------------------------
diff --git a/core/log4j/pom.xml b/core/log4j/pom.xml
index d32649e..ff14f31 100644
--- a/core/log4j/pom.xml
+++ b/core/log4j/pom.xml
@@ -15,7 +15,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-log4j</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/metamodel/pom.xml
----------------------------------------------------------------------
diff --git a/core/metamodel/pom.xml b/core/metamodel/pom.xml
index c39e090..7d55d98 100644
--- a/core/metamodel/pom.xml
+++ b/core/metamodel/pom.xml
@@ -15,7 +15,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-metamodel</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-audit-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-audit-jdo/pom.xml b/core/module-audit-jdo/pom.xml
index 1c00f3a..cebf10c 100644
--- a/core/module-audit-jdo/pom.xml
+++ b/core/module-audit-jdo/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-background/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-background/pom.xml b/core/module-background/pom.xml
index 45a9d7a..33ab617 100644
--- a/core/module-background/pom.xml
+++ b/core/module-background/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-command-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-command-jdo/pom.xml b/core/module-command-jdo/pom.xml
index 5b86151..199308b 100644
--- a/core/module-command-jdo/pom.xml
+++ b/core/module-command-jdo/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-devutils/applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-devutils/applib/pom.xml b/core/module-devutils/applib/pom.xml
index 825381b..4e8f8f4 100644
--- a/core/module-devutils/applib/pom.xml
+++ b/core/module-devutils/applib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-module-devutils-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-devutils/impl/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-devutils/impl/pom.xml b/core/module-devutils/impl/pom.xml
index badf0e9..6b3c460 100644
--- a/core/module-devutils/impl/pom.xml
+++ b/core/module-devutils/impl/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-module-devutils-impl</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-devutils/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-devutils/pom.xml b/core/module-devutils/pom.xml
index ad937cc..bae27b3 100644
--- a/core/module-devutils/pom.xml
+++ b/core/module-devutils/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.isis.module</groupId>
@@ -48,12 +48,12 @@
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -61,12 +61,12 @@
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-publishing-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-publishing-jdo/pom.xml b/core/module-publishing-jdo/pom.xml
index da7f2d0..420125e 100644
--- a/core/module-publishing-jdo/pom.xml
+++ b/core/module-publishing-jdo/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-publishingeventserializer-ro/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-publishingeventserializer-ro/pom.xml b/core/module-publishingeventserializer-ro/pom.xml
index 7a209c8..b06d9ee 100644
--- a/core/module-publishingeventserializer-ro/pom.xml
+++ b/core/module-publishingeventserializer-ro/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-settings/applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-settings/applib/pom.xml b/core/module-settings/applib/pom.xml
index 805274d..9f586c5 100644
--- a/core/module-settings/applib/pom.xml
+++ b/core/module-settings/applib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-module-settings-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-settings/impl-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-settings/impl-jdo/pom.xml b/core/module-settings/impl-jdo/pom.xml
index bbb4929..fbbb12a 100644
--- a/core/module-settings/impl-jdo/pom.xml
+++ b/core/module-settings/impl-jdo/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-module-settings-impl-jdo</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/module-settings/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-settings/pom.xml b/core/module-settings/pom.xml
index 3d9416f..677f227 100644
--- a/core/module-settings/pom.xml
+++ b/core/module-settings/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.isis.module</groupId>
@@ -48,12 +48,12 @@
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -61,12 +61,12 @@
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-impl-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-impl-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/objectstore-inmemory/pom.xml
----------------------------------------------------------------------
diff --git a/core/objectstore-inmemory/pom.xml b/core/objectstore-inmemory/pom.xml
index c27616d..be8f290 100644
--- a/core/objectstore-inmemory/pom.xml
+++ b/core/objectstore-inmemory/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-objectstore</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/objectstore-jdo-datanucleus/pom.xml
----------------------------------------------------------------------
diff --git a/core/objectstore-jdo-datanucleus/pom.xml b/core/objectstore-jdo-datanucleus/pom.xml
index e60dce2..651a221 100644
--- a/core/objectstore-jdo-datanucleus/pom.xml
+++ b/core/objectstore-jdo-datanucleus/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/objectstore-jdo-metamodel/pom.xml
----------------------------------------------------------------------
diff --git a/core/objectstore-jdo-metamodel/pom.xml b/core/objectstore-jdo-metamodel/pom.xml
index 09bb762..0654bd5 100644
--- a/core/objectstore-jdo-metamodel/pom.xml
+++ b/core/objectstore-jdo-metamodel/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-objectstore-jdo-metamodel</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 44ed90e..eb9f5c4 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -21,7 +21,7 @@
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<packaging>pom</packaging>
@@ -153,7 +153,7 @@
<connection>scm:git:http://git.apache.org/isis.git/core</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/isis.git/trunk/framework/</developerConnection>
<url>git://git.apache.org/isis.git/core</url>
- <tag>isis-1.6.0-RC3</tag>
+ <tag>HEAD</tag>
</scm>
<!-- used in Site generation for relative references. -->
@@ -1030,13 +1030,13 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<!-- not scope=test, because referenced by some sql-tests-common under compile scope -->
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -1045,14 +1045,14 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -1061,7 +1061,7 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-log4j</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
@@ -1070,14 +1070,14 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-metamodel</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-metamodel</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -1086,52 +1086,52 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-runtime</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-runtime</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-wrapper</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<!-- bytecode components -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-bytecode-cglib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-bytecode-javassist</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<!-- webserver -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-webserver</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<!-- specsupport -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-specsupport</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<!-- integtestsupport -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-integtestsupport</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<!-- not scope=test, because referenced by some sql-tests-common under compile scope -->
</dependency>
@@ -1139,36 +1139,36 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore-jdo-metamodel</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore-jdo-metamodel</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -1178,36 +1178,36 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-rendering</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-rendering</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-server</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-server</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -1217,12 +1217,12 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security-shiro</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
@@ -1230,7 +1230,7 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-profilestore</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
@@ -1238,22 +1238,22 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck-dom</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck-fixture</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck-viewer-restfulobjects</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
@@ -1262,48 +1262,48 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-audit-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-audit-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-background</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-background</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-command-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-command-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -1315,55 +1315,55 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-publishing-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-publishing-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-publishingeventserializer-ro</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-publishingeventserializer-ro</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<!--
declared as a convenience; alternative is for the domain application to
@@ -1372,24 +1372,24 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-impl-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-impl-jdo</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/profilestore-inmemory/pom.xml
----------------------------------------------------------------------
diff --git a/core/profilestore-inmemory/pom.xml b/core/profilestore-inmemory/pom.xml
index dccba79..c152a57 100644
--- a/core/profilestore-inmemory/pom.xml
+++ b/core/profilestore-inmemory/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-profilestore</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/runtime/pom.xml
----------------------------------------------------------------------
diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml
index 24a0a0d..62a7872 100644
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-runtime</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/security-noop/pom.xml
----------------------------------------------------------------------
diff --git a/core/security-noop/pom.xml b/core/security-noop/pom.xml
index 9a3afa9..45e0963 100644
--- a/core/security-noop/pom.xml
+++ b/core/security-noop/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-security</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/security-shiro/pom.xml
----------------------------------------------------------------------
diff --git a/core/security-shiro/pom.xml b/core/security-shiro/pom.xml
index 90cdb60..fa25297 100644
--- a/core/security-shiro/pom.xml
+++ b/core/security-shiro/pom.xml
@@ -23,12 +23,12 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security-shiro</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<name>Isis Shiro Security</name>
@@ -102,7 +102,7 @@
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security-shiro</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/specsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/specsupport/pom.xml b/core/specsupport/pom.xml
index 03d38b6..08c8577 100644
--- a/core/specsupport/pom.xml
+++ b/core/specsupport/pom.xml
@@ -15,7 +15,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-specsupport</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/tck/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/pom.xml b/core/tck/pom.xml
index 08e8f63..a0c97f1 100644
--- a/core/tck/pom.xml
+++ b/core/tck/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-tck</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/tck/tck-dom/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/pom.xml b/core/tck/tck-dom/pom.xml
index d5b49ac..9eda65d 100644
--- a/core/tck/tck-dom/pom.xml
+++ b/core/tck/tck-dom/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-tck-dom</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/tck/tck-fixture/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/tck-fixture/pom.xml b/core/tck/tck-fixture/pom.xml
index ed48392..1b07b55 100644
--- a/core/tck/tck-fixture/pom.xml
+++ b/core/tck/tck-fixture/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-tck-fixture</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/tck/tck-viewer-restfulobjects/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/tck-viewer-restfulobjects/pom.xml b/core/tck/tck-viewer-restfulobjects/pom.xml
index 3c8e182..2023b3b 100644
--- a/core/tck/tck-viewer-restfulobjects/pom.xml
+++ b/core/tck/tck-viewer-restfulobjects/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-tck-viewer-restfulobjects</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/unittestsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/unittestsupport/pom.xml b/core/unittestsupport/pom.xml
index eedd5d2..d860a23 100644
--- a/core/unittestsupport/pom.xml
+++ b/core/unittestsupport/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-unittestsupport</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/viewer-restfulobjects-applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-applib/pom.xml b/core/viewer-restfulobjects-applib/pom.xml
index ff5d017..a8cd530 100644
--- a/core/viewer-restfulobjects-applib/pom.xml
+++ b/core/viewer-restfulobjects-applib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-viewer-restfulobjects-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/viewer-restfulobjects-rendering/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/pom.xml b/core/viewer-restfulobjects-rendering/pom.xml
index 0c072da..5b3449e 100644
--- a/core/viewer-restfulobjects-rendering/pom.xml
+++ b/core/viewer-restfulobjects-rendering/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-viewer-restfulobjects-rendering</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/viewer-restfulobjects-server/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/pom.xml b/core/viewer-restfulobjects-server/pom.xml
index 9e568e7..3d20560 100644
--- a/core/viewer-restfulobjects-server/pom.xml
+++ b/core/viewer-restfulobjects-server/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-viewer-restfulobjects-server</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/webserver/pom.xml
----------------------------------------------------------------------
diff --git a/core/webserver/pom.xml b/core/webserver/pom.xml
index 726edb8..36b86c0 100644
--- a/core/webserver/pom.xml
+++ b/core/webserver/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-webserver</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/be6a4246/core/wrapper/pom.xml
----------------------------------------------------------------------
diff --git a/core/wrapper/pom.xml b/core/wrapper/pom.xml
index d3bfe3a..565b4d0 100644
--- a/core/wrapper/pom.xml
+++ b/core/wrapper/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-core-wrapper</artifactId>
[23/39] git commit: [maven-release-plugin] prepare release
isis-viewer-wicket-1.6.0-RC3
Posted by da...@apache.org.
[maven-release-plugin] prepare release isis-viewer-wicket-1.6.0-RC3
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/5a283301
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/5a283301
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/5a283301
Branch: refs/heads/master
Commit: 5a283301fd12ba712a956cb65bf23fb679d7507c
Parents: 61434a5
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 25 07:44:14 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 07:44:14 2014 +0100
----------------------------------------------------------------------
component/viewer/wicket/applib/pom.xml | 2 +-
component/viewer/wicket/impl/pom.xml | 2 +-
component/viewer/wicket/model/pom.xml | 2 +-
component/viewer/wicket/pom.xml | 20 ++++++++++++--------
component/viewer/wicket/tck/pom.xml | 8 ++++++--
component/viewer/wicket/ui/pom.xml | 2 +-
6 files changed, 22 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/5a283301/component/viewer/wicket/applib/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/applib/pom.xml b/component/viewer/wicket/applib/pom.xml
index 3377218..abbaa67 100644
--- a/component/viewer/wicket/applib/pom.xml
+++ b/component/viewer/wicket/applib/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-viewer-wicket-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/5a283301/component/viewer/wicket/impl/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/pom.xml b/component/viewer/wicket/impl/pom.xml
index 1d4c073..1f4917f 100644
--- a/component/viewer/wicket/impl/pom.xml
+++ b/component/viewer/wicket/impl/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<name>Isis Wicket Viewer Implementation</name>
http://git-wip-us.apache.org/repos/asf/isis/blob/5a283301/component/viewer/wicket/model/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/pom.xml b/component/viewer/wicket/model/pom.xml
index 5203c95..0f896e3 100644
--- a/component/viewer/wicket/model/pom.xml
+++ b/component/viewer/wicket/model/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-viewer-wicket-model</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/5a283301/component/viewer/wicket/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/pom.xml b/component/viewer/wicket/pom.xml
index 318aeb6..4100b7f 100644
--- a/component/viewer/wicket/pom.xml
+++ b/component/viewer/wicket/pom.xml
@@ -30,7 +30,7 @@
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<name>Isis Wicket Viewer</name>
@@ -101,41 +101,41 @@
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-model</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-model</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-ui</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-ui</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-impl</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-impl</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -321,4 +321,8 @@
</dependencies>
</dependencyManagement>
+
+ <scm>
+ <tag>isis-viewer-wicket-1.6.0-RC3</tag>
+ </scm>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/5a283301/component/viewer/wicket/tck/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/tck/pom.xml b/component/viewer/wicket/tck/pom.xml
index bf4b3f2..3f58e01 100644
--- a/component/viewer/wicket/tck/pom.xml
+++ b/component/viewer/wicket/tck/pom.xml
@@ -29,13 +29,13 @@
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-tck</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<name>Isis Wicket Viewer TCK tests</name>
<properties>
- <isis-viewer-wicket.version>1.6.0-SNAPSHOT</isis-viewer-wicket.version>
+ <isis-viewer-wicket.version>1.6.0</isis-viewer-wicket.version>
<siteBaseDir>..</siteBaseDir>
<relativeUrl>wicket-tck/</relativeUrl>
<!-- until someone comes up with a better solution -->
@@ -114,4 +114,8 @@
</dependency>
</dependencies>
+
+ <scm>
+ <tag>isis-viewer-wicket-1.6.0-RC3</tag>
+ </scm>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/5a283301/component/viewer/wicket/ui/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/pom.xml b/component/viewer/wicket/ui/pom.xml
index b0d5c01..2e96c9c 100644
--- a/component/viewer/wicket/ui/pom.xml
+++ b/component/viewer/wicket/ui/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-viewer-wicket-ui</artifactId>
[10/39] ISIS-833: reverting isis-module-wrapper -> isis-core-wrapper.
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
new file mode 100644
index 0000000..a3609b8
--- /dev/null
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject.java
@@ -0,0 +1,376 @@
+/*
+ * 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.progmodel.wrapper;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+import java.lang.reflect.Method;
+import java.util.Collections;
+
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import org.apache.isis.applib.services.wrapper.DisabledException;
+import org.apache.isis.applib.services.wrapper.HiddenException;
+import org.apache.isis.applib.services.wrapper.InvalidException;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.adapter.ResolveState;
+import org.apache.isis.core.metamodel.adapter.ServicesProvider;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
+import org.apache.isis.core.metamodel.facetapi.FacetUtil;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
+import org.apache.isis.core.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
+import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationImpl;
+import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
+import org.apache.isis.core.metamodel.facets.members.disabled.method.DisableForContextFacetViaMethod;
+import org.apache.isis.core.metamodel.facets.members.hidden.method.HideForContextFacetViaMethod;
+import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
+import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaClearMethod;
+import org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod;
+import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaModifyMethod;
+import org.apache.isis.core.metamodel.facets.properties.validating.method.PropertyValidateFacetViaMethod;
+import org.apache.isis.core.runtime.authentication.standard.SimpleSession;
+import org.apache.isis.core.tck.dom.claimapp.employees.Employee;
+import org.apache.isis.core.tck.dom.claimapp.employees.EmployeeRepository;
+import org.apache.isis.core.tck.dom.claimapp.employees.EmployeeRepositoryImpl;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
+
+public abstract class WrapperFactoryAbstractTest_wrappedObject {
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Mock
+ private AdapterManager mockAdapterManager;
+ @Mock
+ private AuthenticationSessionProvider mockAuthenticationSessionProvider;
+ @Mock
+ private ObjectPersistor mockObjectPersistor;
+ @Mock
+ private QuerySubmitter mockQuerySubmitter;
+ @Mock
+ private ServicesProvider mockServicesProvider;
+ @Mock
+ private SpecificationLoader mockSpecificationLookup;
+
+ private ObjectMemberContext objectMemberContext;
+
+ @Mock
+ private ObjectSpecificationDefault mockEmployeeSpec;
+ private ObjectMember employeeNameMember;
+
+ @Mock
+ private ObjectSpecificationDefault mockStringSpec;
+
+ @Mock
+ private ObjectAdapter mockEmployeeAdapter;
+
+ @Mock
+ private ObjectAdapter mockAdapterForStringSmith;
+ @Mock
+ private ObjectAdapter mockAdapterForStringJones;
+
+ private final SimpleSession session = new SimpleSession("tester", Collections.<String>emptyList());
+
+ private EmployeeRepository employeeRepository;
+
+ private Employee employeeDO;
+ private Employee employeeWO;
+
+ private WrapperFactoryAbstract wrapperFactory;
+
+
+ @Before
+ public void setUp() {
+
+ objectMemberContext = new ObjectMemberContext(DeploymentCategory.PRODUCTION, mockAuthenticationSessionProvider, mockSpecificationLookup, mockAdapterManager, mockQuerySubmitter, new CollectionTypeRegistryDefault(), mockServicesProvider);
+
+ employeeRepository = new EmployeeRepositoryImpl();
+
+ employeeDO = new Employee();
+ employeeDO.setName("Smith");
+ employeeDO.setEmployeeRepository(employeeRepository);
+
+ wrapperFactory = createWrapperFactory();
+ wrapperFactory.setAdapterManager(mockAdapterManager);
+ wrapperFactory.setAuthenticationSessionProvider(mockAuthenticationSessionProvider);
+ wrapperFactory.setObjectPersistor(mockObjectPersistor);
+ wrapperFactory.setSpecificationLookup(mockSpecificationLookup);
+
+ context.checking(new Expectations() {
+ {
+ allowing(mockSpecificationLookup).loadSpecification(String.class);
+ will(returnValue(mockStringSpec));
+
+ allowing(mockStringSpec).getShortIdentifier();
+ will(returnValue(String.class.getName()));
+ }
+ });
+
+
+ final Method employeeGetNameMethod = methodOf(Employee.class, "getName");
+ final Method employeeSetNameMethod = methodOf(Employee.class, "setName", String.class);
+ final Method employeeModifyNameMethod = methodOf(Employee.class, "modifyName", String.class);
+ final Method employeeHideNameMethod = methodOf(Employee.class, "hideName");
+ final Method employeeDisableNameMethod = methodOf(Employee.class, "disableName");
+ final Method employeeValidateNameMethod = methodOf(Employee.class, "validateName", String.class);
+ final Method employeeClearNameMethod = methodOf(Employee.class, "clearName");
+ employeeNameMember = new OneToOneAssociationImpl(
+ facetedMethodForProperty(
+ employeeSetNameMethod, employeeGetNameMethod, employeeModifyNameMethod, employeeClearNameMethod, employeeHideNameMethod, employeeDisableNameMethod, employeeValidateNameMethod), objectMemberContext);
+
+ context.checking(new Expectations() {
+ {
+ allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
+ will(returnValue(session));
+
+ allowing(mockAdapterManager).getAdapterFor(employeeDO);
+ will(returnValue(mockEmployeeAdapter));
+
+ allowing(mockEmployeeAdapter).getSpecification();
+ will(returnValue(mockEmployeeSpec));
+
+ allowing(mockSpecificationLookup).loadSpecification(Employee.class);
+ will(returnValue(mockEmployeeSpec));
+
+ allowing(mockEmployeeSpec).getMember(methodOf(Employee.class, "getEmployeeRepository"));
+ will(returnValue(null));
+
+ allowing(mockEmployeeSpec).getMember(employeeGetNameMethod);
+ will(returnValue(employeeNameMember));
+
+ allowing(mockEmployeeSpec).getMember(employeeSetNameMethod);
+ will(returnValue(employeeNameMember));
+
+ allowing(mockEmployeeSpec).getMember(employeeModifyNameMethod);
+ will(returnValue(employeeNameMember));
+
+ allowing(mockEmployeeSpec).getMember(employeeClearNameMethod);
+ will(returnValue(employeeNameMember));
+
+ allowing(mockEmployeeAdapter).getObject();
+ will(returnValue(employeeDO));
+
+ allowing(mockEmployeeAdapter).representsPersistent();
+ will(returnValue(true));
+ }
+ });
+
+
+ employeeWO = wrapperFactory.wrap(employeeDO);
+ }
+
+ /**
+ * Mandatory hook.
+ */
+ protected abstract WrapperFactoryAbstract createWrapperFactory();
+
+ @Test
+ public void shouldWrapDomainObject() {
+ // then
+ assertThat(employeeWO, is(notNullValue()));
+ }
+
+ @Test
+ public void shouldBeAbleToInjectIntoDomainObjects() {
+ assertThat(employeeDO.getEmployeeRepository(), is(notNullValue()));
+ }
+
+ @Test
+ public void cannotAccessMethodNotCorrespondingToMember() {
+
+ expectedException.expectMessage("Method 'getEmployeeRepository' being invoked does not correspond to any of the object's fields or actions.");
+
+ // then
+ assertThat(employeeWO.getEmployeeRepository(), is(notNullValue()));
+ }
+
+ @Test
+ public void shouldBeAbleToReadVisibleProperty() {
+
+ allowingEmployeeHasSmithAdapter();
+
+
+ // then
+ assertThat(employeeWO.getName(), is(employeeDO.getName()));
+ }
+
+ @Test
+ public void shouldNotBeAbleToViewHiddenProperty() {
+
+ expectedException.expect(HiddenException.class);
+
+ allowingEmployeeHasSmithAdapter();
+
+ // given
+ employeeDO.whetherHideName = true;
+ // when
+ employeeWO.getName();
+ // then should throw exception
+ }
+
+ @Test
+ public void shouldBeAbleToModifyEnabledPropertyUsingSetter() {
+
+ allowingJonesStringValueAdapter();
+
+ context.checking(new Expectations() {
+ {
+
+ oneOf(mockAdapterManager).adapterFor("Jones", mockEmployeeAdapter);
+ will(returnValue(mockAdapterForStringJones));
+ }
+ });
+
+ // when
+ employeeWO.setName("Jones");
+ // then
+ assertThat(employeeDO.getName(), is("Jones"));
+ assertThat(employeeWO.getName(), is(employeeDO.getName()));
+ }
+
+ @Test
+ public void shouldNotBeAbleToModifyDisabledProperty() {
+
+ expectedException.expect(DisabledException.class);
+
+ // given
+ employeeDO.reasonDisableName = "sorry, no change allowed";
+ // when
+ employeeWO.setName("Jones");
+ // then should throw exception
+ }
+
+ @Test
+ public void shouldNotBeAbleToModifyPropertyUsingModify() {
+
+ allowingJonesStringValueAdapter();
+
+ expectedException.expect(UnsupportedOperationException.class);
+
+ // when
+ employeeWO.modifyName("Jones");
+ // then should throw exception
+ }
+
+ @Test
+ public void shouldNotBeAbleToModifyPropertyUsingClear() {
+
+ expectedException.expect(UnsupportedOperationException.class);
+
+ // when
+ employeeWO.clearName();
+ // then should throw exception
+ }
+
+ @Test
+ public void shouldNotBeAbleToModifyPropertyIfInvalid() {
+
+ allowingJonesStringValueAdapter();
+
+ expectedException.expect(InvalidException.class);
+
+ // given
+ employeeDO.reasonValidateName = "sorry, invalid data";
+ // when
+ employeeWO.setName("Jones");
+ // then should throw exception
+ }
+
+
+ // //////////////////////////////////////
+
+ private static FacetedMethod facetedMethodForProperty(
+ Method init, Method accessor, Method modify, Method clear, Method hide, Method disable, Method validate) {
+ FacetedMethod facetedMethod = FacetedMethod.createForProperty(accessor.getDeclaringClass(), accessor);
+ FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(accessor, facetedMethod));
+ FacetUtil.addFacet(new PropertyInitializationFacetViaSetterMethod(init, facetedMethod));
+ FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modify, facetedMethod));
+ FacetUtil.addFacet(new PropertyClearFacetViaClearMethod(clear, facetedMethod));
+ FacetUtil.addFacet(new HideForContextFacetViaMethod(hide, facetedMethod));
+ FacetUtil.addFacet(new DisableForContextFacetViaMethod(disable, facetedMethod));
+ FacetUtil.addFacet(new PropertyValidateFacetViaMethod(validate, facetedMethod));
+ FacetUtil.addFacet(new NamedFacetInferred(accessor.getName(), facetedMethod));
+ return facetedMethod;
+ }
+
+ private static Method methodOf(Class<?> cls, String methodName) {
+ return methodOf(cls, methodName, new Class<?>[]{});
+ }
+
+ private static Method methodOf(Class<?> cls, String methodName, Class<?>... args) {
+ try {
+ return cls.getMethod(methodName, args);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ // //////////////////////////////////////
+
+ private void allowingEmployeeHasSmithAdapter() {
+ context.checking(new Expectations() {
+ {
+ allowing(mockAdapterManager).adapterFor("Smith", mockEmployeeAdapter);
+ will(returnValue(mockAdapterForStringSmith));
+
+ allowing(mockAdapterForStringSmith).getObject();
+ will(returnValue("Smith"));
+ }
+ });
+ }
+
+ private void allowingJonesStringValueAdapter() {
+ context.checking(new Expectations() {
+ {
+ allowing(mockAdapterManager).adapterFor("Jones");
+ will(returnValue(mockAdapterForStringJones));
+
+ allowing(mockAdapterForStringJones).getObject();
+ will(returnValue("Jones"));
+
+ allowing(mockAdapterForStringJones).isTransient();
+ will(returnValue(ResolveState.VALUE.isTransient()));
+ }
+ });
+ }
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
new file mode 100644
index 0000000..e9d1adb
--- /dev/null
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryAbstractTest_wrappedObject_transient.java
@@ -0,0 +1,257 @@
+/*
+ * 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.progmodel.wrapper;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.events.PropertyModifyEvent;
+import org.apache.isis.applib.events.PropertyUsabilityEvent;
+import org.apache.isis.applib.events.PropertyVisibilityEvent;
+import org.apache.isis.applib.filter.Filter;
+import org.apache.isis.applib.services.wrapper.DisabledException;
+import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.consent.Allow;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionResult;
+import org.apache.isis.core.metamodel.consent.Veto;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.SpecificationLoader;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
+import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAlwaysEverywhere;
+import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor;
+import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod;
+import org.apache.isis.core.runtime.authentication.standard.SimpleSession;
+import org.apache.isis.core.tck.dom.claimapp.employees.Employee;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
+
+/**
+ * Contract test.
+ */
+public abstract class WrapperFactoryAbstractTest_wrappedObject_transient {
+
+ @Rule
+ public final JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+ @Mock
+ private AdapterManager mockAdapterManager;
+ @Mock
+ private AuthenticationSessionProvider mockAuthenticationSessionProvider;
+ @Mock
+ private ObjectPersistor mockObjectPersistor;
+ @Mock
+ private SpecificationLoader mockSpecificationLookup;
+
+ private Employee employeeDO;
+ @Mock
+ private ObjectAdapter mockEmployeeAdapter;
+ @Mock
+ private ObjectSpecificationDefault mockEmployeeSpec;
+ @Mock
+ private OneToOneAssociation mockPasswordMember;
+ @Mock
+ private Identifier mockPasswordIdentifier;
+
+ @Mock
+ protected ObjectAdapter mockPasswordAdapter;
+
+ private final String passwordValue = "12345678";
+
+ private final SimpleSession session = new SimpleSession("tester", Collections.<String>emptyList());
+
+ private List<Facet> facets;
+ private Method getPasswordMethod;
+ private Method setPasswordMethod;
+
+ private WrapperFactoryAbstract wrapperFactory;
+ private Employee employeeWO;
+
+
+ @Before
+ public void setUp() throws Exception {
+
+ employeeDO = new Employee();
+ employeeDO.setName("Smith");
+
+ getPasswordMethod = Employee.class.getMethod("getPassword");
+ setPasswordMethod = Employee.class.getMethod("setPassword", String.class);
+
+ wrapperFactory = createWrapperFactory();
+ wrapperFactory.setAdapterManager(mockAdapterManager);
+ wrapperFactory.setAuthenticationSessionProvider(mockAuthenticationSessionProvider);
+ wrapperFactory.setObjectPersistor(mockObjectPersistor);
+ wrapperFactory.setSpecificationLookup(mockSpecificationLookup);
+
+ context.checking(new Expectations() {
+ {
+ allowing(mockAdapterManager).getAdapterFor(employeeDO);
+ will(returnValue(mockEmployeeAdapter));
+
+ allowing(mockAdapterManager).adapterFor(passwordValue);
+ will(returnValue(mockPasswordAdapter));
+
+ allowing(mockEmployeeAdapter).getSpecification();
+ will(returnValue(mockEmployeeSpec));
+
+ allowing(mockEmployeeAdapter).getObject();
+ will(returnValue(employeeDO));
+
+ allowing(mockPasswordAdapter).getObject();
+ will(returnValue(passwordValue));
+
+ allowing(mockPasswordMember).getIdentifier();
+ will(returnValue(mockPasswordIdentifier));
+
+ allowing(mockSpecificationLookup).loadSpecification(Employee.class);
+ will(returnValue(mockEmployeeSpec));
+
+ allowing(mockEmployeeSpec).getMember(with(setPasswordMethod));
+ will(returnValue(mockPasswordMember));
+
+ allowing(mockEmployeeSpec).getMember(with(getPasswordMethod));
+ will(returnValue(mockPasswordMember));
+
+ allowing(mockPasswordMember).getName();
+ will(returnValue("password"));
+
+ allowing(mockAuthenticationSessionProvider).getAuthenticationSession();
+ will(returnValue(session));
+
+ allowing(mockPasswordMember).isOneToOneAssociation();
+ will(returnValue(true));
+
+ allowing(mockPasswordMember).isOneToManyAssociation();
+ will(returnValue(false));
+ }
+ });
+
+ employeeWO = wrapperFactory.wrap(employeeDO);
+ }
+
+ /**
+ * Mandatory hook.
+ */
+ protected abstract WrapperFactoryAbstract createWrapperFactory();
+
+ @Test(expected = DisabledException.class)
+ public void shouldNotBeAbleToModifyProperty() {
+
+ // given
+ final DisabledFacet disabledFacet = new DisabledFacetAlwaysEverywhere(mockPasswordMember);
+ facets = Arrays.asList((Facet)disabledFacet, new PropertySetterFacetViaSetterMethod(setPasswordMethod, mockPasswordMember));
+
+ final Consent visibilityConsent = new Allow(new InteractionResult(new PropertyVisibilityEvent(employeeDO, null)));
+
+ final InteractionResult usabilityInteractionResult = new InteractionResult(new PropertyUsabilityEvent(employeeDO, null));
+ usabilityInteractionResult.advise("disabled", disabledFacet);
+ final Consent usabilityConsent = new Veto(usabilityInteractionResult);
+
+ context.checking(new Expectations() {
+ {
+ allowing(mockPasswordMember).getFacets(with(any(Filter.class)));
+ will(returnValue(facets));
+
+ allowing(mockPasswordMember).isVisible(session, mockEmployeeAdapter, Where.ANYWHERE);
+ will(returnValue(visibilityConsent));
+
+ allowing(mockPasswordMember).isUsable(session, mockEmployeeAdapter, Where.ANYWHERE);
+ will(returnValue(usabilityConsent));
+ }
+ });
+
+ // when
+ employeeWO.setPassword(passwordValue);
+
+ // then should throw exception
+ }
+
+ @Ignore("TODO - reinstate or replace with integration tests")
+ @Test
+ public void canModifyProperty() {
+ // given
+
+ final Consent visibilityConsent = new Allow(new InteractionResult(new PropertyVisibilityEvent(employeeDO, mockPasswordIdentifier)));
+ final Consent usabilityConsent = new Allow(new InteractionResult(new PropertyUsabilityEvent(employeeDO, mockPasswordIdentifier)));
+ final Consent validityConsent = new Allow(new InteractionResult(new PropertyModifyEvent(employeeDO, mockPasswordIdentifier, passwordValue)));
+
+ context.checking(new Expectations() {
+ {
+ allowing(mockPasswordMember).isVisible(session, mockEmployeeAdapter, Where.ANYWHERE);
+ will(returnValue(visibilityConsent));
+
+ allowing(mockPasswordMember).isUsable(session, mockEmployeeAdapter, Where.ANYWHERE);
+ will(returnValue(usabilityConsent));
+
+ allowing(mockPasswordMember).isAssociationValid(mockEmployeeAdapter, mockPasswordAdapter);
+ will(returnValue(validityConsent));
+ }
+ });
+
+ facets = Arrays.asList((Facet)new PropertySetterFacetViaSetterMethod(setPasswordMethod, mockPasswordMember));
+ context.checking(new Expectations() {
+ {
+ allowing(mockPasswordMember).getFacets(with(any(Filter.class)));
+ will(returnValue(facets));
+
+ oneOf(mockPasswordMember).set(mockEmployeeAdapter, mockPasswordAdapter);
+ }
+ });
+
+ // when
+ employeeWO.setPassword(passwordValue);
+
+
+ // and given
+ facets = Arrays.asList((Facet)new PropertyAccessorFacetViaAccessor(getPasswordMethod, mockPasswordMember));
+ context.checking(new Expectations() {
+ {
+ allowing(mockPasswordMember).getFacets(with(any(Filter.class)));
+ will(returnValue(facets));
+
+ oneOf(mockPasswordMember).get(mockEmployeeAdapter);
+ will(returnValue(mockPasswordAdapter));
+ }
+ });
+
+ // then be allowed
+ assertThat(employeeWO.getPassword(), is(passwordValue));
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject.java
new file mode 100644
index 0000000..b867968
--- /dev/null
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject.java
@@ -0,0 +1,32 @@
+/*
+ * 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.progmodel.wrapper;
+
+import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
+import org.apache.isis.core.wrapper.WrapperFactoryCglib;
+
+public class WrapperFactoryCglibTest_wrappedObject extends WrapperFactoryAbstractTest_wrappedObject {
+
+ @Override
+ protected WrapperFactoryAbstract createWrapperFactory() {
+ return new WrapperFactoryCglib();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject_transient.java
new file mode 100644
index 0000000..05dfdec
--- /dev/null
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryCglibTest_wrappedObject_transient.java
@@ -0,0 +1,34 @@
+/*
+ * 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.progmodel.wrapper;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
+import org.apache.isis.core.wrapper.WrapperFactoryCglib;
+
+public class WrapperFactoryCglibTest_wrappedObject_transient extends WrapperFactoryAbstractTest_wrappedObject_transient {
+
+ @Override
+ protected WrapperFactoryAbstract createWrapperFactory() {
+ return new WrapperFactoryCglib();
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject.java
new file mode 100644
index 0000000..b7ce494
--- /dev/null
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject.java
@@ -0,0 +1,32 @@
+/*
+ * 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.progmodel.wrapper;
+
+import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
+import org.apache.isis.core.wrapper.WrapperFactoryJavassist;
+
+public class WrapperFactoryJavassistTest_wrappedObject extends WrapperFactoryAbstractTest_wrappedObject {
+
+ @Override
+ protected WrapperFactoryAbstract createWrapperFactory() {
+ return new WrapperFactoryJavassist();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject_transient.java
new file mode 100644
index 0000000..c613348
--- /dev/null
+++ b/core/wrapper/src/test/java/org/apache/isis/progmodel/wrapper/WrapperFactoryJavassistTest_wrappedObject_transient.java
@@ -0,0 +1,31 @@
+/*
+ * 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.progmodel.wrapper;
+
+import org.apache.isis.core.wrapper.WrapperFactoryAbstract;
+import org.apache.isis.core.wrapper.WrapperFactoryJavassist;
+
+public class WrapperFactoryJavassistTest_wrappedObject_transient extends WrapperFactoryAbstractTest_wrappedObject_transient {
+
+ @Override
+ protected WrapperFactoryAbstract createWrapperFactory() {
+ return new WrapperFactoryJavassist();
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/example/application/simpleapp/integtests/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/integtests/pom.xml b/example/application/simpleapp/integtests/pom.xml
index 4ca6936..d5d4978 100644
--- a/example/application/simpleapp/integtests/pom.xml
+++ b/example/application/simpleapp/integtests/pom.xml
@@ -108,8 +108,8 @@
</dependency>
<dependency>
- <groupId>org.apache.isis.module</groupId>
- <artifactId>isis-module-wrapper</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/example/application/simpleapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/pom.xml b/example/application/simpleapp/webapp/pom.xml
index 7ec84d5..22c8442 100644
--- a/example/application/simpleapp/webapp/pom.xml
+++ b/example/application/simpleapp/webapp/pom.xml
@@ -185,8 +185,8 @@
<artifactId>isis-core-runtime</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.module</groupId>
- <artifactId>isis-module-wrapper</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/example/application/todoapp/integtests/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/integtests/pom.xml b/example/application/todoapp/integtests/pom.xml
index 909d022..fd2284b 100644
--- a/example/application/todoapp/integtests/pom.xml
+++ b/example/application/todoapp/integtests/pom.xml
@@ -108,8 +108,8 @@
</dependency>
<dependency>
- <groupId>org.apache.isis.module</groupId>
- <artifactId>isis-module-wrapper</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/example/application/todoapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/pom.xml b/example/application/todoapp/webapp/pom.xml
index b217a23..1230973 100644
--- a/example/application/todoapp/webapp/pom.xml
+++ b/example/application/todoapp/webapp/pom.xml
@@ -185,8 +185,8 @@
<artifactId>isis-core-runtime</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.module</groupId>
- <artifactId>isis-module-wrapper</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
[18/39] git commit: ISIS-839: reinstating some material that was
pruned from the about/index.html
Posted by da...@apache.org.
ISIS-839: reinstating some material that was pruned from the about/index.html
... specifically the links to navigate to the app itself (!).
Also using HTML encoded chars to avoid accidental replacement when archetype is created from this project.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/24aeeba4
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/24aeeba4
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/24aeeba4
Branch: refs/heads/master
Commit: 24aeeba4ef29a1b72633e53f3ba796b611593547
Parents: a2c8b57
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 08:25:46 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 18:21:39 2014 +0100
----------------------------------------------------------------------
.../src/main/resources/webapp/welcome.html | 6 +-
.../webapp/src/main/webapp/about/index.html | 41 ++++++++---
.../src/main/resources/webapp/welcome.html | 4 +-
.../webapp/src/main/webapp/about/index.html | 76 +++++++++++++-------
4 files changed, 87 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/24aeeba4/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html b/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html
index fdfd6dd..49cfbcd 100644
--- a/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html
+++ b/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html
@@ -23,12 +23,12 @@
<br/>
<br/>
This app has been generated using Isis'
- <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype,
+ <a href="http://isis.apache.org/intro/getting-started/simple%61pp-archetype.html" target="_blank">SimpleApp</a> archetype,
which configures Isis' most commonly used components as part of a very simple and purposefully minimal application.
<br/>
<br/>
- The app itself consists of a single domain class, <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank">SimpleObject</a>,
- along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank">SimpleObjects</a>.
+ The app itself consists of a single domain class, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank">SimpleObject</a>,
+ along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank">SimpleObjects</a>.
<br/>
<br/>
For more details, see the <a href="http://isis.apache.org/documentation.html" target="_blank">Isis website</a>.
http://git-wip-us.apache.org/repos/asf/isis/blob/24aeeba4/example/application/simpleapp/webapp/src/main/webapp/about/index.html
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/about/index.html b/example/application/simpleapp/webapp/src/main/webapp/about/index.html
index 3b9ef8f..8d32f47 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/about/index.html
+++ b/example/application/simpleapp/webapp/src/main/webapp/about/index.html
@@ -59,23 +59,44 @@ th, td {
<p>
<a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a framework to let you rapidly develop
domain-driven apps in Java. This app has been generated using Isis'
- <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype,
+ <a href="http://isis.apache.org/intro/getting-started/simple%61pp-archetype.html" target="_blank">SimpleApp</a> archetype,
which configures Isis to run a very simple and purposefully minimal application.
<p>
The app itself consists of a single domain class,
- <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank"><tt>SimpleObject</tt></a>,
- along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank"><tt>SimpleObjects</tt></a>.
+ <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank"><tt>SimpleObject</tt></a>,
+ along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank"><tt>SimpleObjects</tt></a>.
</p>
-
- <p>
- Alternatively, if you'd like to start from a richer starting point, you might want to use the
- <a href="http://isis.apache.org/intro/getting-started/todoapp-archetype.html" target="_blank">TodoApp</a> archetype.
- </p>
-
+
+ <p>To access the app:</p>
+ <ul>
+ <li>
+ <p>
+ <b><a href="wicket/">wicket/</a></b>
+ </p>
+ <p>
+ provides accesses to a generic UI for end-users,
+ Isis' <a href="http://isis.apache.org/components/viewers/wicket/about.html" target="_blank">Wicket Viewer</a>.
+ As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>™.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>
+ <a href="restful/">restful/</a>
+ </b>
+ </p>
+ <p>
+ provides access to a RESTful API conformant with the
+ <a href="http://restfulobjects.org">Restful Objects</a> spec</td>. This is part of Isis Core. The
+ implementation technology is JBoss RestEasy.
+ </p>
+ </li>
+ </ul>
+
<p>
The default user/password is <b><i>sven/pass</i></b> (as configured in the
- <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
+ <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
</p>
</div>
http://git-wip-us.apache.org/repos/asf/isis/blob/24aeeba4/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html b/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html
index 1dbee0b..97b389c 100644
--- a/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html
+++ b/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html
@@ -23,12 +23,12 @@
<br/>
<br/>
This app has been generated using Isis'
- <a href="http://isis.apache.org/intro/getting-started/todoapp-archetype.html" target="_blank">TodoApp</a> archetype,
+ <a href="http://isis.apache.org/intro/getting-started/todo%61pp-archetype.html" target="_blank">TodoApp</a> archetype,
which configures Isis' most commonly used components in a straightforward "todo" app.
<br/>
<br/>
The core functionality of the app is provided by the
- <a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank">ToDoItem</a> domain class.
+ <a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank">ToDoItem</a> domain class.
Supporting services provide additional capabilities.
<br/>
<br/>
http://git-wip-us.apache.org/repos/asf/isis/blob/24aeeba4/example/application/todoapp/webapp/src/main/webapp/about/index.html
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/webapp/about/index.html b/example/application/todoapp/webapp/src/main/webapp/about/index.html
index f248f38..a4bb026 100644
--- a/example/application/todoapp/webapp/src/main/webapp/about/index.html
+++ b/example/application/todoapp/webapp/src/main/webapp/about/index.html
@@ -59,62 +59,88 @@ th, td {
<p>
<a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a framework to let you rapidly develop
domain-driven apps in Java. This app has been generated using Isis'
- <a href="http://isis.apache.org/intro/getting-started/todoapp-archetype.html" target="_blank">TodoApp</a> archetype,
+ <a href="http://isis.apache.org/intro/getting-started/todo%61pp-archetype.html" target="_blank">TodoApp</a> archetype,
which configures Isis to run a (quite feature rich) "todo" app.
<p>
The app itself consists of a single domain class, <tt>ToDoItem</tt>, along with a number of supporting
services.
</p>
-
+
+ <p>To access the app:</p>
+ <ul>
+ <li>
+ <p>
+ <b><a href="wicket/">wicket/</a></b>
+ </p>
+ <p>
+ provides accesses to a generic UI for end-users,
+ Isis' <a href="http://isis.apache.org/components/viewers/wicket/about.html" target="_blank">Wicket Viewer</a>.
+ As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>™.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>
+ <a href="restful/">restful/</a>
+ </b>
+ </p>
+ <p>
+ provides access to a RESTful API conformant with the
+ <a href="http://restfulobjects.org">Restful Objects</a> spec</td>. This is part of Isis Core. The
+ implementation technology is JBoss RestEasy.
+ </p>
+ </li>
+ </ul>
+
<p>
- To build your own app, while you could start with this todo app and remove/rename as required, you are
- probably better off using the extremely minimal
- <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype.
+ The default user/password is <b><i>sven/pass</i></b> (as configured in the
+ <a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
</p>
<p>
- The default user/password is <b><i>sven/pass</i></b> (as configured in the
- <a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
+ To build your own app, while you could start with this todo app and remove/rename as required, you are
+ probably better off using the extremely minimal
+ <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype.
</p>
-
- <h2>App contents</h2>
+
+ <h2>App contents</h2>
<p>The key files in this "todo" app are:</p>
<!-- the hrefs below are partially URL encoded to prevent them from being modified when the archetype is created -->
<ul>
<li>Domain classes (todo functionality) (in <tt>dom</tt> module)
<ul>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank"><tt>ToDoItem</tt></a> domain entity
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank"><tt>ToDoItem</tt></a> domain entity
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java" target="_blank"><tt>ToDoItems</tt></a> domain service (repository/factory)
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/dom/todo/ToDoItems.java" target="_blank"><tt>ToDoItems</tt></a> domain service (repository/factory)
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/app/ToDoItemAnalysis.java" target="_blank"><tt>ToDoItemAnalysis</tt></a> application service analysing todo items
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/app/ToDoItemAnalysis.java" target="_blank"><tt>ToDoItemAnalysis</tt></a> application service analysing todo items
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/app/ToDoAppDashboard.java" target="_blank"><tt>ToDoAppDashboard</tt></a> dashboard application service
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/app/ToDoAppDashboard.java" target="_blank"><tt>ToDoAppDashboard</tt></a> dashboard application service
</li>
</ul>
</li>
<li>Fixture scripts (in <tt>fixture</tt> module)
<ul>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java" target="_blank"><tt>ToDoItemsFixtureService</tt></a> domain service to install fixtures at run-time
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java" target="_blank"><tt>ToDoItemsFixtureService</tt></a> domain service to install fixtures at run-time
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml" target="_blank">WEB-INF/web.xml</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml" target="_blank">WEB-INF/web.xml</a></tt> (in <tt>webapp</tt> module)
<ul>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L98" target="_blank">ResourceCachingFilter</a></tt> and <tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L134" target="_blank">ResourceServlet</a></tt> - filter and servlet for serving up static resources.
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L98" target="_blank">ResourceCachingFilter</a></tt> and <tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L134" target="_blank">ResourceServlet</a></tt> - filter and servlet for serving up static resources.
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L174" target="_blank">WicketFilter</a></tt> - filter for the wicket application, mapped to <tt>/wicket/*</tt>
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L174" target="_blank">WicketFilter</a></tt> - filter for the wicket application, mapped to <tt>/wicket/*</tt>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L223" target="_blank">ResteasyBootstrap</a></tt>,
- <tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L240" target="_blank">IsisSessionFilterForRestfulObjects</a></tt>,
- <tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L271" target="_blank">RestfulObjectsRestEasyDispatcher</a></tt> - listeners, filters and servlets to bootstrap and map restful objects viewer to <tt>/restful/*</tt>.
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L223" target="_blank">ResteasyBootstrap</a></tt>,
+ <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L240" target="_blank">IsisSessionFilterForRestfulObjects</a></tt>,
+ <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L271" target="_blank">RestfulObjectsRestEasyDispatcher</a></tt> - listeners, filters and servlets to bootstrap and map restful objects viewer to <tt>/restful/*</tt>.
</li>
- <li>commented out <tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L208" target="_blank">IsisWebAppBootstrapper</a></tt> listener; this is NOT required unless wicket viewer config is removed
+ <li>commented out <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L208" target="_blank">IsisWebAppBootstrapper</a></tt> listener; this is NOT required unless wicket viewer config is removed
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties" target="_blank">WEB-INF/isis.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/isis.properties" target="_blank">WEB-INF/isis.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li><tt>isis.services</tt> - specifies the two domain services described above (<tt>ToDoItems</tt> and <tt>ToDoItemsFixtureService</tt>), appearing on the menu bar in the Wicket viewer,
along with a number of hidden framework-provided domain services demonstrating Isis' support for publishing, auditing and customizable error handling
@@ -125,19 +151,19 @@ th, td {
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties" target="_blank">WEB-INF/persistor_datanucleus.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties" target="_blank">WEB-INF/persistor_datanucleus.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>configuration for JDO object store
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/persistor.properties" target="_blank">WEB-INF/persistor.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/persistor.properties" target="_blank">WEB-INF/persistor.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>JDBC URL for JDO object store
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">WEB-INF/shiro.ini</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">WEB-INF/shiro.ini</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>configuration for Shiro security
</li>
[17/39] git commit: ISIS-839: adding IntelliJ launch configurations
to example apps
Posted by da...@apache.org.
ISIS-839: adding IntelliJ launch configurations to example apps
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/a2c8b574
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/a2c8b574
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/a2c8b574
Branch: refs/heads/master
Commit: a2c8b574df9fc61c580d83f3f53bcc9c4ebcae66
Parents: 3fca999
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Jul 23 22:50:48 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 18:20:21 2014 +0100
----------------------------------------------------------------------
.../webapp/ide/intellij/launch/README.txt | 2 ++
.../ide/intellij/launch/SimpleApp_PROTOTYPE.xml | 29 ++++++++++++++++++++
.../launch/SimpleApp__enhance_only_.xml | 23 ++++++++++++++++
.../webapp/ide/intellij/launch/README.txt | 3 ++
.../ide/intellij/launch/TodoApp_PROTOTYPE.xml | 29 ++++++++++++++++++++
.../intellij/launch/TodoApp__enhance_only_.xml | 23 ++++++++++++++++
6 files changed, 109 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/a2c8b574/example/application/simpleapp/webapp/ide/intellij/launch/README.txt
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/ide/intellij/launch/README.txt b/example/application/simpleapp/webapp/ide/intellij/launch/README.txt
new file mode 100644
index 0000000..5f8e5ab
--- /dev/null
+++ b/example/application/simpleapp/webapp/ide/intellij/launch/README.txt
@@ -0,0 +1,2 @@
+Copy into workspace\.idea\runConfigurations directory, and adjust file paths for Maven tasks.
+
http://git-wip-us.apache.org/repos/asf/isis/blob/a2c8b574/example/application/simpleapp/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml b/example/application/simpleapp/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml
new file mode 100644
index 0000000..4d77092
--- /dev/null
+++ b/example/application/simpleapp/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml
@@ -0,0 +1,29 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="SimpleApp-PROTOTYPE" type="Application" factoryName="Application" singleton="true">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <option name="MAIN_CLASS_NAME" value="org.apache.isis.WebServer" />
+ <option name="VM_PARAMETERS" value="" />
+ <option name="PROGRAM_PARAMETERS" value="--type SERVER_PROTOTYPE --port 8080" />
+ <option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="simpleapp-webapp" />
+ <envs />
+ <RunnerSettings RunnerId="Debug">
+ <option name="DEBUG_PORT" value="" />
+ <option name="TRANSPORT" value="0" />
+ <option name="LOCAL" value="true" />
+ </RunnerSettings>
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Debug" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method>
+ <option name="Make" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/core/pom.xml" goal="-f pom-jdo-enhance-all.xml datanucleus:enhance -o" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/simpleapp/dom/pom.xml" goal="datanucleus:enhance -o" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/a2c8b574/example/application/simpleapp/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml b/example/application/simpleapp/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml
new file mode 100644
index 0000000..daa30cf
--- /dev/null
+++ b/example/application/simpleapp/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml
@@ -0,0 +1,23 @@
+<component name="ProjectRunConfigurationManager">
+s <configuration default="false" name="SimpleApp (enhance only)" type="Application" factoryName="Application">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <option name="MAIN_CLASS_NAME" value="org.apache.isis.Dummy" />
+ <option name="VM_PARAMETERS" value="" />
+ <option name="PROGRAM_PARAMETERS" value="" />
+ <option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="simpleapp-webapp" />
+ <envs />
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method>
+ <option name="Make" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/core/pom.xml" goal="-f pom-jdo-enhance-all.xml datanucleus:enhance -o" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/simpleapp/dom/pom.xml" goal="datanucleus:enhance -o" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/a2c8b574/example/application/todoapp/webapp/ide/intellij/launch/README.txt
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/ide/intellij/launch/README.txt b/example/application/todoapp/webapp/ide/intellij/launch/README.txt
new file mode 100644
index 0000000..16391ab
--- /dev/null
+++ b/example/application/todoapp/webapp/ide/intellij/launch/README.txt
@@ -0,0 +1,3 @@
+Copy into workspace\.idea\runConfigurations directory, and adjust file paths for Maven tasks.
+
+
http://git-wip-us.apache.org/repos/asf/isis/blob/a2c8b574/example/application/todoapp/webapp/ide/intellij/launch/TodoApp_PROTOTYPE.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/ide/intellij/launch/TodoApp_PROTOTYPE.xml b/example/application/todoapp/webapp/ide/intellij/launch/TodoApp_PROTOTYPE.xml
new file mode 100644
index 0000000..d6d7e5f
--- /dev/null
+++ b/example/application/todoapp/webapp/ide/intellij/launch/TodoApp_PROTOTYPE.xml
@@ -0,0 +1,29 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="TodoApp-PROTOTYPE" type="Application" factoryName="Application" singleton="true">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <option name="MAIN_CLASS_NAME" value="org.apache.isis.WebServer" />
+ <option name="VM_PARAMETERS" value="" />
+ <option name="PROGRAM_PARAMETERS" value="--type SERVER_PROTOTYPE --port 8080" />
+ <option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="todoapp-webapp" />
+ <envs />
+ <RunnerSettings RunnerId="Debug">
+ <option name="DEBUG_PORT" value="" />
+ <option name="TRANSPORT" value="0" />
+ <option name="LOCAL" value="true" />
+ </RunnerSettings>
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Debug" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method>
+ <option name="Make" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/core/pom.xml" goal="-f pom-jdo-enhance-all.xml datanucleus:enhance -o" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/todoapp/dom/pom.xml" goal="datanucleus:enhance -o" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/a2c8b574/example/application/todoapp/webapp/ide/intellij/launch/TodoApp__enhance_only_.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/ide/intellij/launch/TodoApp__enhance_only_.xml b/example/application/todoapp/webapp/ide/intellij/launch/TodoApp__enhance_only_.xml
new file mode 100644
index 0000000..e74845c
--- /dev/null
+++ b/example/application/todoapp/webapp/ide/intellij/launch/TodoApp__enhance_only_.xml
@@ -0,0 +1,23 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="TodoApp (enhance only)" type="Application" factoryName="Application">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <option name="MAIN_CLASS_NAME" value="org.apache.isis.Dummy" />
+ <option name="VM_PARAMETERS" value="" />
+ <option name="PROGRAM_PARAMETERS" value="" />
+ <option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="todoapp-webapp" />
+ <envs />
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method>
+ <option name="Make" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/core/pom.xml" goal="-f pom-jdo-enhance-all.xml datanucleus:enhance -o" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/todoapp/dom/pom.xml" goal="datanucleus:enhance -o" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
[08/39] git commit: ISIS-839: updating simpleapp order of
@DomainService's
Posted by da...@apache.org.
ISIS-839: updating simpleapp order of @DomainService's
so that "Simple Objects" comes before "Prototyping" in menu.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/98071b9e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/98071b9e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/98071b9e
Branch: refs/heads/master
Commit: 98071b9e03aae2b27ed7a2cedd2f89808e05e16a
Parents: eb75a8c
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 21 11:34:06 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 21 12:34:49 2014 +0100
----------------------------------------------------------------------
.../simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java | 2 +-
.../src/main/java/fixture/simple/SimpleObjectsFixturesService.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/98071b9e/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java b/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java
index 0df6bd2..f7e9038 100644
--- a/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java
+++ b/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java
@@ -23,7 +23,7 @@ import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
-@DomainService(menuOrder = "2", repositoryFor = SimpleObject.class)
+@DomainService(menuOrder = "10", repositoryFor = SimpleObject.class)
public class SimpleObjects {
//region > identification in the UI
http://git-wip-us.apache.org/repos/asf/isis/blob/98071b9e/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java b/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
index 12a9e2b..fcb6c49 100644
--- a/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
+++ b/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
@@ -32,7 +32,7 @@ import org.apache.isis.applib.fixturescripts.SimpleFixtureScript;
* Enables fixtures to be installed from the application.
*/
@Named("Prototyping")
-@DomainService(menuOrder = "1")
+@DomainService(menuOrder = "20")
public class SimpleObjectsFixturesService extends FixtureScripts {
public SimpleObjectsFixturesService() {
[20/39] git commit: [maven-release-plugin] prepare release
isis-1.6.0-RC3
Posted by da...@apache.org.
[maven-release-plugin] prepare release isis-1.6.0-RC3
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/59f9b00e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/59f9b00e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/59f9b00e
Branch: refs/heads/master
Commit: 59f9b00eb29e920c309ca30ddd85bd220ad68e9b
Parents: 1a459a5
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 23:47:03 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 23:47:03 2014 +0100
----------------------------------------------------------------------
core/applib/pom.xml | 2 +-
core/bytecode-cglib/pom.xml | 2 +-
core/bytecode-javassist/pom.xml | 4 +-
core/integtestsupport/pom.xml | 2 +-
core/log4j/pom.xml | 2 +-
core/metamodel/pom.xml | 2 +-
core/module-audit-jdo/pom.xml | 2 +-
core/module-background/pom.xml | 2 +-
core/module-command-jdo/pom.xml | 2 +-
core/module-devutils/applib/pom.xml | 2 +-
core/module-devutils/impl/pom.xml | 2 +-
core/module-devutils/pom.xml | 10 +-
core/module-publishing-jdo/pom.xml | 2 +-
.../module-publishingeventserializer-ro/pom.xml | 2 +-
core/module-settings/applib/pom.xml | 2 +-
core/module-settings/impl-jdo/pom.xml | 2 +-
core/module-settings/pom.xml | 10 +-
core/objectstore-inmemory/pom.xml | 2 +-
core/objectstore-jdo-datanucleus/pom.xml | 2 +-
core/objectstore-jdo-metamodel/pom.xml | 2 +-
core/pom.xml | 114 +++++++++----------
core/profilestore-inmemory/pom.xml | 2 +-
core/runtime/pom.xml | 2 +-
core/security-noop/pom.xml | 2 +-
core/security-shiro/pom.xml | 6 +-
core/specsupport/pom.xml | 2 +-
core/tck/pom.xml | 5 +-
core/tck/tck-dom/pom.xml | 2 +-
core/tck/tck-fixture/pom.xml | 2 +-
core/tck/tck-viewer-restfulobjects/pom.xml | 5 +-
core/unittestsupport/pom.xml | 2 +-
core/viewer-restfulobjects-applib/pom.xml | 2 +-
core/viewer-restfulobjects-rendering/pom.xml | 2 +-
core/viewer-restfulobjects-server/pom.xml | 2 +-
core/webserver/pom.xml | 2 +-
core/wrapper/pom.xml | 2 +-
36 files changed, 105 insertions(+), 107 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/applib/pom.xml b/core/applib/pom.xml
index e3375af..4e88b7d 100644
--- a/core/applib/pom.xml
+++ b/core/applib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/bytecode-cglib/pom.xml
----------------------------------------------------------------------
diff --git a/core/bytecode-cglib/pom.xml b/core/bytecode-cglib/pom.xml
index ec6d745..dcca1bc 100644
--- a/core/bytecode-cglib/pom.xml
+++ b/core/bytecode-cglib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-bytecode-cglib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/bytecode-javassist/pom.xml
----------------------------------------------------------------------
diff --git a/core/bytecode-javassist/pom.xml b/core/bytecode-javassist/pom.xml
index daa7306..4ed3221 100644
--- a/core/bytecode-javassist/pom.xml
+++ b/core/bytecode-javassist/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-bytecode-javassist</artifactId>
@@ -39,7 +39,7 @@
<connection>scm:svn:http://svn.apache.org/repos/asf/incubator/isis/trunk/runtimes/dflt/bytecode/javassist/</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/isis/trunk$/{relativeUrl}</developerConnection>
<url>http://svn.apache.org/repos/asf/incubator/isis/trunk/runtimes/dflt/bytecode/javassist/</url>
- <tag>HEAD</tag>
+ <tag>isis-1.6.0-RC3</tag>
</scm>
<!-- used in Site generation for relative references. -->
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/integtestsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/integtestsupport/pom.xml b/core/integtestsupport/pom.xml
index 48bc875..37f9397 100644
--- a/core/integtestsupport/pom.xml
+++ b/core/integtestsupport/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-integtestsupport</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/log4j/pom.xml
----------------------------------------------------------------------
diff --git a/core/log4j/pom.xml b/core/log4j/pom.xml
index 084ec87..d32649e 100644
--- a/core/log4j/pom.xml
+++ b/core/log4j/pom.xml
@@ -15,7 +15,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-log4j</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/metamodel/pom.xml
----------------------------------------------------------------------
diff --git a/core/metamodel/pom.xml b/core/metamodel/pom.xml
index 12f79e5..c39e090 100644
--- a/core/metamodel/pom.xml
+++ b/core/metamodel/pom.xml
@@ -15,7 +15,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-metamodel</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-audit-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-audit-jdo/pom.xml b/core/module-audit-jdo/pom.xml
index bf23a69..1c00f3a 100644
--- a/core/module-audit-jdo/pom.xml
+++ b/core/module-audit-jdo/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-background/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-background/pom.xml b/core/module-background/pom.xml
index 0a18d07..45a9d7a 100644
--- a/core/module-background/pom.xml
+++ b/core/module-background/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-command-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-command-jdo/pom.xml b/core/module-command-jdo/pom.xml
index 7fa3db8..5b86151 100644
--- a/core/module-command-jdo/pom.xml
+++ b/core/module-command-jdo/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-devutils/applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-devutils/applib/pom.xml b/core/module-devutils/applib/pom.xml
index 5df558c..825381b 100644
--- a/core/module-devutils/applib/pom.xml
+++ b/core/module-devutils/applib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-module-devutils-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-devutils/impl/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-devutils/impl/pom.xml b/core/module-devutils/impl/pom.xml
index da20f0f..badf0e9 100644
--- a/core/module-devutils/impl/pom.xml
+++ b/core/module-devutils/impl/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-module-devutils-impl</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-devutils/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-devutils/pom.xml b/core/module-devutils/pom.xml
index 7b0df81..ad937cc 100644
--- a/core/module-devutils/pom.xml
+++ b/core/module-devutils/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<groupId>org.apache.isis.module</groupId>
@@ -48,12 +48,12 @@
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -61,12 +61,12 @@
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-publishing-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-publishing-jdo/pom.xml b/core/module-publishing-jdo/pom.xml
index 58bb8ac..da7f2d0 100644
--- a/core/module-publishing-jdo/pom.xml
+++ b/core/module-publishing-jdo/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-publishingeventserializer-ro/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-publishingeventserializer-ro/pom.xml b/core/module-publishingeventserializer-ro/pom.xml
index 3feadb5..7a209c8 100644
--- a/core/module-publishingeventserializer-ro/pom.xml
+++ b/core/module-publishingeventserializer-ro/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<groupId>org.apache.isis.module</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-settings/applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-settings/applib/pom.xml b/core/module-settings/applib/pom.xml
index cf236ac..805274d 100644
--- a/core/module-settings/applib/pom.xml
+++ b/core/module-settings/applib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-module-settings-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-settings/impl-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-settings/impl-jdo/pom.xml b/core/module-settings/impl-jdo/pom.xml
index 3840664..bbb4929 100644
--- a/core/module-settings/impl-jdo/pom.xml
+++ b/core/module-settings/impl-jdo/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-module-settings-impl-jdo</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/module-settings/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-settings/pom.xml b/core/module-settings/pom.xml
index 4c4cd00..3d9416f 100644
--- a/core/module-settings/pom.xml
+++ b/core/module-settings/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<groupId>org.apache.isis.module</groupId>
@@ -48,12 +48,12 @@
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -61,12 +61,12 @@
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-impl-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-impl-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/objectstore-inmemory/pom.xml
----------------------------------------------------------------------
diff --git a/core/objectstore-inmemory/pom.xml b/core/objectstore-inmemory/pom.xml
index bc43c29..c27616d 100644
--- a/core/objectstore-inmemory/pom.xml
+++ b/core/objectstore-inmemory/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-objectstore</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/objectstore-jdo-datanucleus/pom.xml
----------------------------------------------------------------------
diff --git a/core/objectstore-jdo-datanucleus/pom.xml b/core/objectstore-jdo-datanucleus/pom.xml
index b7cfa9c..e60dce2 100644
--- a/core/objectstore-jdo-datanucleus/pom.xml
+++ b/core/objectstore-jdo-datanucleus/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/objectstore-jdo-metamodel/pom.xml
----------------------------------------------------------------------
diff --git a/core/objectstore-jdo-metamodel/pom.xml b/core/objectstore-jdo-metamodel/pom.xml
index 4c4ca9d..09bb762 100644
--- a/core/objectstore-jdo-metamodel/pom.xml
+++ b/core/objectstore-jdo-metamodel/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-objectstore-jdo-metamodel</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index f806d8f..44ed90e 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -21,7 +21,7 @@
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<packaging>pom</packaging>
@@ -153,7 +153,7 @@
<connection>scm:git:http://git.apache.org/isis.git/core</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/isis.git/trunk/framework/</developerConnection>
<url>git://git.apache.org/isis.git/core</url>
- <tag>HEAD</tag>
+ <tag>isis-1.6.0-RC3</tag>
</scm>
<!-- used in Site generation for relative references. -->
@@ -1030,13 +1030,13 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<!-- not scope=test, because referenced by some sql-tests-common under compile scope -->
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -1045,14 +1045,14 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -1061,7 +1061,7 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-log4j</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
@@ -1070,14 +1070,14 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-metamodel</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-metamodel</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -1086,52 +1086,52 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-runtime</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-runtime</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-wrapper</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<!-- bytecode components -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-bytecode-cglib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-bytecode-javassist</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<!-- webserver -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-webserver</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<!-- specsupport -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-specsupport</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<!-- integtestsupport -->
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-integtestsupport</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<!-- not scope=test, because referenced by some sql-tests-common under compile scope -->
</dependency>
@@ -1139,36 +1139,36 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore-jdo-metamodel</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore-jdo-metamodel</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -1178,36 +1178,36 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-rendering</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-rendering</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-server</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-viewer-restfulobjects-server</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
@@ -1217,12 +1217,12 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security-shiro</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
@@ -1230,7 +1230,7 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-profilestore</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
@@ -1238,22 +1238,22 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck-dom</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck-fixture</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck-viewer-restfulobjects</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
@@ -1262,48 +1262,48 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-audit-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-audit-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-background</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-background</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-command-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-command-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -1315,55 +1315,55 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-publishing-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-publishing-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-publishingeventserializer-ro</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-publishingeventserializer-ro</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<!--
declared as a convenience; alternative is for the domain application to
@@ -1372,24 +1372,24 @@ ${license.additional-notes}
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-applib</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-impl-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-settings-impl-jdo</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/profilestore-inmemory/pom.xml
----------------------------------------------------------------------
diff --git a/core/profilestore-inmemory/pom.xml b/core/profilestore-inmemory/pom.xml
index e1f84f6..dccba79 100644
--- a/core/profilestore-inmemory/pom.xml
+++ b/core/profilestore-inmemory/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-profilestore</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/runtime/pom.xml
----------------------------------------------------------------------
diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml
index 2563d6c..24a0a0d 100644
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-runtime</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/security-noop/pom.xml
----------------------------------------------------------------------
diff --git a/core/security-noop/pom.xml b/core/security-noop/pom.xml
index dc715ea..9a3afa9 100644
--- a/core/security-noop/pom.xml
+++ b/core/security-noop/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-security</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/security-shiro/pom.xml
----------------------------------------------------------------------
diff --git a/core/security-shiro/pom.xml b/core/security-shiro/pom.xml
index b9d9fe6..90cdb60 100644
--- a/core/security-shiro/pom.xml
+++ b/core/security-shiro/pom.xml
@@ -23,12 +23,12 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security-shiro</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<name>Isis Shiro Security</name>
@@ -102,7 +102,7 @@
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security-shiro</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</dependency>
</dependencies>
</dependencyManagement>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/specsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/specsupport/pom.xml b/core/specsupport/pom.xml
index 8d85116..03d38b6 100644
--- a/core/specsupport/pom.xml
+++ b/core/specsupport/pom.xml
@@ -15,7 +15,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-specsupport</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/tck/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/pom.xml b/core/tck/pom.xml
index 6b6c233..08e8f63 100644
--- a/core/tck/pom.xml
+++ b/core/tck/pom.xml
@@ -17,14 +17,13 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-tck</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/tck/tck-dom/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/tck-dom/pom.xml b/core/tck/tck-dom/pom.xml
index b6528c0..d5b49ac 100644
--- a/core/tck/tck-dom/pom.xml
+++ b/core/tck/tck-dom/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-tck-dom</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/tck/tck-fixture/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/tck-fixture/pom.xml b/core/tck/tck-fixture/pom.xml
index 89d7059..ed48392 100644
--- a/core/tck/tck-fixture/pom.xml
+++ b/core/tck/tck-fixture/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-tck-fixture</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/tck/tck-viewer-restfulobjects/pom.xml
----------------------------------------------------------------------
diff --git a/core/tck/tck-viewer-restfulobjects/pom.xml b/core/tck/tck-viewer-restfulobjects/pom.xml
index c83bad5..3c8e182 100644
--- a/core/tck/tck-viewer-restfulobjects/pom.xml
+++ b/core/tck/tck-viewer-restfulobjects/pom.xml
@@ -17,14 +17,13 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-tck-viewer-restfulobjects</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/unittestsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/unittestsupport/pom.xml b/core/unittestsupport/pom.xml
index 4dc33f9..eedd5d2 100644
--- a/core/unittestsupport/pom.xml
+++ b/core/unittestsupport/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-unittestsupport</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/viewer-restfulobjects-applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-applib/pom.xml b/core/viewer-restfulobjects-applib/pom.xml
index 7f80fd8..ff5d017 100644
--- a/core/viewer-restfulobjects-applib/pom.xml
+++ b/core/viewer-restfulobjects-applib/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-viewer-restfulobjects-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/viewer-restfulobjects-rendering/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-rendering/pom.xml b/core/viewer-restfulobjects-rendering/pom.xml
index e7bcab3..0c072da 100644
--- a/core/viewer-restfulobjects-rendering/pom.xml
+++ b/core/viewer-restfulobjects-rendering/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-viewer-restfulobjects-rendering</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/viewer-restfulobjects-server/pom.xml
----------------------------------------------------------------------
diff --git a/core/viewer-restfulobjects-server/pom.xml b/core/viewer-restfulobjects-server/pom.xml
index 2762c74..9e568e7 100644
--- a/core/viewer-restfulobjects-server/pom.xml
+++ b/core/viewer-restfulobjects-server/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-viewer-restfulobjects-server</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/webserver/pom.xml
----------------------------------------------------------------------
diff --git a/core/webserver/pom.xml b/core/webserver/pom.xml
index b6bdd54..726edb8 100644
--- a/core/webserver/pom.xml
+++ b/core/webserver/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-webserver</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/59f9b00e/core/wrapper/pom.xml
----------------------------------------------------------------------
diff --git a/core/wrapper/pom.xml b/core/wrapper/pom.xml
index c5a58b3..d3bfe3a 100644
--- a/core/wrapper/pom.xml
+++ b/core/wrapper/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
</parent>
<artifactId>isis-core-wrapper</artifactId>
[26/39] git commit: ISIS-839: recreating simpleapp archetype
Posted by da...@apache.org.
ISIS-839: recreating simpleapp archetype
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b33b2960
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b33b2960
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b33b2960
Branch: refs/heads/master
Commit: b33b2960a87096b24da06af22490c03509aa6599
Parents: 8afcd99
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 25 08:15:12 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:15:12 2014 +0100
----------------------------------------------------------------------
example/archetype/simpleapp/pom.xml | 8 +-
.../META-INF/maven/archetype-metadata.xml | 9 +-
.../resources/archetype-resources/dom/pom.xml | 23 +++--
.../src/main/java/dom/simple/SimpleObjects.java | 6 +-
.../archetype-resources/fixture/pom.xml | 2 +-
.../fixture/simple/SimpleObjectsFixture.java | 14 ++--
.../simple/SimpleObjectsFixturesService.java | 70 ++++++++++++++++
.../archetype-resources/integtests/pom.xml | 6 +-
.../integration/SimpleAppSystemInitializer.java | 22 ++---
.../main/resources/archetype-resources/pom.xml | 33 +-------
.../webapp/ide/intellij/launch/README.txt | 5 ++
.../ide/intellij/launch/SimpleApp_PROTOTYPE.xml | 32 +++++++
.../launch/SimpleApp__enhance_only_.xml | 26 ++++++
.../archetype-resources/webapp/pom.xml | 83 ++++++++++++++++--
.../webapp/prototyping/DeveloperUtilities.java | 4 +-
.../SimpleObjectsFixturesService.java | 71 ----------------
.../src/main/resources/webapp/welcome.html | 8 +-
.../src/main/webapp/WEB-INF/isis.properties | 65 ++++-----------
.../webapp/src/main/webapp/about/index.html | 88 ++++++++------------
.../projects/basic/archetype.properties | 2 +-
20 files changed, 325 insertions(+), 252 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/pom.xml b/example/archetype/simpleapp/pom.xml
index 47267fa..cd61e80 100644
--- a/example/archetype/simpleapp/pom.xml
+++ b/example/archetype/simpleapp/pom.xml
@@ -17,13 +17,13 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.isis.archetype</groupId>
- <artifactId>simple_wicket_restful_jdo-archetype</artifactId>
+ <artifactId>simpleapp-archetype</artifactId>
<version>1.6.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
- <name>simple_wicket_restful_jdo-archetype</name>
+ <name>simpleapp-archetype</name>
<build>
<extensions>
<extension>
@@ -44,7 +44,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml b/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
index 59a6ecc..5f880e1 100644
--- a/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -17,7 +17,7 @@
specific language governing permissions and limitations
under the License.
-->
-<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="simple_wicket_restful_jdo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="simpleapp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modules>
<module id="${rootArtifactId}-dom" dir="dom" name="${rootArtifactId}-dom">
<fileSets>
@@ -139,6 +139,13 @@
<include>**/*.css</include>
</includes>
</fileSet>
+ <fileSet filtered="true" encoding="UTF-8">
+ <directory>ide/intellij</directory>
+ <includes>
+ <include>**/*.xml</include>
+ <include>**/*.txt</include>
+ </includes>
+ </fileSet>
<fileSet encoding="UTF-8">
<directory>lib</directory>
<includes>
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml
index ecbd6a7..87f8214 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml
@@ -26,7 +26,7 @@
</parent>
<artifactId>${artifactId}</artifactId>
- <name>Simple Wicket/Restful/JDO DOM</name>
+ <name>Simple App DOM</name>
<build>
<resources>
@@ -101,11 +101,22 @@
<artifactId>isis-core-applib</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.isis.objectstore</groupId>
- <artifactId>isis-objectstore-jdo-applib</artifactId>
- </dependency>
-
+ <!--
+ uncomment to use the AppSettings or UserSettings services
+ (also uncomment corresponding dependency in webapp module)
+ -->
+ <!--
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-settings-applib</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-devutils-applib</artifactId>
+ </dependency>
+ -->
+
+
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/dom/simple/SimpleObjects.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/dom/simple/SimpleObjects.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/dom/simple/SimpleObjects.java
index 40bdc5a..c5ec526 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/dom/simple/SimpleObjects.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/src/main/java/dom/simple/SimpleObjects.java
@@ -23,12 +23,10 @@ package dom.simple;
import java.util.List;
import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.annotation.Bookmarkable;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
+@DomainService(menuOrder = "10", repositoryFor = SimpleObject.class)
public class SimpleObjects {
//region > identification in the UI
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/pom.xml
index 204bc79..eae6a5f 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/pom.xml
@@ -26,7 +26,7 @@
</parent>
<artifactId>${artifactId}</artifactId>
- <name>Simple Wicket/Restful/JDO Fixtures</name>
+ <name>Simple App Fixtures</name>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixture.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixture.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixture.java
index 4b03a11..139ad01 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixture.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixture.java
@@ -29,6 +29,10 @@ import org.apache.isis.applib.fixturescripts.FixtureScript;
public class SimpleObjectsFixture extends FixtureScript {
+ public SimpleObjectsFixture() {
+ withDiscoverability(Discoverability.DISCOVERABLE);
+ }
+
@Override
protected void execute(ExecutionContext executionContext) {
@@ -36,15 +40,15 @@ public class SimpleObjectsFixture extends FixtureScript {
execute(new SimpleObjectsTearDownFixture(), executionContext);
// create
- create("Foo");
- create("Bar");
- create("Baz");
+ create("Foo", executionContext);
+ create("Bar", executionContext);
+ create("Baz", executionContext);
}
// //////////////////////////////////////
- private SimpleObject create(final String name) {
- return simpleObjects.create(name);
+ private SimpleObject create(final String name, ExecutionContext executionContext) {
+ return executionContext.add(this, simpleObjects.create(name));
}
// //////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
new file mode 100644
index 0000000..fb69258
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
@@ -0,0 +1,70 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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 fixture.simple;
+
+import java.util.List;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.Prototype;
+import org.apache.isis.applib.fixturescripts.FixtureResult;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
+import org.apache.isis.applib.fixturescripts.FixtureScripts;
+import org.apache.isis.applib.fixturescripts.SimpleFixtureScript;
+
+/**
+ * Enables fixtures to be installed from the application.
+ */
+@Named("Prototyping")
+@DomainService(menuOrder = "20")
+public class SimpleObjectsFixturesService extends FixtureScripts {
+
+ public SimpleObjectsFixturesService() {
+ super("fixture.simple");
+ }
+
+ //@Override // compatibility with core 1.5.0
+ public FixtureScript default0RunFixtureScript() {
+ return findFixtureScriptFor(SimpleFixtureScript.class);
+ }
+
+ /**
+ * Raising visibility to <tt>public</tt> so that choices are available for first param
+ * of {@link ${symbol_pound}runFixtureScript(FixtureScript, String)}.
+ */
+ @Override
+ public List<FixtureScript> choices0RunFixtureScript() {
+ return super.choices0RunFixtureScript();
+ }
+
+
+ // //////////////////////////////////////
+
+ @Prototype
+ @MemberOrder(sequence="20")
+ public Object installFixturesAndReturnFirst() {
+ final List<FixtureResult> run = findFixtureScriptFor(SimpleObjectsFixture.class).run(null);
+ return run.get(0).getObject();
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/pom.xml
index 4b47301..568cc80 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/pom.xml
@@ -26,7 +26,7 @@
</parent>
<artifactId>${artifactId}</artifactId>
- <name>Simple Wicket/Restful/JDO Integration Tests</name>
+ <name>Simple App Integration Tests</name>
<build>
<testResources>
@@ -76,8 +76,8 @@
<artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.objectstore</groupId>
- <artifactId>isis-objectstore-jdo-datanucleus</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/SimpleAppSystemInitializer.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/SimpleAppSystemInitializer.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/SimpleAppSystemInitializer.java
index 5bfef2b..7e5384e 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/SimpleAppSystemInitializer.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/SimpleAppSystemInitializer.java
@@ -19,14 +19,10 @@
*/
package integration;
-import dom.simple.SimpleObjects;
-
import org.apache.isis.core.commons.config.IsisConfiguration;
import org.apache.isis.core.integtestsupport.IsisSystemForTest;
-import org.apache.isis.core.wrapper.WrapperFactoryDefault;
import org.apache.isis.objectstore.jdo.datanucleus.DataNucleusPersistenceMechanismInstaller;
import org.apache.isis.objectstore.jdo.datanucleus.IsisConfigurationForJdoIntegTests;
-import org.apache.isis.objectstore.jdo.datanucleus.service.support.IsisJdoSupportImpl;
/**
* Holds an instance of an {@link IsisSystemForTest} as a {@link ThreadLocal} on the current thread,
@@ -48,16 +44,20 @@ public class SimpleAppSystemInitializer {
private static class SimpleAppSystemBuilder extends IsisSystemForTest.Builder {
public SimpleAppSystemBuilder() {
- //withFixtures( ... reference data fixtures ...); // if we had any...
withLoggingAt(org.apache.log4j.Level.INFO);
with(testConfiguration());
with(new DataNucleusPersistenceMechanismInstaller());
-
- withServices(
- new SimpleObjects(),
- new WrapperFactoryDefault(),
- new IsisJdoSupportImpl()
- );
+
+ // services annotated with @DomainService
+ withServicesIn( "dom.simple"
+ ,"fixture.simple"
+ ,"org.apache.isis.core.wrapper"
+ ,"org.apache.isis.applib"
+ ,"org.apache.isis.core.metamodel.services"
+ ,"org.apache.isis.core.runtime.services"
+ ,"org.apache.isis.objectstore.jdo.datanucleus.service.support" // IsisJdoSupportImpl
+ ,"org.apache.isis.objectstore.jdo.datanucleus.service.eventbus" // EventBusServiceJdo
+ );
}
private static IsisConfiguration testConfiguration() {
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
index a19912a..97d3406 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/pom.xml
@@ -23,7 +23,7 @@
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
- <name>Simple Wicket/Restful/JDO App</name>
+ <name>Simple App</name>
<packaging>pom</packaging>
@@ -32,11 +32,8 @@
</prerequisites>
<properties>
- <isis.version>1.5.0</isis.version>
- <isis-objectstore-jdo.version>1.5.0</isis-objectstore-jdo.version>
- <isis-viewer-wicket.version>1.5.0</isis-viewer-wicket.version>
- <isis-viewer-restfulobjects.version>2.3.0</isis-viewer-restfulobjects.version>
- <isis-security-shiro.version>1.5.0</isis-security-shiro.version>
+ <isis.version>1.6.0</isis.version>
+ <isis-viewer-wicket.version>1.6.0</isis-viewer-wicket.version>
<!-- must be consistent with the versions defined by the JDO Objectstore -->
<datanucleus-accessplatform-jdo-rdbms.version>3.3.6</datanucleus-accessplatform-jdo-rdbms.version>
@@ -308,14 +305,6 @@
</dependency>
<dependency>
- <groupId>org.apache.isis.objectstore</groupId>
- <artifactId>isis-objectstore-jdo</artifactId>
- <version>${isis-objectstore-jdo.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
- <dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
<version>${isis-viewer-wicket.version}</version>
@@ -323,22 +312,6 @@
<scope>import</scope>
</dependency>
- <dependency>
- <groupId>org.apache.isis.viewer</groupId>
- <artifactId>isis-viewer-restfulobjects</artifactId>
- <version>${isis-viewer-restfulobjects.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.isis.security</groupId>
- <artifactId>isis-security-shiro</artifactId>
- <version>${isis-security-shiro.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
-
<!-- this project's own modules -->
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/README.txt
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/README.txt b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/README.txt
new file mode 100644
index 0000000..ed2b998
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/README.txt
@@ -0,0 +1,5 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+Copy into workspace${symbol_escape}.idea${symbol_escape}runConfigurations directory, and adjust file paths for Maven tasks.
+
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml
new file mode 100644
index 0000000..75369db
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/SimpleApp_PROTOTYPE.xml
@@ -0,0 +1,32 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="SimpleApp-PROTOTYPE" type="Application" factoryName="Application" singleton="true">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <option name="MAIN_CLASS_NAME" value="org.apache.isis.WebServer" />
+ <option name="VM_PARAMETERS" value="" />
+ <option name="PROGRAM_PARAMETERS" value="--type SERVER_PROTOTYPE --port 8080" />
+ <option name="WORKING_DIRECTORY" value="file://${symbol_dollar}MODULE_DIR${symbol_dollar}" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="${parentArtifactId}-webapp" />
+ <envs />
+ <RunnerSettings RunnerId="Debug">
+ <option name="DEBUG_PORT" value="" />
+ <option name="TRANSPORT" value="0" />
+ <option name="LOCAL" value="true" />
+ </RunnerSettings>
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Debug" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method>
+ <option name="Make" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/core/pom.xml" goal="-f pom-jdo-enhance-all.xml datanucleus:enhance -o" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/${parentArtifactId}/dom/pom.xml" goal="datanucleus:enhance -o" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml
new file mode 100644
index 0000000..e38ac40
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/ide/intellij/launch/SimpleApp__enhance_only_.xml
@@ -0,0 +1,26 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<component name="ProjectRunConfigurationManager">
+s <configuration default="false" name="SimpleApp (enhance only)" type="Application" factoryName="Application">
+ <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+ <option name="MAIN_CLASS_NAME" value="org.apache.isis.Dummy" />
+ <option name="VM_PARAMETERS" value="" />
+ <option name="PROGRAM_PARAMETERS" value="" />
+ <option name="WORKING_DIRECTORY" value="file://${symbol_dollar}MODULE_DIR${symbol_dollar}" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+ <option name="ALTERNATIVE_JRE_PATH" value="" />
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <option name="ENV_VARIABLES" />
+ <option name="PASS_PARENT_ENVS" value="true" />
+ <module name="${parentArtifactId}-webapp" />
+ <envs />
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Run" />
+ <method>
+ <option name="Make" enabled="false" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/core/pom.xml" goal="-f pom-jdo-enhance-all.xml datanucleus:enhance -o" />
+ <option name="Maven.BeforeRunTask" enabled="true" file="C:/Apache/Isis/example/application/${parentArtifactId}/dom/pom.xml" goal="datanucleus:enhance -o" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml
index ee58552..9ec04b5 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/pom.xml
@@ -26,7 +26,7 @@
</parent>
<artifactId>${artifactId}</artifactId>
- <name>Simple Wicket/Restful/JDO Webapp</name>
+ <name>Simple App Webapp</name>
<description>This module runs both the Wicket viewer and the Restfulobjects viewer in a single webapp configured to run using the datanucleus object store.</description>
@@ -156,20 +156,20 @@
<!-- other isis components -->
<dependency>
- <groupId>org.apache.isis.objectstore</groupId>
- <artifactId>isis-objectstore-jdo-datanucleus</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-objectstore-jdo-datanucleus</artifactId>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-impl</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.viewer</groupId>
- <artifactId>isis-viewer-restfulobjects-server</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-viewer-restfulobjects-server</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.isis.security</groupId>
- <artifactId>isis-security-shiro</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-security-shiro</artifactId>
</dependency>
@@ -190,7 +190,74 @@
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-security</artifactId>
</dependency>
-
+
+
+ <!-- isis modules -->
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-devutils-impl</artifactId>
+ </dependency>
+ <!--
+ uncomment to enable auditing (@Audited),
+ persisted to database
+ -->
+ <!--
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-audit-jdo</artifactId>
+ </dependency>
+ -->
+
+ <!--
+ uncomment to enable BackgroundService;
+ depends on: an implementation of BackgroundCommandService to persist commands
+ (see isis-module-command-jdo)
+ -->
+ <!--
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-background</artifactId>
+ </dependency>
+ -->
+ <!--
+ uncomment to enable commands (@Command annotation)
+ persisted to database, also enabling the ability to run commands in the background
+ (eg using the Quartz scheduler)
+ -->
+ <!--
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-command-jdo</artifactId>
+ </dependency>
+ -->
+
+ <!--
+ uncomment to enable publishing (@PublishedObject, @PublishedAction annotations)
+ persisted to database, and using the Restful Objects (JSON) serialization of the event.
+ -->
+ <!--
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-publishing-jdo</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-publishingeventserializer-ro</artifactId>
+ </dependency>
+ -->
+
+ <!--
+ uncomment to use the AppSettings or UserSettings services
+ (see also declaration of its applib in dom module)
+ -->
+ <!--
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-settings-impl-jdo</artifactId>
+ </dependency>
+ -->
+
+
<!-- to run using WebServer (optional) -->
<dependency>
<groupId>org.apache.isis.core</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java
index 21bdcdb..39d2485 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/DeveloperUtilities.java
@@ -19,6 +19,7 @@
*/
package webapp.prototyping;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.value.Blob;
import org.apache.isis.applib.value.Clob;
@@ -26,8 +27,9 @@ import org.apache.isis.core.metamodel.services.devutils.DeveloperUtilitiesServic
/**
* These overrides are simply to 'move' the action underneath the
- * {@link SimpleObjectsFixturesService prototyping} menu.
+ * {@link fixture.simple.SimpleObjectsFixturesService prototyping} menu.
*/
+@DomainService(menuOrder = "20")
public class DeveloperUtilities extends DeveloperUtilitiesServiceDefault {
@MemberOrder(name="Prototyping", sequence="90")
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/SimpleObjectsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/SimpleObjectsFixturesService.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/SimpleObjectsFixturesService.java
deleted file mode 100644
index e58a077..0000000
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/SimpleObjectsFixturesService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/*
- * 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 webapp.prototyping;
-
-import dom.simple.SimpleObject;
-import dom.simple.SimpleObjects;
-import fixture.simple.SimpleObjectsFixture;
-
-import java.util.List;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.Prototype;
-import org.apache.isis.applib.fixturescripts.FixtureScripts;
-import org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate;
-
-/**
- * Enables fixtures to be installed from the application.
- */
-@DomainService(20)
-@Named("Prototyping")
-public class SimpleObjectsFixturesService extends FixtureScripts {
-
- public SimpleObjectsFixturesService() {
- super("fixture.simple");
- }
-
- @Prototype
- public String installFixtures() {
- final FixturesInstallerDelegate installer = new FixturesInstallerDelegate().withOverride();
- installer.addFixture(new SimpleObjectsFixture());
- installer.installFixtures();
- return "Example fixtures installed";
- }
-
- // //////////////////////////////////////
-
- @Prototype
- public SimpleObject installFixturesAndReturnFirst() {
- installFixtures();
- List<SimpleObject> all = simpleObjects.listAll();
- return !all.isEmpty() ? all.get(0) : null;
- }
-
-
- // //////////////////////////////////////
-
- private SimpleObjects simpleObjects;
- public void injectSimpleObjects(SimpleObjects simpleObjects) {
- this.simpleObjects = simpleObjects;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html
index ec316a9..4661b68 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/resources/webapp/welcome.html
@@ -21,17 +21,17 @@
under the License.
-->
<p class="intro">
- <a href="http://isis.apache.org">Apache Isis</a>™ is a framework to let you rapidly develop
+ <a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a platform to let you rapidly develop
domain-driven apps in Java.
<br/>
<br/>
This app has been generated using Isis'
- <a href="http://isis.apache.org/getting-started/simple-archetype.html">simple</a> archetype,
+ <a href="http://isis.apache.org/intro/getting-started/simple%61pp-archetype.html" target="_blank">SimpleApp</a> archetype,
which configures Isis' most commonly used components as part of a very simple and purposefully minimal application.
<br/>
<br/>
- The app itself consists of a single domain class, <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank">SimpleObject</a>,
- along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank">SimpleObjects</a>.
+ The app itself consists of a single domain class, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank">SimpleObject</a>,
+ along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank">SimpleObjects</a>.
<br/>
<br/>
For more details, see the <a href="http://isis.apache.org/documentation.html" target="_blank">Isis website</a>.
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
index 5e0186c..d98d7ee 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -140,7 +140,7 @@ ${symbol_pound}
${symbol_pound} Providing such capabilities as i18n
${symbol_pound}
-isis.reflector.facet-decorators=org.apache.isis.core.progmodel.facetdecorators.i18n.resourcebundle.I18nDecoratorUsingResourceBundleInstaller
+isis.reflector.facet-decorators=org.apache.isis.core.metamodel.facetdecorator.i18n.resourcebundle.I18nDecoratorUsingResourceBundleInstaller
${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
@@ -157,69 +157,36 @@ ${symbol_pound} the set of the classes for Isis to instantiate as domain service
${symbol_pound} From these domain service instances the rest of the metamodel is discovered, while the
${symbol_pound} end-user gains access to other domain objects by invoking the actions of the domain services.
${symbol_pound}
-
+isis.services-installer=configuration-and-annotation
+isis.services.ServicesInstallerFromAnnotation.packagePrefix=dom.simple,${symbol_escape}
+ fixture.simple,${symbol_escape}
+ webapp.prototyping
${symbol_pound}isis.services.prefix =
isis.services = ${symbol_escape}
- 10:dom.simple.SimpleObjects,${symbol_escape}
- ${symbol_escape}
- 20:webapp.prototyping.SimpleObjectsFixturesService,${symbol_escape}
- 20:webapp.prototyping.DeveloperUtilities,${symbol_escape}
+ org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions,${symbol_escape}
${symbol_escape}
- ${symbol_pound} supporting services if using JDO objectstore, ${symbol_escape}
+ ${symbol_pound} customizable exception handling, ${symbol_escape}
org.apache.isis.objectstore.jdo.applib.service.exceprecog.ExceptionRecognizerCompositeForJdoObjectStore,${symbol_escape}
- org.apache.isis.objectstore.jdo.datanucleus.service.support.IsisJdoSupportImpl,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} Core implementation of the various bookmark/memento services, ${symbol_escape}
- org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceDefault,${symbol_escape}
- org.apache.isis.core.runtime.services.memento.MementoServiceDefault,${symbol_escape}
- org.apache.isis.core.runtime.services.xmlsnapshot.XmlSnapshotServiceDefault,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} Core implementation of a clock service, ${symbol_escape}
- org.apache.isis.applib.services.clock.ClockService,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} Core implementation of the various (inter)action services, ${symbol_escape}
- org.apache.isis.applib.services.command.CommandContext,${symbol_escape}
- org.apache.isis.applib.annotation.Bulk${symbol_dollar}InteractionContext,${symbol_escape}
- org.apache.isis.applib.services.scratchpad.Scratchpad,${symbol_escape}
- org.apache.isis.applib.services.queryresultscache.QueryResultsCache,${symbol_escape}
- org.apache.isis.core.wrapper.WrapperFactoryDefault,${symbol_escape}
- org.apache.isis.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections,${symbol_escape}
${symbol_escape}
- ${symbol_pound} JDO implementation of the EventBusService, ${symbol_escape}
- org.apache.isis.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} JDO implementation of the CommandService, ${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdo,${symbol_escape}
+ ${symbol_pound} isis-module-command-jdo services, ${symbol_escape}
${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoContributions,${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoRepository,${symbol_escape}
+ ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoContributions,${symbol_escape}
${symbol_escape}
- ${symbol_pound} JDO implementation of the AuditingService, ${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdo,${symbol_escape}
+ ${symbol_pound} isis-module-audit-jdo services, ${symbol_escape}
${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdoContributions,${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdoRepository,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} Core implementation of BackgroundService (depends on: MementoService & BackgroundCommandService & CommandContext service), ${symbol_escape}
- ${symbol_pound} org.apache.isis.core.runtime.services.background.BackgroundServiceDefault,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} JDO implementation of the BackgroundCommandService (depends on: CommandContext service), ${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdo,${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoContributions,${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoRepository,${symbol_escape}
${symbol_escape}
- ${symbol_pound} JDO implementation of the PublishingService (depends on: CommandContext service), ${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdo,${symbol_escape}
+ ${symbol_pound} isis-module-publishing-jdo services, ${symbol_escape}
${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoContributions,${symbol_escape}
- ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoRepository,${symbol_escape}
- ${symbol_pound} org.apache.isis.viewer.restfulobjects.rendering.eventserializer.RestfulObjectsSpecEventSerializer,${symbol_escape}
${symbol_escape}
${symbol_pound} JDO implementation of the two SettingsServices, ${symbol_escape}
- ${symbol_pound}org.apache.isis.objectstore.jdo.applib.service.settings.ApplicationSettingsServiceJdo,${symbol_escape}
- ${symbol_pound}org.apache.isis.objectstore.jdo.applib.service.settings.UserSettingsServiceJdo,${symbol_escape}
+ ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.settings.ApplicationSettingsServiceJdo,${symbol_escape}
+ ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.settings.UserSettingsServiceJdo,${symbol_escape}
${symbol_escape}
${symbol_pound} Core (example) implementations of auditing and publishing services, ${symbol_escape}
- ${symbol_pound}org.apache.isis.applib.services.audit.AuditingService3${symbol_dollar}Stderr,${symbol_escape}
- ${symbol_pound}org.apache.isis.applib.services.publish.PublishingService${symbol_dollar}Stderr,${symbol_escape}
+ ${symbol_pound} org.apache.isis.applib.services.audit.AuditingService3${symbol_dollar}Stderr,${symbol_escape}
+ ${symbol_pound} org.apache.isis.applib.services.publish.PublishingService${symbol_dollar}Stderr,${symbol_escape}
+ ${symbol_pound}
${symbol_pound} Specify the (optional) test fixtures
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
index a14497c..6a9ba8c 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
@@ -23,7 +23,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Apache Isis™ Simple (Wicket/Restful/JDO/Shiro) App</title>
+ <title>Apache Isis™ SimpleApp</title>
<style type="text/css">
body {
@@ -60,64 +60,46 @@ ${symbol_pound}wrapper {
<img alt="Isis Logo" src="about/images/isis-logo.png" />
<p>
- <a href="http://isis.apache.org">Apache Isis</a>™ is a framework to let you rapidly develop
+ <a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a framework to let you rapidly develop
domain-driven apps in Java. This app has been generated using Isis'
- <a href="http://isis.apache.org/getting-started/simple-archetype.html">simple</a> archetype,
- which configures Isis' most commonly used components as part of a very simple and purposefully minimal
- application.
+ <a href="http://isis.apache.org/intro/getting-started/simple%61pp-archetype.html" target="_blank">SimpleApp</a> archetype,
+ which configures Isis to run a very simple and purposefully minimal application.
<p>
The app itself consists of a single domain class,
- <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank"><tt>SimpleObject</tt></a>,
- along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank"><tt>SimpleObjects</tt></a>.
+ <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank"><tt>SimpleObject</tt></a>,
+ along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank"><tt>SimpleObjects</tt></a>.
</p>
-
- <p>
- Alternatively, if you'd like to start from a richer starting point, you might want to use the
- <a href="http://isis.apache.org/getting-started/quickstart-archetype.html">quickstart</a> archetype, which
- generates a straightforward "todo" app.
- </p>
-
- <p>
- The Isis components that are configured in this app are:
- </p>
-
- <table>
- <tr>
- <th>Component</th>
- <th>Access URL</th>
- <th>Description</th>
- <th>Further info on the Isis website</th>
- </tr>
- <tr>
- <td>Wicket Viewer</td>
- <td><a href="wicket/">wicket/</a></td>
- <td>Provides a generic UI for end-users, built with <a href="http://wicket.apache.org">Apache Wicket</a>™</td>
- <td><a href="http://isis.apache.org/components/viewers/wicket/about.html">wicket viewer</a></td>
- </tr>
- <tr>
- <td>RestfulObjects Viewer</td>
- <td><a href="restful/">restful/</a></td>
- <td>Provides a RESTful API conformant with the <a href="http://restfulobjects.org">Restful Objects</a> spec</td>
- <td><a href="http://isis.apache.org/components/viewers/restfulobjects/about.html">restfulobjects viewer</a></td>
- </tr>
- <tr>
- <td>JDO Object Store</td>
- <td>n/a</td>
- <td>Persists objects using JDO/DataNucleus; configured to use HSQLDB in-memory database</td>
- <td><a href="http://isis.apache.org/components/objectstores/jdo/about.html">jdo objectstore</a></td>
- </tr>
- <tr>
- <td>Shiro Security</td>
- <td>n/a</td>
- <td>Provides authentication and authorization, using <a href="http://shiro.apache.org">Apache Shiro</a>™</td>
- <td><a href="http://isis.apache.org/components/security/shiro/about.html">shiro security</a></td>
- </tr>
- </table>
-
+
+ <p>To access the app:</p>
+ <ul>
+ <li>
+ <p>
+ <b><a href="wicket/">wicket/</a></b>
+ </p>
+ <p>
+ provides accesses to a generic UI for end-users,
+ Isis' <a href="http://isis.apache.org/components/viewers/wicket/about.html" target="_blank">Wicket Viewer</a>.
+ As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>™.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>
+ <a href="restful/">restful/</a>
+ </b>
+ </p>
+ <p>
+ provides access to a RESTful API conformant with the
+ <a href="http://restfulobjects.org">Restful Objects</a> spec</td>. This is part of Isis Core. The
+ implementation technology is JBoss RestEasy.
+ </p>
+ </li>
+ </ul>
+
<p>
- The default user/password is <i>sven/pass</i> (as configured in the
- <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/shiro.ini">shiro.ini</a> file).
+ The default user/password is <b><i>sven/pass</i></b> (as configured in the
+ <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
</p>
</div>
http://git-wip-us.apache.org/repos/asf/isis/blob/b33b2960/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index 4a7b33c..e213c98 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Mon Jun 02 14:06:09 BST 2014
+#Fri Jul 25 08:15:06 BST 2014
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
[29/39] ISIS-839: recreating todoapp archetype
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
index 49f9ff2..e6c49a1 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -140,7 +140,7 @@ ${symbol_pound}
${symbol_pound} Providing such capabilities as i18n
${symbol_pound}
-isis.reflector.facet-decorators=org.apache.isis.core.progmodel.facetdecorators.i18n.resourcebundle.I18nDecoratorUsingResourceBundleInstaller
+isis.reflector.facet-decorators=org.apache.isis.core.metamodel.facetdecorator.i18n.resourcebundle.I18nDecoratorUsingResourceBundleInstaller
${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
@@ -157,78 +157,38 @@ ${symbol_pound} the set of the classes for Isis to instantiate as domain service
${symbol_pound} From these domain service instances the rest of the metamodel is discovered, while the
${symbol_pound} end-user gains access to other domain objects by invoking the actions of the domain services.
${symbol_pound}
-
+isis.services-installer=configuration-and-annotation
+isis.services.ServicesInstallerFromAnnotation.packagePrefix=app,${symbol_escape}
+ dom.todo,${symbol_escape}
+ fixture.todo,${symbol_escape}
+ webapp.admin,${symbol_escape}
+ webapp.prototyping
${symbol_pound}isis.services.prefix =
isis.services = ${symbol_escape}
- 10:dom.todo.ToDoItems,${symbol_escape}
- 20:app.ToDoItemAnalysis,${symbol_escape}
- 30:webapp.admin.Admin,${symbol_escape}
- 30:webapp.admin.AdminContributions,${symbol_escape}
- ${symbol_escape}
- 40:fixture.todo.ToDoItemsFixturesService,${symbol_escape}
- 40:webapp.prototyping.DeveloperUtilities,${symbol_escape}
- 40:webapp.prototyping.ExternalLinksService,${symbol_escape}
- ${symbol_escape}
- app.ToDoAppDashboardService,${symbol_escape}
- app.ToDoItemAnalysisContributions,${symbol_escape}
- dom.todo.ToDoItemContributions,${symbol_escape}
- dom.todo.ToDoItemSubscriptions,${symbol_escape}
+ org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions,${symbol_escape}
${symbol_escape}
- ${symbol_pound} supporting services if using JDO objectstore, ${symbol_escape}
+ ${symbol_pound} customizable exception handling, ${symbol_escape}
org.apache.isis.objectstore.jdo.applib.service.exceprecog.ExceptionRecognizerCompositeForJdoObjectStore,${symbol_escape}
- org.apache.isis.objectstore.jdo.datanucleus.service.support.IsisJdoSupportImpl,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} Core implementation of the various bookmark/memento services, ${symbol_escape}
- org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceDefault,${symbol_escape}
- org.apache.isis.core.runtime.services.memento.MementoServiceDefault,${symbol_escape}
- org.apache.isis.core.runtime.services.xmlsnapshot.XmlSnapshotServiceDefault,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} Core implementation of a clock service, ${symbol_escape}
- org.apache.isis.applib.services.clock.ClockService,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} Core implementation of the various (inter)action services, ${symbol_escape}
- org.apache.isis.applib.services.command.CommandContext,${symbol_escape}
- org.apache.isis.applib.annotation.Bulk${symbol_dollar}InteractionContext,${symbol_escape}
- org.apache.isis.applib.services.scratchpad.Scratchpad,${symbol_escape}
- org.apache.isis.applib.services.queryresultscache.QueryResultsCache,${symbol_escape}
- org.apache.isis.core.wrapper.WrapperFactoryDefault,${symbol_escape}
- org.apache.isis.applib.services.classdiscovery.ClassDiscoveryServiceUsingReflections,${symbol_escape}
${symbol_escape}
- ${symbol_pound} JDO implementation of the EventBusService, ${symbol_escape}
- org.apache.isis.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} JDO implementation of the CommandService, ${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdo,${symbol_escape}
+ ${symbol_pound} isis-module-command-jdo services, ${symbol_escape}
org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoContributions,${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoRepository,${symbol_escape}
+ org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoContributions,${symbol_escape}
${symbol_escape}
- ${symbol_pound} JDO implementation of the AuditingService, ${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdo,${symbol_escape}
+ ${symbol_pound} isis-module-audit-jdo services, ${symbol_escape}
org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdoContributions,${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdoRepository,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} Core implementation of BackgroundService (depends on: MementoService & BackgroundCommandService & CommandContext service), ${symbol_escape}
- org.apache.isis.core.runtime.services.background.BackgroundServiceDefault,${symbol_escape}
- ${symbol_escape}
- ${symbol_pound} JDO implementation of the BackgroundCommandService (depends on: CommandContext service), ${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdo,${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoContributions,${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoRepository,${symbol_escape}
${symbol_escape}
- ${symbol_pound} JDO implementation of the PublishingService (depends on: CommandContext service), ${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdo,${symbol_escape}
+ ${symbol_pound} isis-module-publishing-jdo services, ${symbol_escape}
org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoContributions,${symbol_escape}
- org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoRepository,${symbol_escape}
- org.apache.isis.viewer.restfulobjects.rendering.eventserializer.RestfulObjectsSpecEventSerializer,${symbol_escape}
${symbol_escape}
${symbol_pound} JDO implementation of the two SettingsServices, ${symbol_escape}
- ${symbol_pound}org.apache.isis.objectstore.jdo.applib.service.settings.ApplicationSettingsServiceJdo,${symbol_escape}
- ${symbol_pound}org.apache.isis.objectstore.jdo.applib.service.settings.UserSettingsServiceJdo,${symbol_escape}
+ ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.settings.ApplicationSettingsServiceJdo,${symbol_escape}
+ ${symbol_pound} org.apache.isis.objectstore.jdo.applib.service.settings.UserSettingsServiceJdo,${symbol_escape}
${symbol_escape}
${symbol_pound} Core (example) implementations of auditing and publishing services, ${symbol_escape}
- ${symbol_pound}org.apache.isis.applib.services.audit.AuditingService3${symbol_dollar}Stderr,${symbol_escape}
- ${symbol_pound}org.apache.isis.applib.services.publish.PublishingService${symbol_dollar}Stderr,${symbol_escape}
+ ${symbol_pound} org.apache.isis.applib.services.audit.AuditingService3${symbol_dollar}Stderr,${symbol_escape}
+ ${symbol_pound} org.apache.isis.applib.services.publish.PublishingService${symbol_dollar}Stderr,${symbol_escape}
+ ${symbol_pound}
${symbol_pound} Specify the (optional) test fixtures
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties
index 0b6d023..9720880 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/logging.properties
@@ -71,6 +71,12 @@ log4j.appender.connection.Append=false
log4j.appender.connection.layout=org.apache.log4j.PatternLayout
log4j.appender.connection.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
+log4j.appender.wicket.i18n=org.apache.log4j.RollingFileAppender
+log4j.appender.wicket.i18n.file=./logs/wicket-i18n.log
+log4j.appender.wicket.i18n.append=false
+log4j.appender.wicket.i18n.layout=org.apache.log4j.PatternLayout
+log4j.appender.wicket.i18n.layout.ConversionPattern=%d [%-20c{1} %-10t %-5p] %m%n
+
@@ -163,6 +169,32 @@ ${symbol_pound}log4j.additivity.org.apache.isis.viewer.wicket.viewer.integration
+${symbol_pound} to track Wicket i18n
+log4j.logger.org.apache.wicket.Localizer=WARN,Console,wicket.i18n
+log4j.additivity.org.apache.wicket.Localizer=false
+
+log4j.logger.org.apache.wicket.resource.loader.ClassStringResourceLoader=WARN,Console,wicket.i18n
+log4j.additivity.org.apache.wicket.resource.loader.ClassStringResourceLoader=false
+
+log4j.logger.org.apache.wicket.resource.loader.ComponentStringResourceLoader=WARN,Console,wicket.i18n
+log4j.additivity.org.apache.wicket.resource.loader.ComponentStringResourceLoader=false
+
+log4j.logger.org.apache.wicket.resource.loader.PackageStringResourceLoader=WARN,Console,wicket.i18n
+log4j.additivity.org.apache.wicket.resource.loader.PackageStringResourceLoader=false
+
+log4j.logger.org.apache.wicket.resource.loader.BundleStringResourceLoader=WARN,Console,wicket.i18n
+log4j.additivity.org.apache.wicket.resource.loader.BundleStringResourceLoader=false
+
+log4j.logger.org.apache.wicket.resource.loader.InitializerStringResourceLoader=WARN,Console,wicket.i18n
+log4j.additivity.org.apache.wicket.resource.loader.InitializerStringResourceLoader=false
+
+log4j.logger.org.apache.wicket.resource.loader.ValidatorStringResourceLoader=WARN,Console,wicket.i18n
+log4j.additivity.org.apache.wicket.resource.loader.ValidatorStringResourceLoader=false
+
+log4j.logger.org.apache.wicket.core.util.resource.locator.ExtensionResourceNameIterator=WARN,Console,wicket.i18n
+log4j.additivity.org.apache.wicket.core.util.resource.locator.ExtensionResourceNameIterator=false
+
+
${symbol_pound} quieten some of the noisier classes in Isis' bootstrapping
log4j.logger.org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder=WARN,Console
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/persistor.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/persistor.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/persistor.properties
index 6c96534..fe47df4 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/persistor.properties
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/persistor.properties
@@ -94,14 +94,14 @@ ${symbol_pound}
${symbol_pound} MS SQL Server
${symbol_pound}
${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=com.microsoft.sqlserver.jdbc.SQLServerDriver
-${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=quickstart
-${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
-${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=p4ssword
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=isis
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=isis
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=isis
${symbol_pound}
${symbol_pound} MS SQL Server (using log4jdbc-remix)
${symbol_pound}
${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
-${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:sqlserver://127.0.0.1:1433;instance=SQLEXPRESS;databaseName=jdo
-${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=jdo
-${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=jdopass
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=isis
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=isis
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=isis
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini
index 2263069..8c5f7d3 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini
@@ -84,6 +84,16 @@ securityManager.realms = $realm1,$realm2
+#######
+# optional, configure realm(s) to use Isis' extended permission syntax
+# (see webapp/realm1.ini for usage)
+#######
+
+# permissionResolver = org.apache.isis.security.shiro.authorization.IsisPermissionResolver
+# realm1.permissionResolver = $permissionResolver
+# realm2.permissionResolver = $permissionResolver
+
+
# -----------------------------------------------------------------------------
# Users and their assigned roles
# -----------------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
index e461216..1200900 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
@@ -23,7 +23,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Apache Isis™ QuickStart (Wicket/Restful/JDO/Shiro) App</title>
+ <title>Apache Isis™ TodoApp</title>
<style type="text/css">
body {
@@ -60,104 +60,90 @@ ${symbol_pound}wrapper {
<img alt="Isis Logo" src="about/images/isis-logo.png" />
<p>
- <a href="http://isis.apache.org">Apache Isis</a>™ is a framework to let you rapidly develop
+ <a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a framework to let you rapidly develop
domain-driven apps in Java. This app has been generated using Isis'
- <a href="http://isis.apache.org/getting-started/quickstart-archetype.html">quickstart</a> archetype,
- which configures Isis' most commonly used components as part of a straightforward
- "todo" app.
+ <a href="http://isis.apache.org/intro/getting-started/todo%61pp-archetype.html" target="_blank">TodoApp</a> archetype,
+ which configures Isis to run a (quite feature rich) "todo" app.
<p>
The app itself consists of a single domain class, <tt>ToDoItem</tt>, along with a number of supporting
- services. You are free to strip it back and reuse for your own purposes.
+ services.
</p>
-
- <p>
- Alternatively, if stripping back this app is too much work, you might want to start with the even simpler
- <a href="http://isis.apache.org/getting-started/simple-archetype.html">simple</a> archetype, and use this
- app by way of reference.
- </p>
-
+
+ <p>To access the app:</p>
+ <ul>
+ <li>
+ <p>
+ <b><a href="wicket/">wicket/</a></b>
+ </p>
+ <p>
+ provides accesses to a generic UI for end-users,
+ Isis' <a href="http://isis.apache.org/components/viewers/wicket/about.html" target="_blank">Wicket Viewer</a>.
+ As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>™.
+ </p>
+ </li>
+ <li>
+ <p>
+ <b>
+ <a href="restful/">restful/</a>
+ </b>
+ </p>
+ <p>
+ provides access to a RESTful API conformant with the
+ <a href="http://restfulobjects.org">Restful Objects</a> spec</td>. This is part of Isis Core. The
+ implementation technology is JBoss RestEasy.
+ </p>
+ </li>
+ </ul>
+
<p>
- The Isis components that are configured in this app are:
+ The default user/password is <b><i>sven/pass</i></b> (as configured in the
+ <a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
</p>
-
- <table>
- <tr>
- <th>Component</th>
- <th>Access URL</th>
- <th>Description</th>
- <th>Further info on the Isis website</th>
- </tr>
- <tr>
- <td>Wicket Viewer</td>
- <td><a href="wicket/">wicket/</a></td>
- <td>Provides a generic UI for end-users, built with <a href="http://wicket.apache.org">Apache Wicket</a>™</td>
- <td><a href="http://isis.apache.org/components/viewers/wicket/about.html">wicket viewer</a></td>
- </tr>
- <tr>
- <td>RestfulObjects Viewer</td>
- <td><a href="restful/">restful/</a></td>
- <td>Provides a RESTful API conformant with the <a href="http://restfulobjects.org">Restful Objects</a> spec</td>
- <td><a href="http://isis.apache.org/components/viewers/restfulobjects/about.html">restfulobjects viewer</a></td>
- </tr>
- <tr>
- <td>JDO Object Store</td>
- <td>n/a</td>
- <td>Persists objects using JDO/DataNucleus; configured to use HSQLDB in-memory database</td>
- <td><a href="http://isis.apache.org/components/objectstores/jdo/about.html">jdo objectstore</a></td>
- </tr>
- <tr>
- <td>Shiro Security</td>
- <td>n/a</td>
- <td>Provides authentication and authorization, using <a href="http://shiro.apache.org">Apache Shiro</a>™</td>
- <td><a href="http://isis.apache.org/components/security/shiro/about.html">shiro security</a></td>
- </tr>
- </table>
<p>
- The default user/password is <i>sven/pass</i> (as configured in the
- <a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/shiro.ini">shiro.ini</a> file).
+ To build your own app, while you could start with this todo app and remove/rename as required, you are
+ probably better off using the extremely minimal
+ <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype.
</p>
-
- <h2>App contents</h2>
+
+ <h2>App contents</h2>
<p>The key files in this "todo" app are:</p>
<!-- the hrefs below are partially URL encoded to prevent them from being modified when the archetype is created -->
<ul>
<li>Domain classes (todo functionality) (in <tt>dom</tt> module)
<ul>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java"><tt>ToDoItem</tt></a> domain entity
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank"><tt>ToDoItem</tt></a> domain entity
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java"><tt>ToDoItems</tt></a> domain service (repository/factory)
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/dom/todo/ToDoItems.java" target="_blank"><tt>ToDoItems</tt></a> domain service (repository/factory)
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/app/ToDoItemAnalysis.java"><tt>ToDoItemAnalysis</tt></a> application service analysing todo items
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/app/ToDoItemAnalysis.java" target="_blank"><tt>ToDoItemAnalysis</tt></a> application service analysing todo items
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/app/ToDoAppDashboard.java"><tt>ToDoAppDashboard</tt></a> dashboard application service
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/app/ToDoAppDashboard.java" target="_blank"><tt>ToDoAppDashboard</tt></a> dashboard application service
</li>
</ul>
</li>
- <li>Fixture classes (in <tt>fixture</tt> module and <tt>webapp</tt> module)
+ <li>Fixture scripts (in <tt>fixture</tt> module)
<ul>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java"><tt>ToDoItemsFixture</tt></a> example fixture data (since configured for in-memory HSQLDB)
- </li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/java/webapp/prototyping/ToDoItemsFixturesService.java"><tt>ToDoItemsFixtureService</tt></a> domain service to install fixtures at run-time
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java" target="_blank"><tt>ToDoItemsFixtureService</tt></a> domain service to install fixtures at run-time
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml">WEB-INF/web.xml</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml" target="_blank">WEB-INF/web.xml</a></tt> (in <tt>webapp</tt> module)
<ul>
- <li><tt>AboutPageFilter</tt> - filter that redirects to this page
- </li>
- <li><tt>ResourceCachingFilter</tt> and <tt>ResourceServlet</tt> - filter and servlet for serving up static resources.
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml${symbol_pound}L98" target="_blank">ResourceCachingFilter</a></tt> and <tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml${symbol_pound}L134" target="_blank">ResourceServlet</a></tt> - filter and servlet for serving up static resources.
</li>
- <li><tt>WicketFilter</tt> - filter for the wicket application, mapped to <tt>/wicket/*</tt>
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml${symbol_pound}L174" target="_blank">WicketFilter</a></tt> - filter for the wicket application, mapped to <tt>/wicket/*</tt>
</li>
- <li><tt>ResteasyBootstrap</tt>, <tt>IsisSessionFilterForRestfulObjects</tt>, <tt>RestfulObjectsRestEasyDispatcher</tt> - listeners, filters and servlets to bootstrap and map restful objects viewer to <tt>/restful/*</tt>.
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml${symbol_pound}L223" target="_blank">ResteasyBootstrap</a></tt>,
+ <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml${symbol_pound}L240" target="_blank">IsisSessionFilterForRestfulObjects</a></tt>,
+ <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml${symbol_pound}L271" target="_blank">RestfulObjectsRestEasyDispatcher</a></tt> - listeners, filters and servlets to bootstrap and map restful objects viewer to <tt>/restful/*</tt>.
</li>
- <li>commented out <tt>IsisWebAppBootstrapper</tt> listener; this is NOT required unless wicket viewer config is removed
+ <li>commented out <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml${symbol_pound}L208" target="_blank">IsisWebAppBootstrapper</a></tt> listener; this is NOT required unless wicket viewer config is removed
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties">WEB-INF/isis.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/isis.properties" target="_blank">WEB-INF/isis.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li><tt>isis.services</tt> - specifies the two domain services described above (<tt>ToDoItems</tt> and <tt>ToDoItemsFixtureService</tt>), appearing on the menu bar in the Wicket viewer,
along with a number of hidden framework-provided domain services demonstrating Isis' support for publishing, auditing and customizable error handling
@@ -168,48 +154,25 @@ ${symbol_pound}wrapper {
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties">WEB-INF/persistor_datanucleus.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties" target="_blank">WEB-INF/persistor_datanucleus.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>configuration for JDO object store
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor.properties">WEB-INF/persistor.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/persistor.properties" target="_blank">WEB-INF/persistor.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>JDBC URL for JDO object store
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/shiro.ini">WEB-INF/shiro.ini</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">WEB-INF/shiro.ini</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>configuration for Shiro security
</li>
</ul>
</li>
</ul>
-
- <h2>Next steps</h2>
- <p>Use the following as a check-list for refactoring towards your own application:
- <ul>
- <li>Experiment with users, roles and permissions (in <tt>shiro.ini</tt>)
- </li>
- <li>Refactor the <tt>ToDoItem</tt>, <tt>ToDoItems</tt> and <tt>ToDoItemsJdo</tt> towards your own application's functionality; obviously you are likely to introduce many more classes and services
- </li>
- <li>Reconfigure <tt>persistor.properties</tt> to specify the JDBC URL to the database you wish to work with; if necessary also update the <tt>pom.xml</tt> in the <tt>webapp</tt> module to add the JDBC driver to the classpath
- </li>
- <li>Fine-tune other RDBMS settings in <tt>persistor_datanucleus.properties</tt>
- </li>
- <li>Assuming you are using a persistent data store, then remove the <tt>ToDoItemsFixtureService</tt> from the <tt>isis.properties</tt> file (<tt>isis.services</tt> key). Alternatively you could keep but refactor to provide a similar service for your own application's domain.
- </li>
- <li>Replace (or remove) the publishing and auditing service implementations.
- </li>
- <li>If you want the wicket viewer but NOT the restful objects viewer, then remove/comment out the <tt>ResteasyBootstrap</tt>, <tt>IsisSessionFilterForRestfulObjects</tt>, <tt>RestfulObjectsRestEasyDispatcher</tt> from <tt>web.xml</tt>
- </li>
- <li>If you want the restful objects viewer but NOT the wicket viewer, then remove/comment out the <tt>WicketFilter</tt> filter and uncomment the <tt>IsisWebAppBootstrapper</tt> listener in <tt>web.xml</tt>
- </li>
- <li>Update this page (<tt>about/index.html</tt>) as required for your application, and/or remove the <tt>welcome-file-list</tt> from <tt>web.xml</tt>
- </li>
- </ul>
</div>
</body>
</html>
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css
index 639d1c3..ac67314 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css
@@ -77,4 +77,4 @@ li.x-highlight a {
div.x-key span.scalarName {
color: red;
}
-}
\ No newline at end of file
+
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
index 89bcac7..10828aa 100644
--- a/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Mon Jun 02 13:50:06 BST 2014
+#Fri Jul 25 08:24:30 BST 2014
package=it.pkg
version=0.1-SNAPSHOT
groupId=archetype.it
[36/39] git commit: ISIS-839: bump wicket viewer's parent pom (ie
isis core) from 1.6.0 to 1.7.0-SNAPSHOT.
Posted by da...@apache.org.
ISIS-839: bump wicket viewer's parent pom (ie isis core) from 1.6.0 to 1.7.0-SNAPSHOT.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e6863211
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e6863211
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e6863211
Branch: refs/heads/master
Commit: e6863211ffcd2a88cd179f49828a43d63a49d457
Parents: 4431855
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 06:27:24 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:35:48 2014 +0100
----------------------------------------------------------------------
component/viewer/wicket/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/e6863211/component/viewer/wicket/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/pom.xml b/component/viewer/wicket/pom.xml
index b3d60d0..f4a1e3f 100644
--- a/component/viewer/wicket/pom.xml
+++ b/component/viewer/wicket/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
[35/39] git commit: ISIS-839: bump up non-released poms to
1.7.0-SNAPSHOT
Posted by da...@apache.org.
ISIS-839: bump up non-released poms to 1.7.0-SNAPSHOT
... namely scimpi, maven plugin, and also the submodules of the example apps.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/44318559
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/44318559
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/44318559
Branch: refs/heads/master
Commit: 44318559057f067c00e54a7a99f2d365f8b0f5e9
Parents: e35f974
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 06:26:33 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:35:36 2014 +0100
----------------------------------------------------------------------
component/viewer/scimpi/pom.xml | 2 +-
example/application/simpleapp/dom/pom.xml | 2 +-
example/application/simpleapp/fixture/pom.xml | 2 +-
example/application/simpleapp/integtests/pom.xml | 2 +-
example/application/simpleapp/pom.xml | 6 +++---
example/application/simpleapp/webapp/pom.xml | 2 +-
example/application/todoapp/dom/pom.xml | 2 +-
example/application/todoapp/fixture/pom.xml | 2 +-
example/application/todoapp/integtests/pom.xml | 2 +-
example/application/todoapp/pom.xml | 6 +++---
example/application/todoapp/webapp/pom.xml | 2 +-
tool/maven-plugin/pom.xml | 2 +-
12 files changed, 16 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/component/viewer/scimpi/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/pom.xml b/component/viewer/scimpi/pom.xml
index a118d79..40f49be 100644
--- a/component/viewer/scimpi/pom.xml
+++ b/component/viewer/scimpi/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/simpleapp/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/pom.xml b/example/application/simpleapp/dom/pom.xml
index c8e8682..ee0b9f7 100644
--- a/example/application/simpleapp/dom/pom.xml
+++ b/example/application/simpleapp/dom/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>simpleapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>simpleapp-dom</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/simpleapp/fixture/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/fixture/pom.xml b/example/application/simpleapp/fixture/pom.xml
index 1df5113..697da6a 100644
--- a/example/application/simpleapp/fixture/pom.xml
+++ b/example/application/simpleapp/fixture/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>simpleapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>simpleapp-fixture</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/simpleapp/integtests/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/integtests/pom.xml b/example/application/simpleapp/integtests/pom.xml
index d5d4978..e8cd887 100644
--- a/example/application/simpleapp/integtests/pom.xml
+++ b/example/application/simpleapp/integtests/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>simpleapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>simpleapp-integtests</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index 91f5399..831b201 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -23,7 +23,7 @@
<groupId>org.apache.isis.example.application</groupId>
<artifactId>simpleapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
<name>Simple App</name>
@@ -34,8 +34,8 @@
</prerequisites>
<properties>
- <isis.version>1.6.0</isis.version>
- <isis-viewer-wicket.version>1.6.0</isis-viewer-wicket.version>
+ <isis.version>1.7.0-SNAPSHOT</isis.version>
+ <isis-viewer-wicket.version>1.7.0-SNAPSHOT</isis-viewer-wicket.version>
<!-- must be consistent with the versions defined by the JDO Objectstore -->
<datanucleus-accessplatform-jdo-rdbms.version>3.3.6</datanucleus-accessplatform-jdo-rdbms.version>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/simpleapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/pom.xml b/example/application/simpleapp/webapp/pom.xml
index 22c8442..51b12b5 100644
--- a/example/application/simpleapp/webapp/pom.xml
+++ b/example/application/simpleapp/webapp/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>simpleapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>simpleapp-webapp</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/todoapp/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/pom.xml b/example/application/todoapp/dom/pom.xml
index 0ced3c1..2837f99 100644
--- a/example/application/todoapp/dom/pom.xml
+++ b/example/application/todoapp/dom/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>todoapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>todoapp-dom</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/todoapp/fixture/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/fixture/pom.xml b/example/application/todoapp/fixture/pom.xml
index 2447d4e..96fe6dc 100644
--- a/example/application/todoapp/fixture/pom.xml
+++ b/example/application/todoapp/fixture/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>todoapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>todoapp-fixture</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/todoapp/integtests/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/integtests/pom.xml b/example/application/todoapp/integtests/pom.xml
index fd2284b..1b6ff93 100644
--- a/example/application/todoapp/integtests/pom.xml
+++ b/example/application/todoapp/integtests/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>todoapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>todoapp-integtests</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/todoapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/pom.xml b/example/application/todoapp/pom.xml
index 1d40e99..c45cbe2 100644
--- a/example/application/todoapp/pom.xml
+++ b/example/application/todoapp/pom.xml
@@ -23,7 +23,7 @@
<groupId>org.apache.isis.example.application</groupId>
<artifactId>todoapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
<name>ToDo App</name>
@@ -34,8 +34,8 @@
</prerequisites>
<properties>
- <isis.version>1.6.0</isis.version>
- <isis-viewer-wicket.version>1.6.0</isis-viewer-wicket.version>
+ <isis.version>1.7.0-SNAPSHOT</isis.version>
+ <isis-viewer-wicket.version>1.7.0-SNAPSHOT</isis-viewer-wicket.version>
<!-- must be consistent with the versions defined by the JDO Objectstore -->
<datanucleus-accessplatform-jdo-rdbms.version>3.3.6</datanucleus-accessplatform-jdo-rdbms.version>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/example/application/todoapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/pom.xml b/example/application/todoapp/webapp/pom.xml
index 1230973..a7de70a 100644
--- a/example/application/todoapp/webapp/pom.xml
+++ b/example/application/todoapp/webapp/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.isis.example.application</groupId>
<artifactId>todoapp</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>todoapp-webapp</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/44318559/tool/maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/pom.xml b/tool/maven-plugin/pom.xml
index bf5932c..8428378 100644
--- a/tool/maven-plugin/pom.xml
+++ b/tool/maven-plugin/pom.xml
@@ -5,7 +5,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.7.0-SNAPSHOT</version>
<relativePath>../../core/pom.xml</relativePath>
</parent>
[39/39] git commit: ISIS-839: updating STATUS
Posted by da...@apache.org.
ISIS-839: updating STATUS
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/090e491c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/090e491c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/090e491c
Branch: refs/heads/master
Commit: 090e491ccbafcd208722762213de7aa72db4426f
Parents: fee6d39
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 28 14:28:03 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 28 14:28:03 2014 +0100
----------------------------------------------------------------------
STATUS | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/090e491c/STATUS
----------------------------------------------------------------------
diff --git a/STATUS b/STATUS
index aa4eea7..1adc756 100644
--- a/STATUS
+++ b/STATUS
@@ -21,10 +21,10 @@ Description
TLP releases:
- * isis-1.6.0 : 25 Jul 2014
- * isis-viewer-wicket-1.6.0 : 25 Jul 2014
- * todoapp-archetype-1.6.0 : 25 Jul 2014
- * simpleapp-archetype-1.6.0 : 25 Jul 2014
+ * isis-1.6.0 : 28 Jul 2014
+ * isis-viewer-wicket-1.6.0 : 28 Jul 2014
+ * todoapp-archetype-1.6.0 : 28 Jul 2014
+ * simpleapp-archetype-1.6.0 : 28 Jul 2014
* isis-1.5.0 : 08 Jun 2014
* isis-objectstore-jdo-1.5.0 : 08 Jun 2014
[24/39] git commit: [maven-release-plugin] prepare for next
development iteration
Posted by da...@apache.org.
[maven-release-plugin] prepare for next development iteration
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/49512f7e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/49512f7e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/49512f7e
Branch: refs/heads/master
Commit: 49512f7eca3287e3236c3a285d23bd82d1897bd5
Parents: 5a28330
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 25 07:44:17 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 07:44:17 2014 +0100
----------------------------------------------------------------------
component/viewer/wicket/applib/pom.xml | 2 +-
component/viewer/wicket/impl/pom.xml | 2 +-
component/viewer/wicket/model/pom.xml | 2 +-
component/viewer/wicket/pom.xml | 20 ++++++++------------
component/viewer/wicket/tck/pom.xml | 8 ++------
component/viewer/wicket/ui/pom.xml | 2 +-
6 files changed, 14 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/49512f7e/component/viewer/wicket/applib/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/applib/pom.xml b/component/viewer/wicket/applib/pom.xml
index abbaa67..6c079f6 100644
--- a/component/viewer/wicket/applib/pom.xml
+++ b/component/viewer/wicket/applib/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-viewer-wicket-applib</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/49512f7e/component/viewer/wicket/impl/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/pom.xml b/component/viewer/wicket/impl/pom.xml
index 1f4917f..7e98dff 100644
--- a/component/viewer/wicket/impl/pom.xml
+++ b/component/viewer/wicket/impl/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<name>Isis Wicket Viewer Implementation</name>
http://git-wip-us.apache.org/repos/asf/isis/blob/49512f7e/component/viewer/wicket/model/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/pom.xml b/component/viewer/wicket/model/pom.xml
index 0f896e3..9093154 100644
--- a/component/viewer/wicket/model/pom.xml
+++ b/component/viewer/wicket/model/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-viewer-wicket-model</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/49512f7e/component/viewer/wicket/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/pom.xml b/component/viewer/wicket/pom.xml
index 4100b7f..b3d60d0 100644
--- a/component/viewer/wicket/pom.xml
+++ b/component/viewer/wicket/pom.xml
@@ -30,7 +30,7 @@
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<name>Isis Wicket Viewer</name>
@@ -101,41 +101,41 @@
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-applib</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-model</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-model</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-ui</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-ui</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-impl</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-impl</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
@@ -321,8 +321,4 @@
</dependencies>
</dependencyManagement>
-
- <scm>
- <tag>isis-viewer-wicket-1.6.0-RC3</tag>
- </scm>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/49512f7e/component/viewer/wicket/tck/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/tck/pom.xml b/component/viewer/wicket/tck/pom.xml
index 3f58e01..6d9eb7a 100644
--- a/component/viewer/wicket/tck/pom.xml
+++ b/component/viewer/wicket/tck/pom.xml
@@ -29,13 +29,13 @@
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-tck</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<name>Isis Wicket Viewer TCK tests</name>
<properties>
- <isis-viewer-wicket.version>1.6.0</isis-viewer-wicket.version>
+ <isis-viewer-wicket.version>1.7.0-SNAPSHOT</isis-viewer-wicket.version>
<siteBaseDir>..</siteBaseDir>
<relativeUrl>wicket-tck/</relativeUrl>
<!-- until someone comes up with a better solution -->
@@ -114,8 +114,4 @@
</dependency>
</dependencies>
-
- <scm>
- <tag>isis-viewer-wicket-1.6.0-RC3</tag>
- </scm>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/49512f7e/component/viewer/wicket/ui/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/pom.xml b/component/viewer/wicket/ui/pom.xml
index 2e96c9c..f783d98 100644
--- a/component/viewer/wicket/ui/pom.xml
+++ b/component/viewer/wicket/ui/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
</parent>
<artifactId>isis-viewer-wicket-ui</artifactId>
[16/39] git commit: ISIS-839: updating example app .launch files and
out-of-date welcome.html and the about/index.html files.
Posted by da...@apache.org.
ISIS-839: updating example app .launch files and out-of-date welcome.html and the about/index.html files.
Also new recreate-archetype.sh script.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/3fca9990
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/3fca9990
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/3fca9990
Branch: refs/heads/master
Commit: 3fca9990d03c970e5b17f2af8464d80e54cdc526
Parents: 0e346e4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Jul 23 22:29:55 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 18:19:58 2014 +0100
----------------------------------------------------------------------
.../launch/SimpleApp-PROTOTYPE-jrebel.launch | 2 +-
.../SimpleApp-PROTOTYPE-no-fixtures.launch | 2 +-
.../SimpleApp-PROTOTYPE-with-fixtures.launch | 2 +-
.../launch/SimpleApp-SERVER-no-fixtures.launch | 2 +-
.../src/main/resources/webapp/welcome.html | 8 +-
.../webapp/src/main/webapp/about/index.html | 55 ++-----------
.../launch/ToDoApp-PROTOTYPE-jrebel.launch | 2 +-
.../ToDoApp-PROTOTYPE-with-fixtures.launch | 2 +-
.../ide/eclipse/launch/ToDoApp-PROTOTYPE.launch | 2 +-
.../ide/eclipse/launch/ToDoApp-SERVER.launch | 2 +-
.../src/main/resources/webapp/welcome.html | 7 +-
.../webapp/src/main/webapp/about/index.html | 81 ++++++--------------
scripts/recreate-archetype.sh | 70 +++++++++++++++++
13 files changed, 116 insertions(+), 121 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch b/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch
index 698333c..e45f7f0 100644
--- a/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch
+++ b/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-jrebel.launch
@@ -25,7 +25,7 @@
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.WebServer"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--port 8080 --type PROTOTYPE"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="simple_wicket_restful_jdo-webapp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="simpleapp-webapp"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="${jrebel_args} -Drebel.log=false -Drebel.check_class_hash=true -Drebel.packages_exclude=org.apache.isis -Dproject.root=${project_loc}/.. -Dtarget.dir=target-ide -Drebel.plugins=C:/github/danhaywood/isis-jrebel-plugin/target/danhaywood-isis-jrebel-plugin-1.0.0-SNAPSHOT.jar -Disis-jrebel-plugin.packagePrefix=dom.simple,org.apache.isis.objectstore.jdo.applib -Disis-jrebel-plugin.loggingLevel=warn -XX:MaxPermSize=128m"/>
</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch b/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch
index 346fe3c..96a9a54 100644
--- a/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch
+++ b/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-no-fixtures.launch
@@ -18,6 +18,6 @@
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.WebServer"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--port 8080 --type SERVER_PROTOTYPE"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="simple_wicket_restful_jdo-webapp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="simpleapp-webapp"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch b/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch
index 8bf2091..dbfb2b3 100644
--- a/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch
+++ b/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-PROTOTYPE-with-fixtures.launch
@@ -15,6 +15,6 @@
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.WebServer"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--port 8080 -D isis.persistor.datanucleus.install-fixtures=true --type SERVER_PROTOTYPE"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="simple_wicket_restful_jdo-webapp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="simpleapp-webapp"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch b/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch
index e09fdbb..238b5a6 100644
--- a/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch
+++ b/example/application/simpleapp/webapp/ide/eclipse/launch/SimpleApp-SERVER-no-fixtures.launch
@@ -18,6 +18,6 @@
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.WebServer"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--port 8080 --type SERVER"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="simple_wicket_restful_jdo-webapp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="simpleapp-webapp"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html b/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html
index b25e363..fdfd6dd 100644
--- a/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html
+++ b/example/application/simpleapp/webapp/src/main/resources/webapp/welcome.html
@@ -18,17 +18,17 @@
under the License.
-->
<p class="intro">
- <a href="http://isis.apache.org">Apache Isis</a>™ is a framework to let you rapidly develop
+ <a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a platform to let you rapidly develop
domain-driven apps in Java.
<br/>
<br/>
This app has been generated using Isis'
- <a href="http://isis.apache.org/getting-started/simple-archetype.html">simple</a> archetype,
+ <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype,
which configures Isis' most commonly used components as part of a very simple and purposefully minimal application.
<br/>
<br/>
- The app itself consists of a single domain class, <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank">SimpleObject</a>,
- along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank">SimpleObjects</a>.
+ The app itself consists of a single domain class, <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank">SimpleObject</a>,
+ along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank">SimpleObjects</a>.
<br/>
<br/>
For more details, see the <a href="http://isis.apache.org/documentation.html" target="_blank">Isis website</a>.
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/simpleapp/webapp/src/main/webapp/about/index.html
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/about/index.html b/example/application/simpleapp/webapp/src/main/webapp/about/index.html
index f5d88ac..3b9ef8f 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/about/index.html
+++ b/example/application/simpleapp/webapp/src/main/webapp/about/index.html
@@ -20,7 +20,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Apache Isis™ Simple (Wicket/Restful/JDO/Shiro) App</title>
+ <title>Apache Isis™ SimpleApp</title>
<style type="text/css">
body {
@@ -57,64 +57,25 @@ th, td {
<img alt="Isis Logo" src="about/images/isis-logo.png" />
<p>
- <a href="http://isis.apache.org">Apache Isis</a>™ is a framework to let you rapidly develop
+ <a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a framework to let you rapidly develop
domain-driven apps in Java. This app has been generated using Isis'
- <a href="http://isis.apache.org/getting-started/simple-archetype.html">simple</a> archetype,
- which configures Isis' most commonly used components as part of a very simple and purposefully minimal
- application.
+ <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype,
+ which configures Isis to run a very simple and purposefully minimal application.
<p>
The app itself consists of a single domain class,
- <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank"><tt>SimpleObject</tt></a>,
- along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank"><tt>SimpleObjects</tt></a>.
+ <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObject.java" target="_blank"><tt>SimpleObject</tt></a>,
+ along with an equally simple (factory/repository) domain service, <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java" target="_blank"><tt>SimpleObjects</tt></a>.
</p>
<p>
Alternatively, if you'd like to start from a richer starting point, you might want to use the
- <a href="http://isis.apache.org/getting-started/quickstart-archetype.html">quickstart</a> archetype, which
- generates a straightforward "todo" app.
+ <a href="http://isis.apache.org/intro/getting-started/todoapp-archetype.html" target="_blank">TodoApp</a> archetype.
</p>
<p>
- The Isis components that are configured in this app are:
- </p>
-
- <table>
- <tr>
- <th>Component</th>
- <th>Access URL</th>
- <th>Description</th>
- <th>Further info on the Isis website</th>
- </tr>
- <tr>
- <td>Wicket Viewer</td>
- <td><a href="wicket/">wicket/</a></td>
- <td>Provides a generic UI for end-users, built with <a href="http://wicket.apache.org">Apache Wicket</a>™</td>
- <td><a href="http://isis.apache.org/components/viewers/wicket/about.html">wicket viewer</a></td>
- </tr>
- <tr>
- <td>RestfulObjects Viewer</td>
- <td><a href="restful/">restful/</a></td>
- <td>Provides a RESTful API conformant with the <a href="http://restfulobjects.org">Restful Objects</a> spec</td>
- <td><a href="http://isis.apache.org/components/viewers/restfulobjects/about.html">restfulobjects viewer</a></td>
- </tr>
- <tr>
- <td>JDO Object Store</td>
- <td>n/a</td>
- <td>Persists objects using JDO/DataNucleus; configured to use HSQLDB in-memory database</td>
- <td><a href="http://isis.apache.org/components/objectstores/jdo/about.html">jdo objectstore</a></td>
- </tr>
- <tr>
- <td>Shiro Security</td>
- <td>n/a</td>
- <td>Provides authentication and authorization, using <a href="http://shiro.apache.org">Apache Shiro</a>™</td>
- <td><a href="http://isis.apache.org/components/security/shiro/about.html">shiro security</a></td>
- </tr>
- </table>
-
- <p>
The default user/password is <b><i>sven/pass</i></b> (as configured in the
- <a href="https://github.com/apache/isis/blob/master/example/application/simple%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/shiro.ini">shiro.ini</a> file).
+ <a href="https://github.com/apache/isis/blob/master/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
</p>
</div>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-jrebel.launch
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-jrebel.launch b/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-jrebel.launch
index 39cabb7..14ac1bf 100644
--- a/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-jrebel.launch
+++ b/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-jrebel.launch
@@ -18,7 +18,7 @@
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.WebServer"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--port 8080 --type SERVER_PROTOTYPE"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="quickstart_wicket_restful_jdo-webapp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="todoapp-webapp"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="${jrebel_args} -Drebel.log=false -Drebel.check_class_hash=true -Drebel.packages_exclude=org.apache.isis -Dproject.root=${project_loc}/.. -Dtarget.dir=target-ide -Drebel.plugins=C:/github/danhaywood/isis-jrebel-plugin/target/danhaywood-isis-jrebel-plugin-1.0.0-SNAPSHOT.jar -Disis-jrebel-plugin.packagePrefix=dom.todo,org.apache.isis.objectstore.jdo.applib -Disis-jrebel-plugin.loggingLevel=warn -XX:MaxPermSize=128m"/>
</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-with-fixtures.launch
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-with-fixtures.launch b/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-with-fixtures.launch
index f46805b..2e272aa 100644
--- a/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-with-fixtures.launch
+++ b/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE-with-fixtures.launch
@@ -15,6 +15,6 @@
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.WebServer"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--port 8080 -D isis.persistor.datanucleus.install-fixtures=true --type SERVER_PROTOTYPE"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="quickstart_wicket_restful_jdo-webapp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="todoapp-webapp"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE.launch
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE.launch b/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE.launch
index bc280d9..5870cb4 100644
--- a/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE.launch
+++ b/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-PROTOTYPE.launch
@@ -18,6 +18,6 @@
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.WebServer"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--port 8080 --type SERVER_PROTOTYPE"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="quickstart_wicket_restful_jdo-webapp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="todoapp-webapp"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-SERVER.launch
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-SERVER.launch b/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-SERVER.launch
index 721d7b7..a4ad877 100644
--- a/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-SERVER.launch
+++ b/example/application/todoapp/webapp/ide/eclipse/launch/ToDoApp-SERVER.launch
@@ -18,6 +18,6 @@
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.WebServer"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--port 8080 --type SERVER"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="quickstart_wicket_restful_jdo-webapp"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="todoapp-webapp"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
</launchConfiguration>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html b/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html
index 8cd6f04..1dbee0b 100644
--- a/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html
+++ b/example/application/todoapp/webapp/src/main/resources/webapp/welcome.html
@@ -18,16 +18,17 @@
under the License.
-->
<p class="intro">
- <a href="http://isis.apache.org">Apache Isis</a>™ is a framework to let you rapidly develop
+ <a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a platform to let you rapidly develop
domain-driven apps in Java.
<br/>
<br/>
This app has been generated using Isis'
- <a href="http://isis.apache.org/getting-started/quickstart-archetype.html">quickstart</a> archetype,
+ <a href="http://isis.apache.org/intro/getting-started/todoapp-archetype.html" target="_blank">TodoApp</a> archetype,
which configures Isis' most commonly used components in a straightforward "todo" app.
<br/>
<br/>
- The core domain functionality class is provided by the <a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank">ToDoItem</a> domain class.
+ The core functionality of the app is provided by the
+ <a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank">ToDoItem</a> domain class.
Supporting services provide additional capabilities.
<br/>
<br/>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/example/application/todoapp/webapp/src/main/webapp/about/index.html
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/webapp/about/index.html b/example/application/todoapp/webapp/src/main/webapp/about/index.html
index 6322108..f248f38 100644
--- a/example/application/todoapp/webapp/src/main/webapp/about/index.html
+++ b/example/application/todoapp/webapp/src/main/webapp/about/index.html
@@ -20,7 +20,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Apache Isis™ QuickStart (Wicket/Restful/JDO/Shiro) App</title>
+ <title>Apache Isis™ TodoApp</title>
<style type="text/css">
body {
@@ -57,10 +57,10 @@ th, td {
<img alt="Isis Logo" src="about/images/isis-logo.png" />
<p>
- <a href="http://isis.apache.org">Apache Isis</a>™ is a framework to let you rapidly develop
+ <a href="http://isis.apache.org" target="_blank">Apache Isis</a>™ is a framework to let you rapidly develop
domain-driven apps in Java. This app has been generated using Isis'
- <a href="http://isis.apache.org/getting-started/quickstart-archetype.html">quickstart</a> archetype,
- which configures Isis' most commonly used components as part of a (quite feature rich) "todo" app.
+ <a href="http://isis.apache.org/intro/getting-started/todoapp-archetype.html" target="_blank">TodoApp</a> archetype,
+ which configures Isis to run a (quite feature rich) "todo" app.
<p>
The app itself consists of a single domain class, <tt>ToDoItem</tt>, along with a number of supporting
@@ -70,49 +70,12 @@ th, td {
<p>
To build your own app, while you could start with this todo app and remove/rename as required, you are
probably better off using the extremely minimal
- <a href="http://isis.apache.org/getting-started/simple-archetype.html">simple</a> archetype.
+ <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype.
</p>
-
- <p>
- The Isis components that are configured in this app are:
- </p>
-
- <table>
- <tr>
- <th>Component</th>
- <th>Access URL</th>
- <th>Description</th>
- <th>Further info on the Isis website</th>
- </tr>
- <tr>
- <td>Wicket Viewer</td>
- <td><a href="wicket/">wicket/</a></td>
- <td>Provides a generic UI for end-users, built with <a href="http://wicket.apache.org">Apache Wicket</a>™</td>
- <td><a href="http://isis.apache.org/components/viewers/wicket/about.html">wicket viewer</a></td>
- </tr>
- <tr>
- <td>RestfulObjects Viewer</td>
- <td><a href="restful/">restful/</a></td>
- <td>Provides a RESTful API conformant with the <a href="http://restfulobjects.org">Restful Objects</a> spec</td>
- <td><a href="http://isis.apache.org/components/viewers/restfulobjects/about.html">restfulobjects viewer</a></td>
- </tr>
- <tr>
- <td>JDO Object Store</td>
- <td>n/a</td>
- <td>Persists objects using JDO/DataNucleus; configured to use HSQLDB in-memory database</td>
- <td><a href="http://isis.apache.org/components/objectstores/jdo/about.html">jdo objectstore</a></td>
- </tr>
- <tr>
- <td>Shiro Security</td>
- <td>n/a</td>
- <td>Provides authentication and authorization, using <a href="http://shiro.apache.org">Apache Shiro</a>™</td>
- <td><a href="http://isis.apache.org/components/security/shiro/about.html">shiro security</a></td>
- </tr>
- </table>
<p>
The default user/password is <b><i>sven/pass</i></b> (as configured in the
- <a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/shiro.ini">shiro.ini</a> file).
+ <a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
</p>
<h2>App contents</h2>
@@ -121,37 +84,37 @@ th, td {
<ul>
<li>Domain classes (todo functionality) (in <tt>dom</tt> module)
<ul>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java"><tt>ToDoItem</tt></a> domain entity
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank"><tt>ToDoItem</tt></a> domain entity
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java"><tt>ToDoItems</tt></a> domain service (repository/factory)
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java" target="_blank"><tt>ToDoItems</tt></a> domain service (repository/factory)
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/app/ToDoItemAnalysis.java"><tt>ToDoItemAnalysis</tt></a> application service analysing todo items
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/app/ToDoItemAnalysis.java" target="_blank"><tt>ToDoItemAnalysis</tt></a> application service analysing todo items
</li>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/app/ToDoAppDashboard.java"><tt>ToDoAppDashboard</tt></a> dashboard application service
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/dom/src/main/java/app/ToDoAppDashboard.java" target="_blank"><tt>ToDoAppDashboard</tt></a> dashboard application service
</li>
</ul>
</li>
<li>Fixture scripts (in <tt>fixture</tt> module)
<ul>
- <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java"><tt>ToDoItemsFixtureService</tt></a> domain service to install fixtures at run-time
+ <li><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java" target="_blank"><tt>ToDoItemsFixtureService</tt></a> domain service to install fixtures at run-time
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml">WEB-INF/web.xml</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml" target="_blank">WEB-INF/web.xml</a></tt> (in <tt>webapp</tt> module)
<ul>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L98">ResourceCachingFilter</a></tt> and <tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L134">ResourceServlet</a></tt> - filter and servlet for serving up static resources.
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L98" target="_blank">ResourceCachingFilter</a></tt> and <tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L134" target="_blank">ResourceServlet</a></tt> - filter and servlet for serving up static resources.
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L174">WicketFilter</a></tt> - filter for the wicket application, mapped to <tt>/wicket/*</tt>
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L174" target="_blank">WicketFilter</a></tt> - filter for the wicket application, mapped to <tt>/wicket/*</tt>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L223">ResteasyBootstrap</a></tt>,
- <tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L240">IsisSessionFilterForRestfulObjects</a></tt>,
- <tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L271">RestfulObjectsRestEasyDispatcher</a></tt> - listeners, filters and servlets to bootstrap and map restful objects viewer to <tt>/restful/*</tt>.
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L223" target="_blank">ResteasyBootstrap</a></tt>,
+ <tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L240" target="_blank">IsisSessionFilterForRestfulObjects</a></tt>,
+ <tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L271" target="_blank">RestfulObjectsRestEasyDispatcher</a></tt> - listeners, filters and servlets to bootstrap and map restful objects viewer to <tt>/restful/*</tt>.
</li>
- <li>commented out <tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml#L208">IsisWebAppBootstrapper</a></tt> listener; this is NOT required unless wicket viewer config is removed
+ <li>commented out <tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml#L208" target="_blank">IsisWebAppBootstrapper</a></tt> listener; this is NOT required unless wicket viewer config is removed
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties">WEB-INF/isis.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties" target="_blank">WEB-INF/isis.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li><tt>isis.services</tt> - specifies the two domain services described above (<tt>ToDoItems</tt> and <tt>ToDoItemsFixtureService</tt>), appearing on the menu bar in the Wicket viewer,
along with a number of hidden framework-provided domain services demonstrating Isis' support for publishing, auditing and customizable error handling
@@ -162,19 +125,19 @@ th, td {
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties">WEB-INF/persistor_datanucleus.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties" target="_blank">WEB-INF/persistor_datanucleus.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>configuration for JDO object store
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor.properties">WEB-INF/persistor.properties</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/persistor.properties" target="_blank">WEB-INF/persistor.properties</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>JDBC URL for JDO object store
</li>
</ul>
</li>
- <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/shiro.ini">WEB-INF/shiro.ini</a></tt> (in <tt>webapp</tt> module)
+ <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todoapp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">WEB-INF/shiro.ini</a></tt> (in <tt>webapp</tt> module)
<ul>
<li>configuration for Shiro security
</li>
http://git-wip-us.apache.org/repos/asf/isis/blob/3fca9990/scripts/recreate-archetype.sh
----------------------------------------------------------------------
diff --git a/scripts/recreate-archetype.sh b/scripts/recreate-archetype.sh
new file mode 100644
index 0000000..5538198
--- /dev/null
+++ b/scripts/recreate-archetype.sh
@@ -0,0 +1,70 @@
+export ISISART=$(basename $(pwd))-archetype
+
+TOFIX=""
+
+env | grep ISISTMP >/dev/null
+if [ $? -ne 0 ]; then
+ echo "\$ISISTMP not set!"
+ TOFIX="$TOFIX\nexport ISISTMP=/c/tmp"
+fi
+
+env | grep ISISDEV >/dev/null
+if [ $? -ne 0 ]; then
+ echo "\$ISISDEV not set!"
+ TOFIX="$TOFIX\nexport ISISDEV=1.7.0-SNAPSHOT"
+fi
+
+env | grep ISISREL >/dev/null
+if [ $? -ne 0 ]; then
+ echo "\$ISISREL not set!"
+ TOFIX="$TOFIX\nexport ISISDEV=1.6.0"
+fi
+
+env | grep ISISRC >/dev/null
+if [ $? -ne 0 ]; then
+ echo "\$ISISRC not set!"
+ TOFIX="$TOFIX\nexport ISISRC=RC1"
+fi
+
+env | grep ISISPAR >/dev/null
+if [ $? -ne 0 ]; then
+ echo "\$ISISPAR not set! (Isis parent release, usually same as ISISREL)"
+ TOFIX="$TOFIX\nexport ISISPAR=$ISISREL"
+fi
+
+if [ "$TOFIX" != "" ]; then
+ echo -e $TOFIX
+ exit 1
+fi
+
+export ISISCPT=$(echo $ISISART | cut -d- -f2)
+export ISISCPN=$(echo $ISISART | cut -d- -f1)
+
+#
+#
+#
+env | grep ISIS | sort
+
+
+echo "mvn clean ..."
+mvn clean
+
+echo "removing other non-source files ..."
+for a in .project .classpath .settings bin .idea target-ide; do /bin/find . -name $a -exec rm -r {} \;; done
+/bin/find . -name "*.iml" -exec rm {} \;
+/bin/find . -name "*.log" -exec rm {} \;
+/bin/find . -name "pom.xml.*" -exec rm {} \;
+
+echo "mvn archetype:create-from-project ..."
+mvn archetype:create-from-project
+
+echo "groovy script to update archetypes ..."
+groovy ../../../scripts/updateGeneratedArchetypeSources.groovy -n $ISISCPN -v $ISISPAR
+
+echo "deleting old archetype ..."
+git rm -rf ../../archetype/$ISISCPN
+rm -rf ../../archetype/$ISISCPN
+
+echo "adding new archetype ..."
+mv target/generated-sources/archetype ../../archetype/$ISISCPN
+git add ../../archetype/$ISISCPN
[02/39] git commit: ISIS-839: core updates,
moving BackgroundServiceDefault from isis-core-runtime to
isis-module-background
Posted by da...@apache.org.
ISIS-839: core updates, moving BackgroundServiceDefault from isis-core-runtime to isis-module-background
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/0ddb462c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/0ddb462c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/0ddb462c
Branch: refs/heads/master
Commit: 0ddb462cf8c8fb55000577d6604e8365af5414bf
Parents: 38f69b8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 21 11:08:43 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 21 11:08:43 2014 +0100
----------------------------------------------------------------------
core/module-background/pom.xml | 6 +
.../background/BackgroundCommandExecution.java | 171 +++++++++++
.../background/BackgroundServiceDefault.java | 287 +++++++++++++++++++
core/module-command-jdo/pom.xml | 10 +-
...xecutionFromBackgroundCommandServiceJdo.java | 3 +
.../background/BackgroundCommandExecution.java | 171 -----------
.../background/BackgroundServiceDefault.java | 286 ------------------
7 files changed, 476 insertions(+), 458 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/0ddb462c/core/module-background/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-background/pom.xml b/core/module-background/pom.xml
index 2e3d055..0a18d07 100644
--- a/core/module-background/pom.xml
+++ b/core/module-background/pom.xml
@@ -52,6 +52,12 @@
<artifactId>isis-core-unittestsupport</artifactId>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-runtime</artifactId>
+ </dependency>
+
</dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/0ddb462c/core/module-background/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
----------------------------------------------------------------------
diff --git a/core/module-background/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java b/core/module-background/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
new file mode 100644
index 0000000..e2d30c8
--- /dev/null
+++ b/core/module-background/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
@@ -0,0 +1,171 @@
+/**
+ * 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.services.background;
+
+import java.util.List;
+import com.google.common.base.Throwables;
+import com.google.common.collect.Lists;
+import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.applib.services.background.ActionInvocationMemento;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.command.Command.Executor;
+import org.apache.isis.applib.services.command.CommandContext;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.Contributed;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.facets.actions.interaction.CommandUtil;
+import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
+import org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+import org.apache.isis.core.runtime.system.transaction.TransactionalClosureAbstract;
+
+/**
+ * Intended to be used as a base class for executing queued up {@link Command background action}s.
+ *
+ * <p>
+ * This implementation uses the {@link #findBackgroundCommandsToExecute() hook method} so that it is
+ * independent of the location where the actions have actually been persisted to.
+ */
+public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemplate {
+
+ private final MementoServiceDefault mementoService;
+
+ public BackgroundCommandExecution() {
+ // same as configured by BackgroundServiceDefault
+ mementoService = new MementoServiceDefault().withNoEncoding();
+ }
+
+ // //////////////////////////////////////
+
+
+ protected void doExecute(Object context) {
+
+ final PersistenceSession persistenceSession = getPersistenceSession();
+ final IsisTransactionManager transactionManager = getTransactionManager(persistenceSession);
+ final List<Command> commands = Lists.newArrayList();
+ transactionManager.executeWithinTransaction(new TransactionalClosureAbstract() {
+ @Override
+ public void execute() {
+ commands.addAll(findBackgroundCommandsToExecute());
+ }
+ });
+
+ for (final Command command : commands) {
+ execute(transactionManager, command);
+ }
+ }
+
+ /**
+ * Mandatory hook method
+ */
+ protected abstract List<? extends Command> findBackgroundCommandsToExecute();
+
+ // //////////////////////////////////////
+
+
+ private void execute(final IsisTransactionManager transactionManager, final Command command) {
+ transactionManager.executeWithinTransaction(new TransactionalClosureAbstract() {
+ @Override
+ public void execute() {
+ commandContext.setCommand(command);
+ try {
+
+ command.setStartedAt(Clock.getTimeAsJavaSqlTimestamp());
+ command.setExecutor(Executor.BACKGROUND);
+
+ final String memento = command.getMemento();
+ final ActionInvocationMemento aim = new ActionInvocationMemento(mementoService, memento);
+
+ final String actionId = aim.getActionId();
+
+ final Bookmark targetBookmark = aim.getTarget();
+ final Object targetObject = bookmarkService.lookup(targetBookmark);
+
+ final ObjectAdapter targetAdapter = adapterFor(targetObject);
+ final ObjectSpecification specification = targetAdapter.getSpecification();
+
+ final ObjectAction objectAction = findAction(specification, actionId);
+ if(objectAction == null) {
+ throw new Exception("Unknown action '" + actionId + "'");
+ }
+
+ final ObjectAdapter[] argAdapters = argAdaptersFor(aim);
+ final ObjectAdapter resultAdapter = objectAction.execute(targetAdapter, argAdapters);
+ if(resultAdapter != null) {
+ Bookmark resultBookmark = CommandUtil.bookmarkFor(resultAdapter);
+ command.setResult(resultBookmark);
+ }
+
+ } catch (Exception e) {
+ command.setException(Throwables.getStackTraceAsString(e));
+ } finally {
+ command.setCompletedAt(Clock.getTimeAsJavaSqlTimestamp());
+ }
+ }
+ });
+ }
+
+ private ObjectAction findAction(final ObjectSpecification specification, final String actionId) {
+ final List<ObjectAction> objectActions = specification.getObjectActions(Contributed.INCLUDED);
+ for (final ObjectAction objectAction : objectActions) {
+ if(objectAction.getIdentifier().toClassAndNameIdentityString().equals(actionId)) {
+ return objectAction;
+ }
+ }
+ return null;
+ }
+
+ private ObjectAdapter[] argAdaptersFor(final ActionInvocationMemento aim) throws ClassNotFoundException {
+ final int numArgs = aim.getNumArgs();
+ final List<ObjectAdapter> argumentAdapters = Lists.newArrayList();
+ for(int i=0; i<numArgs; i++) {
+ final ObjectAdapter argAdapter = argAdapterFor(aim, i);
+ argumentAdapters.add(argAdapter);
+ }
+ return argumentAdapters.toArray(new ObjectAdapter[]{});
+ }
+
+ private ObjectAdapter argAdapterFor(final ActionInvocationMemento aim, int num) throws ClassNotFoundException {
+ final Class<?> argType = aim.getArgType(num);
+ final Object arg = aim.getArg(num, argType);
+ if(arg == null) {
+ return null;
+ }
+ if(Bookmark.class != argType) {
+ return adapterFor(arg);
+ } else {
+ final Bookmark argBookmark = (Bookmark)arg;
+ final RootOid rootOid = RootOidDefault.create(argBookmark);
+ return adapterFor(rootOid);
+ }
+ }
+
+
+ // //////////////////////////////////////
+
+ @javax.inject.Inject
+ private BookmarkService bookmarkService;
+
+ @javax.inject.Inject
+ private CommandContext commandContext;
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/0ddb462c/core/module-background/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/module-background/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java b/core/module-background/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
new file mode 100644
index 0000000..01bc347
--- /dev/null
+++ b/core/module-background/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
@@ -0,0 +1,287 @@
+/**
+ * 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.services.background;
+
+import javassist.util.proxy.MethodFilter;
+import javassist.util.proxy.MethodHandler;
+import javassist.util.proxy.ProxyFactory;
+import javassist.util.proxy.ProxyObject;
+
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.PostConstruct;
+import com.google.common.collect.Lists;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.background.ActionInvocationMemento;
+import org.apache.isis.applib.services.background.BackgroundCommandService;
+import org.apache.isis.applib.services.background.BackgroundService;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.command.CommandContext;
+import org.apache.isis.core.commons.ensure.Ensure;
+import org.apache.isis.core.commons.exceptions.IsisException;
+import org.apache.isis.core.commons.lang.ArrayExtensions;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.specloader.classsubstitutor.JavassistEnhanced;
+import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
+import org.apache.isis.core.metamodel.facets.actions.interaction.CommandUtil;
+import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+
+import static org.hamcrest.CoreMatchers.*;
+
+/**
+ * Depends on an implementation of {@link org.apache.isis.applib.services.background.BackgroundCommandService} to
+ * be configured.
+ */
+@DomainService
+public class BackgroundServiceDefault implements BackgroundService {
+
+ private final MementoServiceDefault mementoService;
+
+ public BackgroundServiceDefault() {
+ this(new MementoServiceDefault());
+ }
+
+ BackgroundServiceDefault(MementoServiceDefault mementoService) {
+ this.mementoService = mementoService.withNoEncoding();
+ }
+
+ // //////////////////////////////////////
+
+
+ @Programmatic
+ @PostConstruct
+ public void init(Map<String,String> props) {
+ ensureDependenciesInjected();
+ }
+
+ private void ensureDependenciesInjected() {
+ Ensure.ensureThatState(this.bookmarkService, is(not(nullValue())), "BookmarkService domain service must be configured");
+ Ensure.ensureThatState(this.backgroundCommandService, is(not(nullValue())), "BackgroundCommandService domain service must be configured");
+ Ensure.ensureThatState(this.commandContext, is(not(nullValue())), "CommandContext domain service must be configured");
+ }
+
+
+ private ObjectSpecificationDefault getJavaSpecificationOfOwningClass(final Method method) {
+ return getJavaSpecification(method.getDeclaringClass());
+ }
+
+ private ObjectSpecificationDefault getJavaSpecification(final Class<?> cls) {
+ final ObjectSpecification objectSpec = getSpecification(cls);
+ if (!(objectSpec instanceof ObjectSpecificationDefault)) {
+ throw new UnsupportedOperationException(
+ "Only Java is supported "
+ + "(specification is '" + objectSpec.getClass().getCanonicalName() + "')");
+ }
+ return (ObjectSpecificationDefault) objectSpec;
+ }
+
+ private ObjectSpecification getSpecification(final Class<?> type) {
+ return getSpecificationLoader().loadSpecification(type);
+ }
+
+
+ // //////////////////////////////////////
+
+ @Programmatic
+ @Override
+ public <T> T execute(final T domainObject) {
+ final Class<? extends Object> cls = domainObject.getClass();
+ final MethodHandler methodHandler = newMethodHandler(domainObject);
+ return newProxy(cls, methodHandler);
+ }
+
+ @SuppressWarnings("unchecked")
+ private <T> T newProxy(Class<? extends Object> cls, MethodHandler methodHandler) {
+ final ProxyFactory proxyFactory = new ProxyFactory();
+ proxyFactory.setSuperclass(cls);
+ proxyFactory.setInterfaces(ArrayExtensions.combine(cls.getInterfaces(), new Class<?>[] { JavassistEnhanced.class }));
+
+ proxyFactory.setFilter(new MethodFilter() {
+ @Override
+ public boolean isHandled(final Method m) {
+ // ignore finalize()
+ return !m.getName().equals("finalize");
+ }
+ });
+
+ final Class<T> proxySubclass = proxyFactory.createClass();
+ try {
+ final T newInstance = proxySubclass.newInstance();
+ final ProxyObject proxyObject = (ProxyObject) newInstance;
+ proxyObject.setHandler(methodHandler);
+
+ return newInstance;
+ } catch (final InstantiationException e) {
+ throw new IsisException(e);
+ } catch (final IllegalAccessException e) {
+ throw new IsisException(e);
+ }
+ }
+
+ private <T> MethodHandler newMethodHandler(final T domainObject) {
+ return new MethodHandler() {
+ @Override
+ public Object invoke(final Object proxied, final Method proxyMethod, final Method proxiedMethod, final Object[] args) throws Throwable {
+
+ final boolean inheritedFromObject = proxyMethod.getDeclaringClass().equals(Object.class);
+ if(inheritedFromObject) {
+ return proxyMethod.invoke(domainObject, args);
+ }
+
+ final ObjectAdapter targetAdapter = getAdapterManager().adapterFor(domainObject);
+ final ObjectSpecificationDefault targetObjSpec = getJavaSpecificationOfOwningClass(proxyMethod);
+ final ObjectMember member = targetObjSpec.getMember(proxyMethod);
+
+ if(member == null) {
+ return proxyMethod.invoke(domainObject, args);
+ }
+
+ if(!(member instanceof ObjectAction)) {
+ throw new UnsupportedOperationException(
+ "Only actions can be executed in the background "
+ + "(method " + proxiedMethod.getName() + " represents a " + member.getFeatureType().name() + "')");
+ }
+
+ final ObjectAction action = (ObjectAction) member;
+
+ final String actionIdentifier = CommandUtil.actionIdentifierFor(action);
+ final String targetClassName = CommandUtil.targetClassNameFor(targetAdapter);
+ final String targetActionName = CommandUtil.targetActionNameFor(action);
+ final String targetArgs = CommandUtil.argDescriptionFor(action, adaptersFor(args));
+
+ final Bookmark domainObjectBookmark = bookmarkService.bookmarkFor(domainObject);
+
+ final List<Class<?>> argTypes = Lists.newArrayList();
+ final List<Object> argObjs = Lists.newArrayList();
+ CommandUtil.buildMementoArgLists(mementoService, bookmarkService, proxiedMethod, args, argTypes, argObjs);
+
+ final Command command = commandContext.getCommand();
+
+ final ActionInvocationMemento aim =
+ new ActionInvocationMemento(mementoService,
+ actionIdentifier,
+ domainObjectBookmark,
+ argTypes,
+ argObjs);
+
+ backgroundCommandService.schedule(aim, command, targetClassName, targetActionName, targetArgs);
+
+ return null;
+ }
+
+ ObjectAdapter[] adaptersFor(final Object[] args) {
+ final AdapterManager adapterManager = getAdapterManager();
+ return CommandUtil.adaptersFor(args, adapterManager);
+ }
+
+ };
+ }
+
+ @Override
+ public ActionInvocationMemento asActionInvocationMemento(Method method, Object domainObject, Object[] args) {
+
+ final ObjectSpecificationDefault targetObjSpec = getJavaSpecificationOfOwningClass(method);
+ final ObjectMember member = targetObjSpec.getMember(method);
+ if(member == null) {
+ return null;
+ }
+ if(!(member instanceof ObjectAction)) {
+ return null;
+ }
+
+ final ObjectAction action = (ObjectAction) member;
+ final String actionIdentifier = CommandUtil.actionIdentifierFor(action);
+
+ final Bookmark domainObjectBookmark = bookmarkService.bookmarkFor(domainObject);
+
+ final List<Class<?>> argTypes = Lists.newArrayList();
+ final List<Object> argObjs = Lists.newArrayList();
+ CommandUtil.buildMementoArgLists(mementoService, bookmarkService, method, args, argTypes, argObjs);
+
+ final ActionInvocationMemento aim =
+ new ActionInvocationMemento(mementoService,
+ actionIdentifier,
+ domainObjectBookmark,
+ argTypes,
+ argObjs);
+
+ return aim;
+ }
+
+
+ /**
+ * Not API
+ */
+ ActionInvocationMemento newActionInvocationMemento(String mementoStr) {
+ return new ActionInvocationMemento(mementoService, mementoStr);
+ }
+
+
+ // //////////////////////////////////////
+
+ private BackgroundCommandService backgroundCommandService;
+ /**
+ * Mandatory service; must be configured.
+ */
+ public void injectBackgroundCommandService(final BackgroundCommandService backgroundCommandService) {
+ this.backgroundCommandService = backgroundCommandService;
+ }
+
+ private BookmarkService bookmarkService;
+ /**
+ * Mandatory service (but {@link org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceDefault}
+ * implementation is part of core and annotated with {@link org.apache.isis.applib.annotation.DomainService},
+ * so guaranteed to be available).
+ */
+ public void injectBookmarkService(BookmarkService bookmarkService) {
+ this.bookmarkService = bookmarkService;
+ }
+
+ private CommandContext commandContext;
+ /**
+ * Mandatory service (but {@link org.apache.isis.applib.services.command.CommandContext} implementation is part of
+ * core and annotated with {@link org.apache.isis.applib.annotation.DomainService}, so guaranteed to be available).
+ */
+ public void injectCommandContext(final CommandContext commandContext) {
+ this.commandContext = commandContext;
+ }
+
+
+
+ // //////////////////////////////////////
+
+ protected SpecificationLoaderSpi getSpecificationLoader() {
+ return IsisContext.getSpecificationLoader();
+ }
+
+ protected AdapterManager getAdapterManager() {
+ return IsisContext.getPersistenceSession().getAdapterManager();
+ }
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/0ddb462c/core/module-command-jdo/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-command-jdo/pom.xml b/core/module-command-jdo/pom.xml
index 5a1db97..7fa3db8 100644
--- a/core/module-command-jdo/pom.xml
+++ b/core/module-command-jdo/pom.xml
@@ -149,6 +149,14 @@
<artifactId>datanucleus-jodatime</artifactId>
</dependency>
- </dependencies>
+
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-background</artifactId>
+ <!-- optional because may not want to use BackgroundCommandExecutionFromBackgroundCommandServiceJdo -->
+ <optional>true</optional>
+ </dependency>
+
+ </dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/0ddb462c/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/service/BackgroundCommandExecutionFromBackgroundCommandServiceJdo.java
----------------------------------------------------------------------
diff --git a/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/service/BackgroundCommandExecutionFromBackgroundCommandServiceJdo.java b/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/service/BackgroundCommandExecutionFromBackgroundCommandServiceJdo.java
index 0e1e42c..9c22561 100644
--- a/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/service/BackgroundCommandExecutionFromBackgroundCommandServiceJdo.java
+++ b/core/module-command-jdo/src/main/java/org/apache/isis/objectstore/jdo/service/BackgroundCommandExecutionFromBackgroundCommandServiceJdo.java
@@ -28,6 +28,9 @@ import org.apache.isis.core.runtime.services.background.BackgroundCommandExecuti
import org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoRepository;
import org.apache.isis.objectstore.jdo.applib.service.command.CommandJdo;
+/**
+ * If used, ensure that <code>org.apache.isis.module:isis-module-background</code> is also included on classpath.
+ */
public final class BackgroundCommandExecutionFromBackgroundCommandServiceJdo extends BackgroundCommandExecution {
@SuppressWarnings("unused")
http://git-wip-us.apache.org/repos/asf/isis/blob/0ddb462c/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
deleted file mode 100644
index e2d30c8..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
+++ /dev/null
@@ -1,171 +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.services.background;
-
-import java.util.List;
-import com.google.common.base.Throwables;
-import com.google.common.collect.Lists;
-import org.apache.isis.applib.clock.Clock;
-import org.apache.isis.applib.services.background.ActionInvocationMemento;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.Command.Executor;
-import org.apache.isis.applib.services.command.CommandContext;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.Contributed;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.facets.actions.interaction.CommandUtil;
-import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
-import org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.core.runtime.system.transaction.TransactionalClosureAbstract;
-
-/**
- * Intended to be used as a base class for executing queued up {@link Command background action}s.
- *
- * <p>
- * This implementation uses the {@link #findBackgroundCommandsToExecute() hook method} so that it is
- * independent of the location where the actions have actually been persisted to.
- */
-public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemplate {
-
- private final MementoServiceDefault mementoService;
-
- public BackgroundCommandExecution() {
- // same as configured by BackgroundServiceDefault
- mementoService = new MementoServiceDefault().withNoEncoding();
- }
-
- // //////////////////////////////////////
-
-
- protected void doExecute(Object context) {
-
- final PersistenceSession persistenceSession = getPersistenceSession();
- final IsisTransactionManager transactionManager = getTransactionManager(persistenceSession);
- final List<Command> commands = Lists.newArrayList();
- transactionManager.executeWithinTransaction(new TransactionalClosureAbstract() {
- @Override
- public void execute() {
- commands.addAll(findBackgroundCommandsToExecute());
- }
- });
-
- for (final Command command : commands) {
- execute(transactionManager, command);
- }
- }
-
- /**
- * Mandatory hook method
- */
- protected abstract List<? extends Command> findBackgroundCommandsToExecute();
-
- // //////////////////////////////////////
-
-
- private void execute(final IsisTransactionManager transactionManager, final Command command) {
- transactionManager.executeWithinTransaction(new TransactionalClosureAbstract() {
- @Override
- public void execute() {
- commandContext.setCommand(command);
- try {
-
- command.setStartedAt(Clock.getTimeAsJavaSqlTimestamp());
- command.setExecutor(Executor.BACKGROUND);
-
- final String memento = command.getMemento();
- final ActionInvocationMemento aim = new ActionInvocationMemento(mementoService, memento);
-
- final String actionId = aim.getActionId();
-
- final Bookmark targetBookmark = aim.getTarget();
- final Object targetObject = bookmarkService.lookup(targetBookmark);
-
- final ObjectAdapter targetAdapter = adapterFor(targetObject);
- final ObjectSpecification specification = targetAdapter.getSpecification();
-
- final ObjectAction objectAction = findAction(specification, actionId);
- if(objectAction == null) {
- throw new Exception("Unknown action '" + actionId + "'");
- }
-
- final ObjectAdapter[] argAdapters = argAdaptersFor(aim);
- final ObjectAdapter resultAdapter = objectAction.execute(targetAdapter, argAdapters);
- if(resultAdapter != null) {
- Bookmark resultBookmark = CommandUtil.bookmarkFor(resultAdapter);
- command.setResult(resultBookmark);
- }
-
- } catch (Exception e) {
- command.setException(Throwables.getStackTraceAsString(e));
- } finally {
- command.setCompletedAt(Clock.getTimeAsJavaSqlTimestamp());
- }
- }
- });
- }
-
- private ObjectAction findAction(final ObjectSpecification specification, final String actionId) {
- final List<ObjectAction> objectActions = specification.getObjectActions(Contributed.INCLUDED);
- for (final ObjectAction objectAction : objectActions) {
- if(objectAction.getIdentifier().toClassAndNameIdentityString().equals(actionId)) {
- return objectAction;
- }
- }
- return null;
- }
-
- private ObjectAdapter[] argAdaptersFor(final ActionInvocationMemento aim) throws ClassNotFoundException {
- final int numArgs = aim.getNumArgs();
- final List<ObjectAdapter> argumentAdapters = Lists.newArrayList();
- for(int i=0; i<numArgs; i++) {
- final ObjectAdapter argAdapter = argAdapterFor(aim, i);
- argumentAdapters.add(argAdapter);
- }
- return argumentAdapters.toArray(new ObjectAdapter[]{});
- }
-
- private ObjectAdapter argAdapterFor(final ActionInvocationMemento aim, int num) throws ClassNotFoundException {
- final Class<?> argType = aim.getArgType(num);
- final Object arg = aim.getArg(num, argType);
- if(arg == null) {
- return null;
- }
- if(Bookmark.class != argType) {
- return adapterFor(arg);
- } else {
- final Bookmark argBookmark = (Bookmark)arg;
- final RootOid rootOid = RootOidDefault.create(argBookmark);
- return adapterFor(rootOid);
- }
- }
-
-
- // //////////////////////////////////////
-
- @javax.inject.Inject
- private BookmarkService bookmarkService;
-
- @javax.inject.Inject
- private CommandContext commandContext;
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/0ddb462c/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
deleted file mode 100644
index d206410..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java
+++ /dev/null
@@ -1,286 +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.services.background;
-
-import javassist.util.proxy.MethodFilter;
-import javassist.util.proxy.MethodHandler;
-import javassist.util.proxy.ProxyFactory;
-import javassist.util.proxy.ProxyObject;
-
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.Map;
-import javax.annotation.PostConstruct;
-import com.google.common.collect.Lists;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.background.ActionInvocationMemento;
-import org.apache.isis.applib.services.background.BackgroundCommandService;
-import org.apache.isis.applib.services.background.BackgroundService;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.CommandContext;
-import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.lang.ArrayExtensions;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.specloader.classsubstitutor.JavassistEnhanced;
-import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.core.metamodel.facets.actions.interaction.CommandUtil;
-import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-import static org.hamcrest.CoreMatchers.*;
-
-/**
- * This is <i>not</i> annotated as an auto-discoverable {@link org.apache.isis.applib.annotation.DomainService} because
- * it has mandatory dependencies; specifically, an implementation of
- * {@link org.apache.isis.applib.services.background.BackgroundCommandService} must be configured.
- */
-public class BackgroundServiceDefault implements BackgroundService {
-
- private final MementoServiceDefault mementoService;
-
- public BackgroundServiceDefault() {
- this(new MementoServiceDefault());
- }
-
- BackgroundServiceDefault(MementoServiceDefault mementoService) {
- this.mementoService = mementoService.withNoEncoding();
- }
-
- // //////////////////////////////////////
-
-
- @Programmatic
- @PostConstruct
- public void init(Map<String,String> props) {
- ensureDependenciesInjected();
- }
-
- private void ensureDependenciesInjected() {
- Ensure.ensureThatState(this.bookmarkService, is(not(nullValue())), "BookmarkService domain service must be configured");
- Ensure.ensureThatState(this.backgroundCommandService, is(not(nullValue())), "BackgroundCommandService domain service must be configured");
- Ensure.ensureThatState(this.commandContext, is(not(nullValue())), "CommandContext domain service must be configured");
- }
-
-
- private ObjectSpecificationDefault getJavaSpecificationOfOwningClass(final Method method) {
- return getJavaSpecification(method.getDeclaringClass());
- }
-
- private ObjectSpecificationDefault getJavaSpecification(final Class<?> cls) {
- final ObjectSpecification objectSpec = getSpecification(cls);
- if (!(objectSpec instanceof ObjectSpecificationDefault)) {
- throw new UnsupportedOperationException(
- "Only Java is supported "
- + "(specification is '" + objectSpec.getClass().getCanonicalName() + "')");
- }
- return (ObjectSpecificationDefault) objectSpec;
- }
-
- private ObjectSpecification getSpecification(final Class<?> type) {
- return getSpecificationLoader().loadSpecification(type);
- }
-
-
- // //////////////////////////////////////
-
- @Programmatic
- @Override
- public <T> T execute(final T domainObject) {
- final Class<? extends Object> cls = domainObject.getClass();
- final MethodHandler methodHandler = newMethodHandler(domainObject);
- return newProxy(cls, methodHandler);
- }
-
- @SuppressWarnings("unchecked")
- private <T> T newProxy(Class<? extends Object> cls, MethodHandler methodHandler) {
- final ProxyFactory proxyFactory = new ProxyFactory();
- proxyFactory.setSuperclass(cls);
- proxyFactory.setInterfaces(ArrayExtensions.combine(cls.getInterfaces(), new Class<?>[] { JavassistEnhanced.class }));
-
- proxyFactory.setFilter(new MethodFilter() {
- @Override
- public boolean isHandled(final Method m) {
- // ignore finalize()
- return !m.getName().equals("finalize");
- }
- });
-
- final Class<T> proxySubclass = proxyFactory.createClass();
- try {
- final T newInstance = proxySubclass.newInstance();
- final ProxyObject proxyObject = (ProxyObject) newInstance;
- proxyObject.setHandler(methodHandler);
-
- return newInstance;
- } catch (final InstantiationException e) {
- throw new IsisException(e);
- } catch (final IllegalAccessException e) {
- throw new IsisException(e);
- }
- }
-
- private <T> MethodHandler newMethodHandler(final T domainObject) {
- return new MethodHandler() {
- @Override
- public Object invoke(final Object proxied, final Method proxyMethod, final Method proxiedMethod, final Object[] args) throws Throwable {
-
- final boolean inheritedFromObject = proxyMethod.getDeclaringClass().equals(Object.class);
- if(inheritedFromObject) {
- return proxyMethod.invoke(domainObject, args);
- }
-
- final ObjectAdapter targetAdapter = getAdapterManager().adapterFor(domainObject);
- final ObjectSpecificationDefault targetObjSpec = getJavaSpecificationOfOwningClass(proxyMethod);
- final ObjectMember member = targetObjSpec.getMember(proxyMethod);
-
- if(member == null) {
- return proxyMethod.invoke(domainObject, args);
- }
-
- if(!(member instanceof ObjectAction)) {
- throw new UnsupportedOperationException(
- "Only actions can be executed in the background "
- + "(method " + proxiedMethod.getName() + " represents a " + member.getFeatureType().name() + "')");
- }
-
- final ObjectAction action = (ObjectAction) member;
-
- final String actionIdentifier = CommandUtil.actionIdentifierFor(action);
- final String targetClassName = CommandUtil.targetClassNameFor(targetAdapter);
- final String targetActionName = CommandUtil.targetActionNameFor(action);
- final String targetArgs = CommandUtil.argDescriptionFor(action, adaptersFor(args));
-
- final Bookmark domainObjectBookmark = bookmarkService.bookmarkFor(domainObject);
-
- final List<Class<?>> argTypes = Lists.newArrayList();
- final List<Object> argObjs = Lists.newArrayList();
- CommandUtil.buildMementoArgLists(mementoService, bookmarkService, proxiedMethod, args, argTypes, argObjs);
-
- final Command command = commandContext.getCommand();
-
- final ActionInvocationMemento aim =
- new ActionInvocationMemento(mementoService,
- actionIdentifier,
- domainObjectBookmark,
- argTypes,
- argObjs);
-
- backgroundCommandService.schedule(aim, command, targetClassName, targetActionName, targetArgs);
-
- return null;
- }
-
- ObjectAdapter[] adaptersFor(final Object[] args) {
- final AdapterManager adapterManager = getAdapterManager();
- return CommandUtil.adaptersFor(args, adapterManager);
- }
-
- };
- }
-
- @Override
- public ActionInvocationMemento asActionInvocationMemento(Method method, Object domainObject, Object[] args) {
-
- final ObjectSpecificationDefault targetObjSpec = getJavaSpecificationOfOwningClass(method);
- final ObjectMember member = targetObjSpec.getMember(method);
- if(member == null) {
- return null;
- }
- if(!(member instanceof ObjectAction)) {
- return null;
- }
-
- final ObjectAction action = (ObjectAction) member;
- final String actionIdentifier = CommandUtil.actionIdentifierFor(action);
-
- final Bookmark domainObjectBookmark = bookmarkService.bookmarkFor(domainObject);
-
- final List<Class<?>> argTypes = Lists.newArrayList();
- final List<Object> argObjs = Lists.newArrayList();
- CommandUtil.buildMementoArgLists(mementoService, bookmarkService, method, args, argTypes, argObjs);
-
- final ActionInvocationMemento aim =
- new ActionInvocationMemento(mementoService,
- actionIdentifier,
- domainObjectBookmark,
- argTypes,
- argObjs);
-
- return aim;
- }
-
-
- /**
- * Not API
- */
- ActionInvocationMemento newActionInvocationMemento(String mementoStr) {
- return new ActionInvocationMemento(mementoService, mementoStr);
- }
-
-
- // //////////////////////////////////////
-
- private BackgroundCommandService backgroundCommandService;
- /**
- * Mandatory service; must be configured.
- */
- public void injectBackgroundCommandService(final BackgroundCommandService backgroundCommandService) {
- this.backgroundCommandService = backgroundCommandService;
- }
-
- private BookmarkService bookmarkService;
- /**
- * Mandatory service (but {@link org.apache.isis.core.metamodel.services.bookmarks.BookmarkServiceDefault}
- * implementation is part of core and annotated with {@link org.apache.isis.applib.annotation.DomainService},
- * so guaranteed to be available).
- */
- public void injectBookmarkService(BookmarkService bookmarkService) {
- this.bookmarkService = bookmarkService;
- }
-
- private CommandContext commandContext;
- /**
- * Mandatory service (but {@link org.apache.isis.applib.services.command.CommandContext} implementation is part of
- * core and annotated with {@link org.apache.isis.applib.annotation.DomainService}, so guaranteed to be available).
- */
- public void injectCommandContext(final CommandContext commandContext) {
- this.commandContext = commandContext;
- }
-
-
-
- // //////////////////////////////////////
-
- protected SpecificationLoaderSpi getSpecificationLoader() {
- return IsisContext.getSpecificationLoader();
- }
-
- protected AdapterManager getAdapterManager() {
- return IsisContext.getPersistenceSession().getAdapterManager();
- }
-
-
-
-}
[37/39] git commit: ISIS-839: updating STATUS for 1.6.0 release
Posted by da...@apache.org.
ISIS-839: updating STATUS for 1.6.0 release
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/15e4c14b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/15e4c14b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/15e4c14b
Branch: refs/heads/master
Commit: 15e4c14b17fd633305878633152659c1a7a1701d
Parents: e686321
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun Jul 20 15:35:24 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:35:58 2014 +0100
----------------------------------------------------------------------
STATUS | 5 +++++
1 file changed, 5 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/15e4c14b/STATUS
----------------------------------------------------------------------
diff --git a/STATUS b/STATUS
index 37b135e..aa4eea7 100644
--- a/STATUS
+++ b/STATUS
@@ -21,6 +21,11 @@ Description
TLP releases:
+ * isis-1.6.0 : 25 Jul 2014
+ * isis-viewer-wicket-1.6.0 : 25 Jul 2014
+ * todoapp-archetype-1.6.0 : 25 Jul 2014
+ * simpleapp-archetype-1.6.0 : 25 Jul 2014
+
* isis-1.5.0 : 08 Jun 2014
* isis-objectstore-jdo-1.5.0 : 08 Jun 2014
* isis-security-shiro-1.5.0 : 08 Jun 2014
[19/39] git commit: ISIS-839: recreate-archetype.sh script should
automatically commit changes.
Posted by da...@apache.org.
ISIS-839: recreate-archetype.sh script should automatically commit changes.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/1a459a58
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/1a459a58
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/1a459a58
Branch: refs/heads/master
Commit: 1a459a584e8f16503add8352d07ee8328d6a3256
Parents: 24aeeba
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 16:04:14 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 18:22:02 2014 +0100
----------------------------------------------------------------------
scripts/recreate-archetype.sh | 9 +++++++++
1 file changed, 9 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/1a459a58/scripts/recreate-archetype.sh
----------------------------------------------------------------------
diff --git a/scripts/recreate-archetype.sh b/scripts/recreate-archetype.sh
index 5538198..ea97270 100644
--- a/scripts/recreate-archetype.sh
+++ b/scripts/recreate-archetype.sh
@@ -1,3 +1,10 @@
+JIRA=$1
+
+if [ ! "$JIRA" ]; then
+ echo "usage: $(basename $0) ISIS-nnn"
+ exit 1
+fi
+
export ISISART=$(basename $(pwd))-archetype
TOFIX=""
@@ -68,3 +75,5 @@ rm -rf ../../archetype/$ISISCPN
echo "adding new archetype ..."
mv target/generated-sources/archetype ../../archetype/$ISISCPN
git add ../../archetype/$ISISCPN
+git commit -m "$JIRA: recreating $ISISCPN archetype"
+
[13/39] git commit: ISIS-833: reverting isis-module-wrapper ->
isis-core-wrapper.
Posted by da...@apache.org.
ISIS-833: reverting isis-module-wrapper -> isis-core-wrapper.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/dec67056
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/dec67056
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/dec67056
Branch: refs/heads/master
Commit: dec670567ce96fa96fe89c8111c6dbca35b3ed3b
Parents: 172d56a
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jul 24 17:23:03 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jul 24 17:23:03 2014 +0100
----------------------------------------------------------------------
.../applib/services/wrapper/WrapperFactory.java | 2 +-
core/integtestsupport/pom.xml | 4 +-
core/module-wrapper/pom.xml | 139 ----
.../core/wrapper/WrapperFactoryAbstract.java | 314 --------
.../isis/core/wrapper/WrapperFactoryCglib.java | 30 -
.../core/wrapper/WrapperFactoryDefault.java | 39 -
.../core/wrapper/WrapperFactoryJavassist.java | 30 -
.../dispatchers/InteractionEventDispatcher.java | 28 -
.../InteractionEventDispatcherTypeSafe.java | 34 -
.../AbstractCollectionInvocationHandler.java | 92 ---
.../handlers/CollectionInvocationHandler.java | 53 --
.../handlers/DelegatingInvocationHandler.java | 32 -
.../DelegatingInvocationHandlerDefault.java | 131 ----
.../handlers/DomainObjectInvocationHandler.java | 720 -------------------
.../wrapper/handlers/MapInvocationHandler.java | 48 --
.../wrapper/handlers/ProxyContextHandler.java | 84 ---
.../core/wrapper/internal/util/Constants.java | 52 --
.../internal/util/MethodPrefixFinder.java | 48 --
.../isis/core/wrapper/internal/util/Util.java | 53 --
.../core/wrapper/proxy/ProxyInstantiator.java | 26 -
.../proxy/ProxyInstantiatorForCglib.java | 101 ---
.../proxy/ProxyInstantiatorForJavassist.java | 77 --
.../wrapper/WrapperFactoryAbstractTest.java | 127 ----
...rapperFactoryAbstractTest_wrappedObject.java | 376 ----------
...oryAbstractTest_wrappedObject_transient.java | 257 -------
.../WrapperFactoryCglibTest_wrappedObject.java | 32 -
...actoryCglibTest_wrappedObject_transient.java | 34 -
...apperFactoryJavassistTest_wrappedObject.java | 32 -
...ryJavassistTest_wrappedObject_transient.java | 31 -
core/pom.xml | 12 +-
core/specsupport/pom.xml | 4 +-
core/wrapper/pom.xml | 138 ++++
.../core/wrapper/WrapperFactoryAbstract.java | 314 ++++++++
.../isis/core/wrapper/WrapperFactoryCglib.java | 30 +
.../core/wrapper/WrapperFactoryDefault.java | 39 +
.../core/wrapper/WrapperFactoryJavassist.java | 30 +
.../dispatchers/InteractionEventDispatcher.java | 28 +
.../InteractionEventDispatcherTypeSafe.java | 34 +
.../AbstractCollectionInvocationHandler.java | 92 +++
.../handlers/CollectionInvocationHandler.java | 53 ++
.../handlers/DelegatingInvocationHandler.java | 32 +
.../DelegatingInvocationHandlerDefault.java | 131 ++++
.../handlers/DomainObjectInvocationHandler.java | 720 +++++++++++++++++++
.../wrapper/handlers/MapInvocationHandler.java | 48 ++
.../wrapper/handlers/ProxyContextHandler.java | 84 +++
.../core/wrapper/internal/util/Constants.java | 52 ++
.../internal/util/MethodPrefixFinder.java | 48 ++
.../isis/core/wrapper/internal/util/Util.java | 53 ++
.../core/wrapper/proxy/ProxyInstantiator.java | 26 +
.../proxy/ProxyInstantiatorForCglib.java | 101 +++
.../proxy/ProxyInstantiatorForJavassist.java | 77 ++
.../wrapper/WrapperFactoryAbstractTest.java | 127 ++++
...rapperFactoryAbstractTest_wrappedObject.java | 376 ++++++++++
...oryAbstractTest_wrappedObject_transient.java | 257 +++++++
.../WrapperFactoryCglibTest_wrappedObject.java | 32 +
...actoryCglibTest_wrappedObject_transient.java | 34 +
...apperFactoryJavassistTest_wrappedObject.java | 32 +
...ryJavassistTest_wrappedObject_transient.java | 31 +
.../application/simpleapp/integtests/pom.xml | 4 +-
example/application/simpleapp/webapp/pom.xml | 4 +-
example/application/todoapp/integtests/pom.xml | 4 +-
example/application/todoapp/webapp/pom.xml | 4 +-
62 files changed, 3038 insertions(+), 3039 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java
index 31f5420..4a1a6de 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/WrapperFactory.java
@@ -62,7 +62,7 @@ import org.apache.isis.applib.services.wrapper.listeners.InteractionListener;
*
* <p>
* An implementation of this service (<tt>WrapperFactoryDefault</tt>) can be registered by including
- * <tt>o.a.i.module:isis-module-wrapper</tt> on the classpath; no further configuration is required.
+ * <tt>o.a.i.core:isis-core-wrapper</tt> on the classpath; no further configuration is required.
* </p>
*/
@Hidden
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/integtestsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/integtestsupport/pom.xml b/core/integtestsupport/pom.xml
index 708e65d..48bc875 100644
--- a/core/integtestsupport/pom.xml
+++ b/core/integtestsupport/pom.xml
@@ -118,8 +118,8 @@
</dependency>
<dependency>
- <groupId>org.apache.isis.module</groupId>
- <artifactId>isis-module-wrapper</artifactId>
+ <groupId>org.apache.isis.core</groupId>
+ <artifactId>isis-core-wrapper</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/pom.xml
----------------------------------------------------------------------
diff --git a/core/module-wrapper/pom.xml b/core/module-wrapper/pom.xml
deleted file mode 100644
index b15c9b7..0000000
--- a/core/module-wrapper/pom.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.isis.core</groupId>
- <artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- </parent>
-
- <groupId>org.apache.isis.module</groupId>
- <artifactId>isis-module-wrapper</artifactId>
-
- <name>Isis Core Wrapper Service</name>
- <description>Isis Core Wrapper Service</description>
-
-
- <properties>
- <siteBaseDir>..</siteBaseDir>
- <relativeUrl>wrapper/</relativeUrl>
- </properties>
-
- <!-- used in Site generation for relative references. -->
- <url>http://isis.apache.org/${relativeUrl}</url>
-
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-project-info-reports-plugin</artifactId>
- <inherited>false</inherited>
- <configuration>
- <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
- </configuration>
- <reportSets>
- <reportSet>
- <inherited>false</inherited>
- <reports>
- <report>dependencies</report>
- <report>dependency-convergence</report>
- <report>plugins</report>
- <report>summary</report>
- </reports>
- </reportSet>
- </reportSets>
- </plugin>
- </plugins>
- </reporting>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>asm</groupId>
- <artifactId>asm</artifactId>
- <version>3.3.1</version>
- </dependency>
- <dependency>
- <groupId>cglib</groupId>
- <artifactId>cglib-nodep</artifactId>
- <version>2.2.2</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.isis.core</groupId>
- <artifactId>isis-core-runtime</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.isis.core</groupId>
- <artifactId>isis-core-metamodel</artifactId>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.isis.core</groupId>
- <artifactId>isis-core-runtime</artifactId>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.isis.core</groupId>
- <artifactId>isis-core-unittestsupport</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.isis.core</groupId>
- <artifactId>isis-core-tck-dom</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.objenesis</groupId>
- <artifactId>objenesis</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.javassist</groupId>
- <artifactId>javassist</artifactId>
- </dependency>
-
- <dependency>
- <groupId>asm</groupId>
- <artifactId>asm</artifactId>
- <!-- explicitly include for use of WrapperFactoryCglib -->
- <optional>true</optional>
- </dependency>
-
- <dependency>
- <groupId>cglib</groupId>
- <artifactId>cglib-nodep</artifactId>
- <!-- explicitly include for use of WrapperFactoryCglib -->
- <optional>true</optional>
- </dependency>
-
- </dependencies>
-
-</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryAbstract.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryAbstract.java
deleted file mode 100644
index ceea4a5..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryAbstract.java
+++ /dev/null
@@ -1,314 +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.wrapper;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.events.*;
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.applib.services.wrapper.WrappingObject;
-import org.apache.isis.applib.services.wrapper.listeners.InteractionListener;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
-import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
-import org.apache.isis.core.metamodel.adapter.ObjectPersistorAware;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderAware;
-import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcher;
-import org.apache.isis.core.wrapper.dispatchers.InteractionEventDispatcherTypeSafe;
-import org.apache.isis.core.wrapper.handlers.ProxyContextHandler;
-import org.apache.isis.core.wrapper.proxy.ProxyInstantiator;
-
-public abstract class WrapperFactoryAbstract implements WrapperFactory, AuthenticationSessionProviderAware, SpecificationLoaderAware, AdapterManagerAware, ObjectPersistorAware {
-
- private final List<InteractionListener> listeners = new ArrayList<InteractionListener>();
- private final Map<Class<? extends InteractionEvent>, InteractionEventDispatcher> dispatchersByEventClass = new HashMap<Class<? extends InteractionEvent>, InteractionEventDispatcher>();
-
- private AuthenticationSessionProvider authenticationSessionProvider;
- private SpecificationLoader specificationLookup;
- private AdapterManager adapterManager;
- private ObjectPersistor objectPersistor;
-
- private final ProxyContextHandler proxy;
-
- public WrapperFactoryAbstract(final ProxyInstantiator proxyInstantiator) {
-
- proxy = new ProxyContextHandler(proxyInstantiator);
-
- dispatchersByEventClass.put(ObjectTitleEvent.class, new InteractionEventDispatcherTypeSafe<ObjectTitleEvent>() {
- @Override
- public void dispatchTypeSafe(final ObjectTitleEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.objectTitleRead(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(PropertyVisibilityEvent.class, new InteractionEventDispatcherTypeSafe<PropertyVisibilityEvent>() {
- @Override
- public void dispatchTypeSafe(final PropertyVisibilityEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.propertyVisible(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(PropertyUsabilityEvent.class, new InteractionEventDispatcherTypeSafe<PropertyUsabilityEvent>() {
- @Override
- public void dispatchTypeSafe(final PropertyUsabilityEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.propertyUsable(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(PropertyAccessEvent.class, new InteractionEventDispatcherTypeSafe<PropertyAccessEvent>() {
- @Override
- public void dispatchTypeSafe(final PropertyAccessEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.propertyAccessed(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(PropertyModifyEvent.class, new InteractionEventDispatcherTypeSafe<PropertyModifyEvent>() {
- @Override
- public void dispatchTypeSafe(final PropertyModifyEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.propertyModified(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(CollectionVisibilityEvent.class, new InteractionEventDispatcherTypeSafe<CollectionVisibilityEvent>() {
- @Override
- public void dispatchTypeSafe(final CollectionVisibilityEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.collectionVisible(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(CollectionUsabilityEvent.class, new InteractionEventDispatcherTypeSafe<CollectionUsabilityEvent>() {
- @Override
- public void dispatchTypeSafe(final CollectionUsabilityEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.collectionUsable(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(CollectionAccessEvent.class, new InteractionEventDispatcherTypeSafe<CollectionAccessEvent>() {
- @Override
- public void dispatchTypeSafe(final CollectionAccessEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.collectionAccessed(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(CollectionAddToEvent.class, new InteractionEventDispatcherTypeSafe<CollectionAddToEvent>() {
- @Override
- public void dispatchTypeSafe(final CollectionAddToEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.collectionAddedTo(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(CollectionRemoveFromEvent.class, new InteractionEventDispatcherTypeSafe<CollectionRemoveFromEvent>() {
- @Override
- public void dispatchTypeSafe(final CollectionRemoveFromEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.collectionRemovedFrom(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(ActionVisibilityEvent.class, new InteractionEventDispatcherTypeSafe<ActionVisibilityEvent>() {
- @Override
- public void dispatchTypeSafe(final ActionVisibilityEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.actionVisible(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(ActionUsabilityEvent.class, new InteractionEventDispatcherTypeSafe<ActionUsabilityEvent>() {
- @Override
- public void dispatchTypeSafe(final ActionUsabilityEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.actionUsable(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(ActionArgumentEvent.class, new InteractionEventDispatcherTypeSafe<ActionArgumentEvent>() {
- @Override
- public void dispatchTypeSafe(final ActionArgumentEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.actionArgument(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(ActionInvocationEvent.class, new InteractionEventDispatcherTypeSafe<ActionInvocationEvent>() {
- @Override
- public void dispatchTypeSafe(final ActionInvocationEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.actionInvoked(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(ObjectValidityEvent.class, new InteractionEventDispatcherTypeSafe<ObjectValidityEvent>() {
- @Override
- public void dispatchTypeSafe(final ObjectValidityEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.objectPersisted(interactionEvent);
- }
- }
- });
- dispatchersByEventClass.put(CollectionMethodEvent.class, new InteractionEventDispatcherTypeSafe<CollectionMethodEvent>() {
- @Override
- public void dispatchTypeSafe(final CollectionMethodEvent interactionEvent) {
- for (final InteractionListener l : getListeners()) {
- l.collectionMethodInvoked(interactionEvent);
- }
- }
- });
- }
-
- // /////////////////////////////////////////////////////////////
- // wrap and unwrap
- // /////////////////////////////////////////////////////////////
-
- @Override
- public <T> T wrap(final T domainObject) {
- return wrap(domainObject, ExecutionMode.EXECUTE);
- }
-
- @Override
- public <T> T wrapNoExecute(final T domainObject) {
- return wrap(domainObject, ExecutionMode.NO_EXECUTE);
- }
-
- @Override
- public <T> T wrapSkipRules(final T domainObject) {
- return wrap(domainObject, ExecutionMode.SKIP_RULES);
- }
-
- @Override
- public <T> T wrap(final T domainObject, final ExecutionMode mode) {
- if (domainObject instanceof WrappingObject) {
- final WrappingObject wrapperObject = (WrappingObject) domainObject;
- final ExecutionMode wrapperMode = wrapperObject.__isis_executionMode();
- if(wrapperMode != mode) {
- final Object underlyingDomainObject = wrapperObject.__isis_wrapped();
- return (T)createProxy(underlyingDomainObject, mode);
- }
- return domainObject;
- }
- return createProxy(domainObject, mode);
- }
-
- protected <T> T createProxy(final T domainObject, final ExecutionMode mode) {
- return proxy.proxy(domainObject, this, mode, getAuthenticationSessionProvider(), getSpecificationLookup(), getAdapterManager(), getObjectPersistor());
- }
-
- @Override
- public boolean isWrapper(final Object possibleWrappedDomainObject) {
- return possibleWrappedDomainObject instanceof WrappingObject;
- }
-
- @Override
- @SuppressWarnings("unchecked")
- @Programmatic
- public <T> T unwrap(T possibleWrappedDomainObject) {
- if(isWrapper(possibleWrappedDomainObject)) {
- final WrappingObject wrappingObject = (WrappingObject) possibleWrappedDomainObject;
- return (T) wrappingObject.__isis_wrapped();
- }
- return possibleWrappedDomainObject;
- }
-
- // /////////////////////////////////////////////////////////////
- // Listeners
- // /////////////////////////////////////////////////////////////
-
- @Override
- public List<InteractionListener> getListeners() {
- return listeners;
- }
-
- @Override
- public boolean addInteractionListener(final InteractionListener listener) {
- return listeners.add(listener);
- }
-
- @Override
- public boolean removeInteractionListener(final InteractionListener listener) {
- return listeners.remove(listener);
- }
-
- @Override
- public void notifyListeners(final InteractionEvent interactionEvent) {
- final InteractionEventDispatcher dispatcher = dispatchersByEventClass.get(interactionEvent.getClass());
- if (dispatcher == null) {
- throw new RuntimeException("Unknown InteractionEvent - register into dispatchers map");
- }
- dispatcher.dispatch(interactionEvent);
- }
-
- // /////////////////////////////////////////////////////////////
- // Listeners
- // /////////////////////////////////////////////////////////////
-
- protected AuthenticationSessionProvider getAuthenticationSessionProvider() {
- return authenticationSessionProvider;
- }
- @Programmatic
- @Override
- public void setAuthenticationSessionProvider(final AuthenticationSessionProvider authenticationSessionProvider) {
- this.authenticationSessionProvider = authenticationSessionProvider;
- }
-
- protected AdapterManager getAdapterManager() {
- return adapterManager;
- }
- @Programmatic
- @Override
- public void setAdapterManager(final AdapterManager adapterManager) {
- this.adapterManager = adapterManager;
- }
-
-
- protected SpecificationLoader getSpecificationLookup() {
- return specificationLookup;
- }
- @Programmatic
- @Override
- public void setSpecificationLookup(final SpecificationLoader specificationLookup) {
- this.specificationLookup = specificationLookup;
- }
-
- protected ObjectPersistor getObjectPersistor() {
- return objectPersistor;
- }
- @Programmatic
- @Override
- public void setObjectPersistor(final ObjectPersistor objectPersistor) {
- this.objectPersistor = objectPersistor;
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryCglib.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryCglib.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryCglib.java
deleted file mode 100644
index fd75b59..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryCglib.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.wrapper;
-
-import org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForCglib;
-
-public class WrapperFactoryCglib extends WrapperFactoryAbstract {
-
- public WrapperFactoryCglib() {
- super(new ProxyInstantiatorForCglib());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.java
deleted file mode 100644
index c72eca8..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryDefault.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.core.wrapper;
-
-
-import org.apache.isis.applib.annotation.DomainService;
-
-/**
- * This service provides the ability to "wrap" of a domain object such that it can
- * be interacted with while enforcing the hide/disable/validate rules implies by
- * the Isis programming model.
- *
- * <p>
- * This implementation has no UI-visible actions and is the supported implementation, so it is annotated with
- * {@link org.apache.isis.applib.annotation.DomainService}. This means that by including
- * <tt>o.a.i.module:isis-module-wrapper</tt> on the classpath, the service is automatically registered; no further
- * configuration is required.
- */
-@DomainService
-public class WrapperFactoryDefault extends WrapperFactoryJavassist {
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryJavassist.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryJavassist.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryJavassist.java
deleted file mode 100644
index e71580f..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/WrapperFactoryJavassist.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.wrapper;
-
-import org.apache.isis.core.wrapper.proxy.ProxyInstantiatorForJavassist;
-
-public class WrapperFactoryJavassist extends WrapperFactoryAbstract {
-
- public WrapperFactoryJavassist() {
- super(new ProxyInstantiatorForJavassist());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcher.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcher.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcher.java
deleted file mode 100644
index 2dfa70c..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcher.java
+++ /dev/null
@@ -1,28 +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.wrapper.dispatchers;
-
-import org.apache.isis.applib.events.InteractionEvent;
-
-public interface InteractionEventDispatcher {
-
- void dispatch(InteractionEvent interactionEvent);
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcherTypeSafe.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcherTypeSafe.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcherTypeSafe.java
deleted file mode 100644
index c568633..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/dispatchers/InteractionEventDispatcherTypeSafe.java
+++ /dev/null
@@ -1,34 +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.wrapper.dispatchers;
-
-import org.apache.isis.applib.events.InteractionEvent;
-
-public abstract class InteractionEventDispatcherTypeSafe<T extends InteractionEvent> implements InteractionEventDispatcher {
-
- public abstract void dispatchTypeSafe(T interactionEvent);
-
- @Override
- @SuppressWarnings("unchecked")
- public void dispatch(final InteractionEvent interactionEvent) {
- dispatchTypeSafe((T) interactionEvent);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/AbstractCollectionInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/AbstractCollectionInvocationHandler.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/AbstractCollectionInvocationHandler.java
deleted file mode 100644
index b8a4464..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/AbstractCollectionInvocationHandler.java
+++ /dev/null
@@ -1,92 +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.wrapper.handlers;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-import org.apache.isis.applib.events.CollectionMethodEvent;
-import org.apache.isis.applib.events.InteractionEvent;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-
-abstract class AbstractCollectionInvocationHandler<T, C> extends DelegatingInvocationHandlerDefault<C> {
-
- private final List<Method> interceptedMethods = Lists.newArrayList();
- private final List<Method> vetoedMethods = Lists.newArrayList();
-
- private final String collectionName;
- private final OneToManyAssociation oneToManyAssociation;
- private final T domainObject;
-
- public AbstractCollectionInvocationHandler(final C collectionOrMapToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
- super(collectionOrMapToProxy, handler.getHeadlessViewer(), handler.getExecutionMode());
- this.collectionName = collectionName;
- this.oneToManyAssociation = otma;
- this.domainObject = handler.getDelegate();
- }
-
- protected Method intercept(final Method method) {
- this.interceptedMethods.add(method);
- return method;
- }
-
- protected Method veto(final Method method) {
- this.vetoedMethods.add(method);
- return method;
- }
-
- public String getCollectionName() {
- return collectionName;
- }
-
- public OneToManyAssociation getCollection() {
- return oneToManyAssociation;
- }
-
- public T getDomainObject() {
- return domainObject;
- }
-
- @Override
- public Object invoke(final Object collectionObject, final Method method, final Object[] args) throws Throwable {
-
- // delegate
- final Object returnValueObj = delegate(method, args);
-
- if (interceptedMethods.contains(method)) {
-
- resolveIfRequired(domainObject);
-
- final InteractionEvent ev = new CollectionMethodEvent(getDelegate(), getCollection().getIdentifier(), getDomainObject(), method.getName(), args, returnValueObj);
- notifyListeners(ev);
- return returnValueObj;
- }
-
- if (vetoedMethods.contains(method)) {
- throw new UnsupportedOperationException(String.format("Method '%s' may not be called directly.", method.getName()));
- }
-
- return returnValueObj;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/CollectionInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/CollectionInvocationHandler.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/CollectionInvocationHandler.java
deleted file mode 100644
index bcf2973..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/CollectionInvocationHandler.java
+++ /dev/null
@@ -1,53 +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.wrapper.handlers;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.isis.core.commons.lang.ObjectExtensions;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-
-class CollectionInvocationHandler<T, R> extends AbstractCollectionInvocationHandler<T, R> {
-
- public CollectionInvocationHandler(final R collectionToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
- super(collectionToProxy, collectionName, handler, otma);
-
- try {
- intercept(ObjectExtensions.getMethod(collectionToProxy, "contains", Object.class));
- intercept(ObjectExtensions.getMethod(collectionToProxy, "size"));
- intercept(ObjectExtensions.getMethod(collectionToProxy, "isEmpty"));
- if (collectionToProxy instanceof List) {
- intercept(ObjectExtensions.getMethod(collectionToProxy, "get", int.class));
- }
- veto(ObjectExtensions.getMethod(collectionToProxy, "add", Object.class));
- veto(ObjectExtensions.getMethod(collectionToProxy, "remove", Object.class));
- veto(ObjectExtensions.getMethod(collectionToProxy, "addAll", Collection.class));
- veto(ObjectExtensions.getMethod(collectionToProxy, "removeAll", Collection.class));
- veto(ObjectExtensions.getMethod(collectionToProxy, "retainAll", Collection.class));
- veto(ObjectExtensions.getMethod(collectionToProxy, "clear"));
- } catch (final NoSuchMethodException e) {
- // ///CLOVER:OFF
- throw new RuntimeException("A Collection method could not be found: " + e.getMessage());
- // ///CLOVER:ON
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandler.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandler.java
deleted file mode 100644
index d424f64..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandler.java
+++ /dev/null
@@ -1,32 +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.wrapper.handlers;
-
-import java.lang.reflect.InvocationHandler;
-
-public interface DelegatingInvocationHandler<T> extends InvocationHandler {
-
- T getDelegate();
-
- public boolean isResolveObjectChangedEnabled();
-
- public void setResolveObjectChangedEnabled(boolean resolveObjectChangedEnabled);
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
deleted file mode 100644
index e1b7cdd..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DelegatingInvocationHandlerDefault.java
+++ /dev/null
@@ -1,131 +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.wrapper.handlers;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.apache.isis.applib.events.InteractionEvent;
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerObjectChanged;
-import org.apache.isis.core.runtime.persistence.container.DomainObjectContainerResolve;
-
-public class DelegatingInvocationHandlerDefault<T> implements DelegatingInvocationHandler<T> {
-
- private final T delegate;
- protected final WrapperFactory wrapperFactory;
- private final ExecutionMode executionMode;
-
- protected final Method equalsMethod;
- protected final Method hashCodeMethod;
- protected final Method toStringMethod;
-
- private final DomainObjectContainerObjectChanged domainObjectContainerObjectChanged;
- private final DomainObjectContainerResolve domainObjectContainerResolve;
-
- private boolean resolveObjectChangedEnabled;
-
- public DelegatingInvocationHandlerDefault(final T delegate, final WrapperFactory headlessViewer, final ExecutionMode executionMode) {
- if (delegate == null) {
- throw new IllegalArgumentException("delegate must not be null");
- }
- this.delegate = delegate;
- this.wrapperFactory = headlessViewer;
- this.executionMode = executionMode;
-
- this.domainObjectContainerResolve = new DomainObjectContainerResolve();
- this.domainObjectContainerObjectChanged = new DomainObjectContainerObjectChanged();
-
- try {
- equalsMethod = delegate.getClass().getMethod("equals", new Class[] { Object.class });
- hashCodeMethod = delegate.getClass().getMethod("hashCode", new Class[] {});
- toStringMethod = delegate.getClass().getMethod("toString", new Class[] {});
- } catch (final NoSuchMethodException e) {
- // ///CLOVER:OFF
- throw new RuntimeException("An Object method could not be found: " + e.getMessage());
- // ///CLOVER:ON
- }
- }
-
- @Override
- public boolean isResolveObjectChangedEnabled() {
- return resolveObjectChangedEnabled;
- }
-
- @Override
- public void setResolveObjectChangedEnabled(final boolean resolveObjectChangedEnabled) {
- this.resolveObjectChangedEnabled = resolveObjectChangedEnabled;
- }
-
- protected void resolveIfRequired(final ObjectAdapter targetAdapter) {
- resolveIfRequired(targetAdapter.getObject());
- }
-
- protected void resolveIfRequired(final Object domainObject) {
- if (resolveObjectChangedEnabled) {
- domainObjectContainerResolve.resolve(domainObject);
- }
- }
-
- protected void objectChangedIfRequired(final ObjectAdapter targetAdapter) {
- objectChangedIfRequired(targetAdapter.getObject());
- }
-
- protected void objectChangedIfRequired(final Object domainObject) {
- if (resolveObjectChangedEnabled) {
- domainObjectContainerObjectChanged.objectChanged(domainObject);
- }
- }
-
- public WrapperFactory getHeadlessViewer() {
- return wrapperFactory;
- }
-
- @Override
- public T getDelegate() {
- return delegate;
- }
-
- public ExecutionMode getExecutionMode() {
- return executionMode;
- }
-
- protected Object delegate(final Method method, final Object[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
-
- return method.invoke(getDelegate(), args);
- }
-
- protected boolean isObjectMethod(final Method method) {
- return toStringMethod.equals(method) || hashCodeMethod.equals(method) || equalsMethod.equals(method);
- }
-
- @Override
- public Object invoke(final Object object, final Method method, final Object[] args) throws Throwable {
- return method.invoke(object, args);
- }
-
- protected InteractionEvent notifyListeners(final InteractionEvent interactionEvent) {
- wrapperFactory.notifyListeners(interactionEvent);
- return interactionEvent;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
deleted file mode 100644
index d505add..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/DomainObjectInvocationHandler.java
+++ /dev/null
@@ -1,720 +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.wrapper.handlers;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.events.*;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.applib.services.wrapper.*;
-import org.apache.isis.applib.services.wrapper.WrapperFactory.ExecutionMode;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
-import org.apache.isis.core.metamodel.consent.InteractionResult;
-import org.apache.isis.core.metamodel.facetapi.DecoratingFacet;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facets.ImperativeFacet;
-import org.apache.isis.core.metamodel.facets.ImperativeFacet.Intent;
-import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.SpecificationLoader;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-
-public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandlerDefault<T> {
-
- private final Map<Method, Collection<?>> collectionViewObjectsByMethod = new HashMap<Method, Collection<?>>();
- private final Map<Method, Map<?, ?>> mapViewObjectsByMethod = new HashMap<Method, Map<?, ?>>();
-
- private final AuthenticationSessionProvider authenticationSessionProvider;
- private final SpecificationLoader specificationLookup;
- private final AdapterManager adapterManager;
- private final ObjectPersistor objectPersistor;
-
- private final ProxyContextHandler proxy;
- private final ExecutionMode executionMode;
-
- /**
- * The <tt>title()</tt> method; may be <tt>null</tt>.
- */
- protected Method titleMethod;
-
- /**
- * The <tt>__isis_save()</tt> method from {@link WrapperObject#__isis_save()}.
- */
- protected Method __isis_saveMethod;
-
- /**
- * The <tt>save()</tt> method from {@link WrapperObject#save()}.
- */
- @Deprecated
- protected Method saveMethod;
-
- /**
- * The <tt>__isis_wrapped()</tt> method from {@link WrapperObject#__isis_wrapped()}.
- */
- protected Method __isis_wrappedMethod;
-
- /**
- * The <tt>wrapped()</tt> method from {@link WrapperObject#wrapped()}.
- */
- @Deprecated
- protected Method wrappedMethod;
-
- /**
- * The <tt>__isis_executionMode()</tt> method from {@link WrapperObject#__isis_executionMode()}.
- */
- protected Method __isis_executionMode;
-
- public DomainObjectInvocationHandler(
- final T delegate,
- final WrapperFactory wrapperFactory,
- final ExecutionMode mode,
- final AuthenticationSessionProvider authenticationSessionProvider,
- final SpecificationLoader specificationLookup,
- final AdapterManager adapterManager,
- final ObjectPersistor objectPersistor,
- final ProxyContextHandler proxy) {
- super(delegate, wrapperFactory, mode);
-
- this.proxy = proxy;
- this.authenticationSessionProvider = authenticationSessionProvider;
- this.specificationLookup = specificationLookup;
- this.adapterManager = adapterManager;
- this.objectPersistor = objectPersistor;
- this.executionMode = mode;
-
- try {
- titleMethod = delegate.getClass().getMethod("title", new Class[]{});
- __isis_saveMethod = WrapperObject.class.getMethod("__isis_save", new Class[]{});
- __isis_wrappedMethod = WrapperObject.class.getMethod("__isis_wrapped", new Class[]{});
- __isis_executionMode = WrapperObject.class.getMethod("__isis_executionMode", new Class[]{});
- saveMethod = WrapperObject.class.getMethod("save", new Class[] {});
- wrappedMethod = WrapperObject.class.getMethod("wrapped", new Class[] {});
- } catch (final NoSuchMethodException e) {
- }
- }
-
- @Override
- public Object invoke(final Object proxyObject, final Method method, final Object[] args) throws Throwable {
-
- if (isObjectMethod(method)) {
- return delegate(method, args);
- }
-
- // workaround for JDO-enhanced..
- if(isJdoMethod(method)) {
- return delegate(method, args);
- }
-
- if(isInjectMethod(method)) {
- return delegate(method, args);
- }
-
- final ObjectAdapter targetAdapter = getAdapterManager().adapterFor(getDelegate());
-
- if (isTitleMethod(method)) {
- return handleTitleMethod(method, args, targetAdapter);
- }
-
-
- final ObjectSpecification targetNoSpec = targetAdapter.getSpecification();
-
- // save method, through the proxy
- if (isSaveMethod(method)) {
- return handleSaveMethod(getAuthenticationSession(), targetAdapter, targetNoSpec);
- }
-
- if (isWrappedMethod(method)) {
- return getDelegate();
- }
-
- if (isExecutionModeMethod(method)) {
- return executionMode;
- }
-
- final ObjectMember objectMember = locateAndCheckMember(method);
-
- final String memberName = objectMember.getName();
-
- final Intent intent = ImperativeFacet.Util.getIntent(objectMember, method);
- if(intent == Intent.CHECK_IF_HIDDEN || intent == Intent.CHECK_IF_DISABLED) {
- throw new UnsupportedOperationException(String.format("Cannot invoke supporting method '%s'", memberName));
- }
-
- final String methodName = method.getName();
-
- if (intent == Intent.DEFAULTS || intent == Intent.CHOICES_OR_AUTOCOMPLETE) {
- return method.invoke(getDelegate(), args);
- }
-
- if (objectMember.isOneToOneAssociation()) {
-
- if (intent == Intent.CHECK_IF_VALID || intent == Intent.MODIFY_PROPERTY_SUPPORTING) {
- throw new UnsupportedOperationException(String.format("Cannot invoke supporting method for '%s'; use only property accessor/mutator", memberName));
- }
-
- final OneToOneAssociation otoa = (OneToOneAssociation) objectMember;
-
- if (intent == Intent.ACCESSOR) {
- return handleGetterMethodOnProperty(args, targetAdapter, otoa, methodName);
- }
-
- if (intent == Intent.MODIFY_PROPERTY || intent == Intent.INITIALIZATION) {
- return handleSetterMethodOnProperty(args, getAuthenticationSession(), targetAdapter, otoa, methodName);
- }
- }
- if (objectMember.isOneToManyAssociation()) {
-
- if (intent == Intent.CHECK_IF_VALID) {
- throw new UnsupportedOperationException(String.format("Cannot invoke supporting method '%s'; use only collection accessor/mutator", memberName));
- }
-
- final OneToManyAssociation otma = (OneToManyAssociation) objectMember;
- if (intent == Intent.ACCESSOR) {
- return handleGetterMethodOnCollection(method, args, targetAdapter, otma, memberName);
- }
- if (intent == Intent.MODIFY_COLLECTION_ADD) {
- return handleCollectionAddToMethod(args, targetAdapter, otma, methodName);
- }
- if (intent == Intent.MODIFY_COLLECTION_REMOVE) {
- return handleCollectionRemoveFromMethod(args, targetAdapter, otma, methodName);
- }
- }
-
- if (objectMember instanceof ObjectAction) {
-
- if (intent == Intent.CHECK_IF_VALID) {
- throw new UnsupportedOperationException(String.format("Cannot invoke supporting method '%s'; use only the 'invoke' method", memberName));
- }
-
- final ObjectAction noa = (ObjectAction) objectMember;
- return handleActionMethod(args, getAuthenticationSession(), targetAdapter, noa, memberName);
- }
-
- throw new UnsupportedOperationException(String.format("Unknown member type '%s'", objectMember));
- }
-
- private boolean isJdoMethod(final Method method) {
- return methodStartsWith(method, "jdo");
- }
-
- private boolean isInjectMethod(final Method method) {
- return methodStartsWith(method, "inject");
- }
-
- private boolean methodStartsWith(final Method method, final String prefix) {
- return method.getName().startsWith(prefix);
- }
-
- public List<Facet> getImperativeFacets(final ObjectMember objectMember, final Method method) {
- final List<Facet> imperativeFacets = objectMember.getFacets(new Filter<Facet>() {
- @Override
- public boolean accept(final Facet facet) {
- final ImperativeFacet imperativeFacet = asImperativeFacet(facet);
- if (imperativeFacet == null) {
- return false;
- }
- return imperativeFacet.getMethods().contains(method);
- }
-
- private ImperativeFacet asImperativeFacet(final Facet facet) {
- if (facet == null) {
- return null;
- }
- if (facet instanceof ImperativeFacet) {
- return (ImperativeFacet) facet;
- }
- Facet underlyingFacet = facet.getUnderlyingFacet();
- return asImperativeFacet(underlyingFacet);
- }
- });
-
- // there will be at least one
- if (imperativeFacets.isEmpty()) {
- throw new IllegalStateException("should be at least one imperative facet");
- }
- return imperativeFacets;
- }
-
- private static boolean instanceOf(final List<?> objects, final Class<?>... superTypes) {
- for (final Class<?> superType : superTypes) {
- // REVIEW: this is all a bit hacky...
- for (Object obj : objects) {
- // handle the *decorators
- if(obj instanceof DecoratingFacet) {
- DecoratingFacet<?> decoratingFacet = (DecoratingFacet<?>) obj;
- obj = ((DecoratingFacet<?>) obj).getDecoratedFacet();
- }
- if (superType.isAssignableFrom(obj.getClass())) {
- return true;
- }
- if(obj instanceof Facet) {
- Facet facet = (Facet) obj;
- // handle any wrapping (eg PostPropertyChangedSetterEventFacet)
- Facet underlyingFacet = facet.getUnderlyingFacet();
- if(underlyingFacet != null && superType.isAssignableFrom(obj.getClass())) {
- return true;
- }
- }
- }
- }
- return false;
- }
-
- // /////////////////////////////////////////////////////////////////
- // title
- // /////////////////////////////////////////////////////////////////
-
- private Object handleTitleMethod(final Method method, final Object[] args, final ObjectAdapter targetAdapter) throws IllegalAccessException, InvocationTargetException {
-
- resolveIfRequired(targetAdapter);
-
- final ObjectSpecification targetNoSpec = targetAdapter.getSpecification();
- final ObjectTitleContext titleContext = targetNoSpec.createTitleInteractionContext(getAuthenticationSession(), InteractionInvocationMethod.BY_USER, targetAdapter);
- final ObjectTitleEvent titleEvent = titleContext.createInteractionEvent();
- notifyListeners(titleEvent);
- return titleEvent.getTitle();
- }
-
- // /////////////////////////////////////////////////////////////////
- // save
- // /////////////////////////////////////////////////////////////////
-
- private Object handleSaveMethod(final AuthenticationSession session, final ObjectAdapter targetAdapter, final ObjectSpecification targetNoSpec) {
-
- if(getExecutionMode().shouldEnforceRules()) {
- final InteractionResult interactionResult = targetNoSpec.isValidResult(targetAdapter);
- notifyListenersAndVetoIfRequired(interactionResult);
- }
-
- if (getExecutionMode().shouldExecute()) {
- if (targetAdapter.isTransient()) {
- getObjectPersistor().makePersistent(targetAdapter);
- }
- }
- return null;
- }
-
- // /////////////////////////////////////////////////////////////////
- // property - access
- // /////////////////////////////////////////////////////////////////
-
- private Object handleGetterMethodOnProperty(final Object[] args, final ObjectAdapter targetAdapter, final OneToOneAssociation otoa, final String methodName) {
-
- if (args.length != 0) {
- throw new IllegalArgumentException("Invoking a 'get' should have no arguments");
- }
-
- if(getExecutionMode().shouldEnforceRules()) {
- checkVisibility(getAuthenticationSession(), targetAdapter, otoa);
- }
-
- resolveIfRequired(targetAdapter);
-
- final ObjectAdapter currentReferencedAdapter = otoa.get(targetAdapter);
- final Object currentReferencedObj = ObjectAdapter.Util.unwrap(currentReferencedAdapter);
-
- final PropertyAccessEvent ev = new PropertyAccessEvent(getDelegate(), otoa.getIdentifier(), currentReferencedObj);
- notifyListeners(ev);
- return currentReferencedObj;
- }
-
- // /////////////////////////////////////////////////////////////////
- // property - modify
- // /////////////////////////////////////////////////////////////////
-
- private Object handleSetterMethodOnProperty(final Object[] args, final AuthenticationSession session, final ObjectAdapter targetAdapter, final OneToOneAssociation otoa, final String methodName) {
- if (args.length != 1) {
- throw new IllegalArgumentException("Invoking a setter should only have a single argument");
- }
-
- final Object argumentObj = underlying(args[0]);
-
- if(getExecutionMode().shouldEnforceRules()) {
- checkVisibility(getAuthenticationSession(), targetAdapter, otoa);
- checkUsability(getAuthenticationSession(), targetAdapter, otoa);
- }
-
- final ObjectAdapter argumentAdapter = argumentObj != null ? getAdapterManager().adapterFor(argumentObj) : null;
-
- resolveIfRequired(targetAdapter);
-
-
- if(getExecutionMode().shouldEnforceRules()) {
- final InteractionResult interactionResult = otoa.isAssociationValid(targetAdapter, argumentAdapter).getInteractionResult();
- notifyListenersAndVetoIfRequired(interactionResult);
- }
-
- if (getExecutionMode().shouldExecute()) {
- otoa.set(targetAdapter, argumentAdapter);
- }
-
- objectChangedIfRequired(targetAdapter);
-
- return null;
- }
-
-
- // /////////////////////////////////////////////////////////////////
- // collection - access
- // /////////////////////////////////////////////////////////////////
-
- private Object handleGetterMethodOnCollection(final Method method, final Object[] args, final ObjectAdapter targetAdapter, final OneToManyAssociation otma, final String memberName) {
-
-
- if (args.length != 0) {
- throw new IllegalArgumentException("Invoking a 'get' should have no arguments");
- }
-
- if(getExecutionMode().shouldEnforceRules()) {
- checkVisibility(getAuthenticationSession(), targetAdapter, otma);
- }
-
- resolveIfRequired(targetAdapter);
-
- final ObjectAdapter currentReferencedAdapter = otma.get(targetAdapter);
- final Object currentReferencedObj = ObjectAdapter.Util.unwrap(currentReferencedAdapter);
-
- final CollectionAccessEvent ev = new CollectionAccessEvent(getDelegate(), otma.getIdentifier());
-
- if (currentReferencedObj instanceof Collection) {
- final Collection<?> collectionViewObject = lookupViewObject(method, memberName, (Collection<?>) currentReferencedObj, otma);
- notifyListeners(ev);
- return collectionViewObject;
- } else if (currentReferencedObj instanceof Map) {
- final Map<?, ?> mapViewObject = lookupViewObject(method, memberName, (Map<?, ?>) currentReferencedObj, otma);
- notifyListeners(ev);
- return mapViewObject;
- }
- throw new IllegalArgumentException(String.format("Collection type '%s' not supported by framework", currentReferencedObj.getClass().getName()));
- }
-
- /**
- * Looks up (or creates) a proxy for this object.
- */
- private Collection<?> lookupViewObject(final Method method, final String memberName, final Collection<?> collectionToLookup, final OneToManyAssociation otma) {
- Collection<?> collectionViewObject = collectionViewObjectsByMethod.get(method);
- if (collectionViewObject == null) {
- if (collectionToLookup instanceof WrapperObject) {
- collectionViewObject = collectionToLookup;
- } else {
- collectionViewObject = proxy.proxy(collectionToLookup, memberName, this, otma);
- }
- collectionViewObjectsByMethod.put(method, collectionViewObject);
- }
- return collectionViewObject;
- }
-
- private Map<?, ?> lookupViewObject(final Method method, final String memberName, final Map<?, ?> mapToLookup, final OneToManyAssociation otma) {
- Map<?, ?> mapViewObject = mapViewObjectsByMethod.get(method);
- if (mapViewObject == null) {
- if (mapToLookup instanceof WrapperObject) {
- mapViewObject = mapToLookup;
- } else {
- mapViewObject = proxy.proxy(mapToLookup, memberName, this, otma);
- }
- mapViewObjectsByMethod.put(method, mapViewObject);
- }
- return mapViewObject;
- }
-
- // /////////////////////////////////////////////////////////////////
- // collection - add to
- // /////////////////////////////////////////////////////////////////
-
- private Object handleCollectionAddToMethod(final Object[] args, final ObjectAdapter targetAdapter, final OneToManyAssociation otma, final String methodName) {
-
- if (args.length != 1) {
- throw new IllegalArgumentException("Invoking a addTo should only have a single argument");
- }
-
- if(getExecutionMode().shouldEnforceRules()) {
- checkVisibility(getAuthenticationSession(), targetAdapter, otma);
- checkUsability(getAuthenticationSession(), targetAdapter, otma);
- }
-
- resolveIfRequired(targetAdapter);
-
- final Object argumentObj = underlying(args[0]);
- if (argumentObj == null) {
- throw new IllegalArgumentException("Must provide a non-null object to add");
- }
- final ObjectAdapter argumentNO = getAdapterManager().adapterFor(argumentObj);
-
- if(getExecutionMode().shouldEnforceRules()) {
- final InteractionResult interactionResult = otma.isValidToAdd(targetAdapter, argumentNO).getInteractionResult();
- notifyListenersAndVetoIfRequired(interactionResult);
- }
-
- if (getExecutionMode().shouldExecute()) {
- otma.addElement(targetAdapter, argumentNO);
- }
-
- objectChangedIfRequired(targetAdapter);
-
- return null;
- }
-
-
- // /////////////////////////////////////////////////////////////////
- // collection - remove from
- // /////////////////////////////////////////////////////////////////
-
- private Object handleCollectionRemoveFromMethod(final Object[] args, final ObjectAdapter targetAdapter, final OneToManyAssociation otma, final String methodName) {
- if (args.length != 1) {
- throw new IllegalArgumentException("Invoking a removeFrom should only have a single argument");
- }
-
- if(getExecutionMode().shouldEnforceRules()) {
- checkVisibility(getAuthenticationSession(), targetAdapter, otma);
- checkUsability(getAuthenticationSession(), targetAdapter, otma);
- }
-
-
- resolveIfRequired(targetAdapter);
-
- final Object argumentObj = underlying(args[0]);
- if (argumentObj == null) {
- throw new IllegalArgumentException("Must provide a non-null object to remove");
- }
- final ObjectAdapter argumentAdapter = getAdapterManager().adapterFor(argumentObj);
-
- if(getExecutionMode().shouldEnforceRules()) {
- final InteractionResult interactionResult = otma.isValidToRemove(targetAdapter, argumentAdapter).getInteractionResult();
- notifyListenersAndVetoIfRequired(interactionResult);
- }
-
- if (getExecutionMode().shouldExecute()) {
- otma.removeElement(targetAdapter, argumentAdapter);
- }
-
- objectChangedIfRequired(targetAdapter);
-
- return null;
- }
-
- // /////////////////////////////////////////////////////////////////
- // action
- // /////////////////////////////////////////////////////////////////
-
- private Object handleActionMethod(final Object[] args, final AuthenticationSession session, final ObjectAdapter targetAdapter, final ObjectAction noa, final String memberName) {
-
- if(getExecutionMode().shouldEnforceRules()) {
- checkVisibility(getAuthenticationSession(), targetAdapter, noa);
- checkUsability(getAuthenticationSession(), targetAdapter, noa);
- }
-
- final Object[] underlyingArgs = new Object[args.length];
- int i = 0;
- for (final Object arg : args) {
- underlyingArgs[i++] = underlying(arg);
- }
-
- final ObjectAdapter[] argAdapters = new ObjectAdapter[underlyingArgs.length];
- int j = 0;
- for (final Object underlyingArg : underlyingArgs) {
- argAdapters[j++] = underlyingArg != null ? getAdapterManager().adapterFor(underlyingArg) : null;
- }
-
- if(getExecutionMode().shouldEnforceRules()) {
- final InteractionResult interactionResult = noa.isProposedArgumentSetValid(targetAdapter, argAdapters).getInteractionResult();
- notifyListenersAndVetoIfRequired(interactionResult);
- }
-
- if (getExecutionMode().shouldExecute()) {
- final ObjectAdapter actionReturnNO = noa.execute(targetAdapter, argAdapters);
- return ObjectAdapter.Util.unwrap(actionReturnNO);
- }
-
- objectChangedIfRequired(targetAdapter);
-
- return null;
- }
-
- private Object underlying(final Object arg) {
- if (arg instanceof WrapperObject) {
- final WrapperObject argViewObject = (WrapperObject) arg;
- return argViewObject.wrapped();
- } else {
- return arg;
- }
- }
-
- // /////////////////////////////////////////////////////////////////
- // visibility and usability checks (common to all members)
- // /////////////////////////////////////////////////////////////////
-
- /**
- * REVIEW: ideally should provide some way to allow to caller to indicate the 'where' context. Having
- * a hard-coded value like this is an approximation.
- */
- private final Where where = Where.ANYWHERE;
-
- private void checkVisibility(final AuthenticationSession session, final ObjectAdapter targetObjectAdapter, final ObjectMember objectMember) {
- final Consent visibleConsent = objectMember.isVisible(getAuthenticationSession(), targetObjectAdapter, where);
- final InteractionResult interactionResult = visibleConsent.getInteractionResult();
- notifyListenersAndVetoIfRequired(interactionResult);
- }
-
- private void checkUsability(final AuthenticationSession session, final ObjectAdapter targetObjectAdapter, final ObjectMember objectMember) {
- final InteractionResult interactionResult = objectMember.isUsable(getAuthenticationSession(), targetObjectAdapter, where).getInteractionResult();
- notifyListenersAndVetoIfRequired(interactionResult);
- }
-
- // /////////////////////////////////////////////////////////////////
- // notify listeners
- // /////////////////////////////////////////////////////////////////
-
- private void notifyListenersAndVetoIfRequired(final InteractionResult interactionResult) {
- final InteractionEvent interactionEvent = interactionResult.getInteractionEvent();
- notifyListeners(interactionEvent);
- if (interactionEvent.isVeto()) {
- throw toException(interactionEvent);
- }
- }
-
- private String decode(final ObjectMember objectMember) {
- if (objectMember instanceof OneToOneAssociation) {
- return "a property";
- }
- if (objectMember instanceof OneToManyAssociation) {
- return "a collection";
- }
- if (objectMember instanceof ObjectAction) {
- return "an action";
- }
- return "an UNKNOWN member type";
- }
-
- /**
- * Wraps a {@link InteractionEvent#isVeto() vetoing}
- * {@link InteractionEvent} in a corresponding {@link InteractionException},
- * and returns it.
- */
- private InteractionException toException(final InteractionEvent interactionEvent) {
- if (!interactionEvent.isVeto()) {
- throw new IllegalArgumentException("Provided interactionEvent must be a veto");
- }
- if (interactionEvent instanceof ValidityEvent) {
- final ValidityEvent validityEvent = (ValidityEvent) interactionEvent;
- return new InvalidException(validityEvent);
- }
- if (interactionEvent instanceof VisibilityEvent) {
- final VisibilityEvent visibilityEvent = (VisibilityEvent) interactionEvent;
- return new HiddenException(visibilityEvent);
- }
- if (interactionEvent instanceof UsabilityEvent) {
- final UsabilityEvent usabilityEvent = (UsabilityEvent) interactionEvent;
- return new DisabledException(usabilityEvent);
- }
- throw new IllegalArgumentException("Provided interactionEvent must be a VisibilityEvent, UsabilityEvent or a ValidityEvent");
- }
-
- // /////////////////////////////////////////////////////////////////
- // switching
- // /////////////////////////////////////////////////////////////////
-
- private ObjectMember locateAndCheckMember(final Method method) {
- final ObjectSpecificationDefault objectSpecificationDefault = getJavaSpecificationOfOwningClass(method);
- final ObjectMember member = objectSpecificationDefault.getMember(method);
-
- if (member == null) {
- final String methodName = method.getName();
- throw new UnsupportedOperationException("Method '" + methodName + "' being invoked does not correspond to any of the object's fields or actions.");
- }
- return member;
- }
-
- protected boolean isTitleMethod(final Method method) {
- return method.equals(titleMethod);
- }
-
- protected boolean isSaveMethod(final Method method) {
- return method.equals(saveMethod) || method.equals(__isis_saveMethod);
- }
-
- protected boolean isWrappedMethod(final Method method) {
- return method.equals(wrappedMethod) || method.equals(__isis_wrappedMethod);
- }
-
- protected boolean isExecutionModeMethod(final Method method) {
- return method.equals(__isis_executionMode);
- }
-
- // /////////////////////////////////////////////////////////////////
- // Specification lookup
- // /////////////////////////////////////////////////////////////////
-
- private ObjectSpecificationDefault getJavaSpecificationOfOwningClass(final Method method) {
- return getJavaSpecification(method.getDeclaringClass());
- }
-
- private ObjectSpecificationDefault getJavaSpecification(final Class<?> clazz) {
- final ObjectSpecification nos = getSpecification(clazz);
- if (!(nos instanceof ObjectSpecificationDefault)) {
- throw new UnsupportedOperationException("Only Java is supported (specification is '" + nos.getClass().getCanonicalName() + "')");
- }
- return (ObjectSpecificationDefault) nos;
- }
-
- private ObjectSpecification getSpecification(final Class<?> type) {
- final ObjectSpecification nos = getSpecificationLookup().loadSpecification(type);
- return nos;
- }
-
- // /////////////////////////////////////////////////////////////////
- // Dependencies
- // /////////////////////////////////////////////////////////////////
-
- protected SpecificationLoader getSpecificationLookup() {
- return specificationLookup;
- }
-
- public AuthenticationSessionProvider getAuthenticationSessionProvider() {
- return authenticationSessionProvider;
- }
-
- protected AuthenticationSession getAuthenticationSession() {
- return getAuthenticationSessionProvider().getAuthenticationSession();
- }
-
- protected AdapterManager getAdapterManager() {
- return adapterManager;
- }
-
- protected ObjectPersistor getObjectPersistor() {
- return objectPersistor;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/dec67056/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/MapInvocationHandler.java
----------------------------------------------------------------------
diff --git a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/MapInvocationHandler.java b/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/MapInvocationHandler.java
deleted file mode 100644
index ed6cbc1..0000000
--- a/core/module-wrapper/src/main/java/org/apache/isis/core/wrapper/handlers/MapInvocationHandler.java
+++ /dev/null
@@ -1,48 +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.wrapper.handlers;
-
-import java.util.Map;
-
-import org.apache.isis.core.commons.lang.ObjectExtensions;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-
-class MapInvocationHandler<T, C> extends AbstractCollectionInvocationHandler<T, C> {
-
- public MapInvocationHandler(final C collectionToProxy, final String collectionName, final DomainObjectInvocationHandler<T> handler, final OneToManyAssociation otma) {
- super(collectionToProxy, collectionName, handler, otma);
-
- try {
- intercept(ObjectExtensions.getMethod(collectionToProxy, "containsKey", Object.class));
- intercept(ObjectExtensions.getMethod(collectionToProxy, "containsValue", Object.class));
- intercept(ObjectExtensions.getMethod(collectionToProxy, "size"));
- intercept(ObjectExtensions.getMethod(collectionToProxy, "isEmpty"));
- veto(ObjectExtensions.getMethod(collectionToProxy, "put", Object.class, Object.class));
- veto(ObjectExtensions.getMethod(collectionToProxy, "remove", Object.class));
- veto(ObjectExtensions.getMethod(collectionToProxy, "putAll", Map.class));
- veto(ObjectExtensions.getMethod(collectionToProxy, "clear"));
- } catch (final NoSuchMethodException e) {
- // ///CLOVER:OFF
- throw new RuntimeException("A Collection method could not be found: " + e.getMessage());
- // ///CLOVER:ON
- }
- }
-
-}
[32/39] git commit: ISIS-839: recreating todoapp archetype
Posted by da...@apache.org.
ISIS-839: recreating todoapp archetype
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/95b3e9ec
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/95b3e9ec
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/95b3e9ec
Branch: refs/heads/master
Commit: 95b3e9ecd71b72c0529d15f2c738eba4c50af1f3
Parents: cb33718
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 25 08:24:37 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:24:37 2014 +0100
----------------------------------------------------------------------
example/archetype/todoapp/pom.xml | 8 +-
.../META-INF/maven/archetype-metadata.xml | 9 +-
.../resources/archetype-resources/dom/pom.xml | 16 +-
.../dom/src/main/java/app/ToDoAppDashboard.java | 9 -
.../main/java/app/ToDoAppDashboardService.java | 41 +-
.../dom/src/main/java/app/ToDoItemAnalysis.java | 13 +-
.../java/app/ToDoItemAnalysisContributions.java | 10 +-
.../java/app/ToDoItemsByCategoryViewModel.java | 15 -
.../java/app/ToDoItemsByDateRangeViewModel.java | 16 -
.../dom/src/main/java/dom/todo/Categorized.java | 35 +
.../dom/src/main/java/dom/todo/ToDoItem.java | 126 ++-
.../src/main/java/dom/todo/ToDoItem.layout.json | 192 ++--
.../dom/todo/ToDoItemChangedPayloadFactory.java | 1 +
.../java/dom/todo/ToDoItemContributions.java | 27 +-
.../java/dom/todo/ToDoItemSubscriptions.java | 248 ++++-
.../dom/src/main/java/dom/todo/ToDoItems.java | 41 +-
.../src/test/java/dom/todo/ToDoItemTest.java | 94 ++
.../test/java/dom/todo/ToDoTest_completed.java | 71 --
.../java/dom/todo/ToDoTest_notYetCompleted.java | 71 --
.../archetype-resources/fixture/pom.xml | 2 +-
.../fixture/todo/ToDoItemsFixturesService.java | 10 +
.../archetype-resources/integtests/pom.xml | 6 +-
.../java/integration/ToDoSystemInitializer.java | 47 +-
.../tests/AbstractToDoIntegTest.java | 41 +
.../java/integration/tests/ToDoIntegTest.java | 41 -
.../tests/ToDoItemContributionsIntegTest.java | 152 +++
.../integration/tests/ToDoItemIntegTest.java | 1040 ++++++++++++++++++
.../integration/tests/ToDoItemsIntegTest.java | 116 ++
...oDoItemContributionsTest_updateCategory.java | 106 --
.../tests/actions/ToDoItemTest_completed.java | 174 ---
.../tests/actions/ToDoItemTest_duplicate.java | 83 --
.../actions/ToDoItemTest_notYetCompleted.java | 79 --
.../ToDoItemContributionsTest_similarTo.java | 71 --
.../colls/ToDoItemTest_dependencies_add.java | 181 ---
.../colls/ToDoItemTest_dependencies_remove.java | 176 ---
.../ToDoItemContributionsTest_priority.java | 75 --
.../tests/props/ToDoItemTest_attachment.java | 82 --
.../tests/props/ToDoItemTest_category.java | 62 --
.../tests/props/ToDoItemTest_cost.java | 100 --
.../tests/props/ToDoItemTest_description.java | 220 ----
.../tests/props/ToDoItemTest_dueBy.java | 106 --
.../tests/props/ToDoItemTest_notes.java | 90 --
.../tests/props/ToDoItemTest_ownedBy.java | 61 -
.../tests/props/ToDoItemTest_subcategory.java | 62 --
.../tests/repo/ToDoItemsTest_finders.java | 84 --
.../repo/ToDoItemsTest_newToDo_and_delete.java | 68 --
.../tests/smoke/ToDoItemTest_title.java | 116 --
.../main/resources/archetype-resources/pom.xml | 40 +-
.../webapp/ide/intellij/launch/README.txt | 6 +
.../ide/intellij/launch/TodoApp_PROTOTYPE.xml | 32 +
.../intellij/launch/TodoApp__enhance_only_.xml | 26 +
.../archetype-resources/webapp/pom.xml | 48 +-
.../src/main/java/webapp/admin/Admin.java | 1 +
.../java/webapp/admin/AdminContributions.java | 7 +-
.../webapp/prototyping/DeveloperUtilities.java | 6 +-
.../prototyping/ExternalLinksService.java | 8 +-
.../prototyping/WicketDeveloperUtilities.java | 42 +
.../webapp/ToDoApplication_en.properties | 54 +
.../webapp/src/main/resources/webapp/realm1.ini | 26 +
.../src/main/resources/webapp/welcome.html | 7 +-
.../src/main/webapp/WEB-INF/isis.properties | 76 +-
.../src/main/webapp/WEB-INF/logging.properties | 32 +
.../main/webapp/WEB-INF/persistor.properties | 12 +-
.../webapp/src/main/webapp/WEB-INF/shiro.ini | 10 +
.../webapp/src/main/webapp/about/index.html | 149 +--
.../webapp/src/main/webapp/css/application.css | 2 +-
.../projects/basic/archetype.properties | 2 +-
67 files changed, 2285 insertions(+), 2795 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/pom.xml b/example/archetype/todoapp/pom.xml
index 90d7b9c..19c35fe 100644
--- a/example/archetype/todoapp/pom.xml
+++ b/example/archetype/todoapp/pom.xml
@@ -17,13 +17,13 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.isis.archetype</groupId>
- <artifactId>quickstart_wicket_restful_jdo-archetype</artifactId>
+ <artifactId>todoapp-archetype</artifactId>
<version>1.6.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
- <name>quickstart_wicket_restful_jdo-archetype</name>
+ <name>todoapp-archetype</name>
<build>
<extensions>
<extension>
@@ -44,7 +44,7 @@
<parent>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml b/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml
index 6e02d99..a87e7ef 100644
--- a/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -17,7 +17,7 @@
specific language governing permissions and limitations
under the License.
-->
-<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="quickstart_wicket_restful_jdo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="todoapp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modules>
<module id="${rootArtifactId}-dom" dir="dom" name="${rootArtifactId}-dom">
<fileSets>
@@ -147,6 +147,13 @@
<include>**/*.ini</include>
</includes>
</fileSet>
+ <fileSet filtered="true" encoding="UTF-8">
+ <directory>ide/intellij</directory>
+ <includes>
+ <include>**/*.xml</include>
+ <include>**/*.txt</include>
+ </includes>
+ </fileSet>
<fileSet encoding="UTF-8">
<directory>lib</directory>
<includes>
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
index d8ad66c..4b60832 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
@@ -26,7 +26,7 @@
</parent>
<artifactId>${artifactId}</artifactId>
- <name>Quickstart Wicket/Restful/JDO DOM</name>
+ <name>ToDo App DOM</name>
<build>
<resources>
@@ -101,11 +101,15 @@
<artifactId>isis-core-applib</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.isis.objectstore</groupId>
- <artifactId>isis-objectstore-jdo-applib</artifactId>
- </dependency>
-
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-settings-applib</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-devutils-applib</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java
index bf007d5..c63b566 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java
@@ -32,7 +32,6 @@ import org.apache.isis.applib.annotation.Render.Type;
public class ToDoAppDashboard extends AbstractViewModel {
//region > identification in the UI
- // //////////////////////////////////////
public String title() {
return "Dashboard";
}
@@ -43,8 +42,6 @@ public class ToDoAppDashboard extends AbstractViewModel {
//endregion
//region > ViewModel contract
- // //////////////////////////////////////
-
private String memento;
@Override
@@ -60,8 +57,6 @@ public class ToDoAppDashboard extends AbstractViewModel {
//endregion
//region > getAnalysisByCategory (collection)
- // //////////////////////////////////////
-
@Named("By Category")
@Render(Type.EAGERLY)
@Disabled
@@ -71,8 +66,6 @@ public class ToDoAppDashboard extends AbstractViewModel {
//endregion
//region > getAnalysisByDateRange (collection)
- // //////////////////////////////////////
-
@Named("By Date Range")
@Render(Type.EAGERLY)
@Disabled
@@ -82,8 +75,6 @@ public class ToDoAppDashboard extends AbstractViewModel {
//endregion
//region > injected services
- // //////////////////////////////////////
-
@javax.inject.Inject
private ToDoItemAnalysis toDoItemAnalysis;
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java
index abd6268..0062a3e 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java
@@ -21,45 +21,16 @@
*/
package app;
-import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.applib.annotation.ActionSemantics;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
+import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.HomePage;
+import org.apache.isis.applib.services.homepage.AbstractHomePageDashboardService;
+@DomainService
@Hidden
-public class ToDoAppDashboardService {
+public class ToDoAppDashboardService extends AbstractHomePageDashboardService<ToDoAppDashboard> {
- //region > identification in the UI
- // //////////////////////////////////////
-
- private static final String ID = "dashboard";
-
- public String getId() {
- return ID;
- }
-
- public String iconName() {
- return ID;
- }
- //endregion
-
- //region > lookup (action)
- // //////////////////////////////////////
- @ActionSemantics(Of.SAFE)
- @HomePage
- public ToDoAppDashboard lookup() {
- return container.newViewModelInstance(ToDoAppDashboard.class, ID);
+ public ToDoAppDashboardService() {
+ super(ToDoAppDashboard.class);
}
- //endregion
-
- //region > injected services
- // //////////////////////////////////////
-
- @javax.inject.Inject
- private DomainObjectContainer container;
-
- //endregion
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
index 1d4c73b..9609164 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
@@ -33,12 +33,11 @@ import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
@Named("Analysis")
+@DomainService(menuOrder = "20")
public class ToDoItemAnalysis {
//region > identification in the UI
- // //////////////////////////////////////
-
public String getId() {
return "analysis";
}
@@ -49,8 +48,6 @@ public class ToDoItemAnalysis {
//endregion
//region > byCategory (action)
- // //////////////////////////////////////
-
@Named("By Category")
@Bookmarkable
@ActionSemantics(Of.SAFE)
@@ -71,12 +68,10 @@ public class ToDoItemAnalysis {
}
};
}
-
//endregion
//region > byDateRange (action)
- // //////////////////////////////////////
-
+
public enum DateRange {
OverDue,
Today,
@@ -109,8 +104,6 @@ public class ToDoItemAnalysis {
//endregion
//region > forCategory (programmatic)
- // //////////////////////////////////////
-
@Programmatic
public ToDoItemsByCategoryViewModel toDoItemsForCategory(Category category) {
return byCategory().apply(category);
@@ -119,8 +112,6 @@ public class ToDoItemAnalysis {
//endregion
//region > injected services
- // //////////////////////////////////////
-
@javax.inject.Inject
private DomainObjectContainer container;
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java
index ead5e79..21ed821 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java
@@ -23,20 +23,16 @@ package app;
import dom.todo.ToDoItem;
-import org.apache.isis.applib.annotation.ActionSemantics;
+import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.NotContributed;
import org.apache.isis.applib.annotation.NotContributed.As;
-import org.apache.isis.applib.annotation.NotInServiceMenu;
+@DomainService
@Hidden
public class ToDoItemAnalysisContributions {
//region > analyseCategory (action)
- // //////////////////////////////////////
-
@NotInServiceMenu
@NotContributed(As.ASSOCIATION)
@ActionSemantics(Of.SAFE)
@@ -46,8 +42,6 @@ public class ToDoItemAnalysisContributions {
//endregion
//region > injected services
- // //////////////////////////////////////
-
@javax.inject.Inject
private ToDoItemAnalysis toDoAppAnalysis;
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
index 68f23b0..f92cbac 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
@@ -44,8 +44,6 @@ public class ToDoItemsByCategoryViewModel
implements Comparable<ToDoItemsByCategoryViewModel> {
//region > viewModel implementation
- // //////////////////////////////////////
-
@Override
public String viewModelMemento() {
return getCategory().name();
@@ -55,12 +53,9 @@ public class ToDoItemsByCategoryViewModel
public void viewModelInit(String memento) {
setCategory(Category.valueOf(memento));
}
-
//endregion
//region > category (property)
- // //////////////////////////////////////
-
private Category category;
/**
@@ -77,8 +72,6 @@ public class ToDoItemsByCategoryViewModel
//endregion
//region > notYetComplete (property), complete (property)
- // //////////////////////////////////////
-
@MultiLine(numberOfLines=5)
public String getNotYetComplete() {
final List<ToDoItem> notYetComplete = getItemsNotYetComplete();
@@ -115,8 +108,6 @@ public class ToDoItemsByCategoryViewModel
//endregion
//region > getItemsNotYetComplete (collection), getItemsComplete (collection)
- // //////////////////////////////////////
-
/**
* All those items {@link ToDoItems${symbol_pound}notYetComplete() not yet complete}, for this {@link ${symbol_pound}getCategory() category}.
*/
@@ -138,8 +129,6 @@ public class ToDoItemsByCategoryViewModel
//endregion
//region > deleteCompleted (action)
- // //////////////////////////////////////
-
@Named("Delete")
public ToDoItemsByCategoryViewModel deleteCompleted() {
for (ToDoItem item : getItemsComplete()) {
@@ -152,8 +141,6 @@ public class ToDoItemsByCategoryViewModel
//endregion
//region > compareTo
- // //////////////////////////////////////
-
@Override
public int compareTo(ToDoItemsByCategoryViewModel other) {
return ObjectContracts.compare(this, other, "category");
@@ -161,8 +148,6 @@ public class ToDoItemsByCategoryViewModel
//endregion
//region > injected services
- // //////////////////////////////////////
-
@javax.inject.Inject
private ToDoItems toDoItems;
//endregion
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
index ecd2f45..5d2b118 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
@@ -51,8 +51,6 @@ public class ToDoItemsByDateRangeViewModel
implements Comparable<ToDoItemsByDateRangeViewModel> {
//region > viewModel implementation
- // //////////////////////////////////////
-
@Override
public String viewModelMemento() {
return getDateRange().name();
@@ -66,10 +64,6 @@ public class ToDoItemsByDateRangeViewModel
//endregion
//region > dateRange (property)
- // //////////////////////////////////////
- //
- // //////////////////////////////////////
-
private DateRange dateRange;
/**
@@ -86,17 +80,12 @@ public class ToDoItemsByDateRangeViewModel
//endregion
//region > count (derived property)
- // //////////////////////////////////////
-
public int getCount() {
return getItemsNotYetComplete().size();
}
-
//endregion
//region > getItemsNotYetComplete (collection)
- // //////////////////////////////////////
-
/**
* All those items {@link ToDoItems${symbol_pound}notYetComplete() not yet complete}, for this {@link ${symbol_pound}getCategory() category}.
*/
@@ -139,8 +128,6 @@ public class ToDoItemsByDateRangeViewModel
//endregion
//region > compareTo
- // //////////////////////////////////////
-
@Override
public int compareTo(ToDoItemsByDateRangeViewModel other) {
return ObjectContracts.compare(this, other, "dateRange");
@@ -148,14 +135,11 @@ public class ToDoItemsByDateRangeViewModel
//endregion
//region > injected services
- // //////////////////////////////////////
-
@javax.inject.Inject
private ToDoItems toDoItems;
@javax.inject.Inject
private ClockService clockService;
-
//endregion
}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/Categorized.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/Categorized.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/Categorized.java
new file mode 100644
index 0000000..9bb6bad
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/Categorized.java
@@ -0,0 +1,35 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ * 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 dom.todo;
+
+/**
+ * Enables {@link dom.todo.ToDoItemContributions${symbol_pound}updateCategory(dom.todo.Categorized, dom.todo.ToDoItem.Category, dom.todo.ToDoItem.Subcategory)} to be contributed to
+ * both the {@link dom.todo.ToDoItem} (entity) and also the {@link app.ToDoItemWizard} (wizard).
+ */
+public interface Categorized {
+
+ ToDoItem.Category getCategory();
+ void setCategory(ToDoItem.Category category);
+
+ ToDoItem.Subcategory getSubcategory();
+ void setSubcategory(ToDoItem.Subcategory subcategory);
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
index 13672f8..4ddc10d 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
@@ -42,11 +42,10 @@ import org.apache.isis.applib.annotation.Bulk.AppliesTo;
import org.apache.isis.applib.annotation.Bulk.InteractionContext.InvokedAs;
import org.apache.isis.applib.annotation.Command.ExecuteIn;
import org.apache.isis.applib.annotation.Optional;
-import org.apache.isis.applib.clock.Clock;
import org.apache.isis.applib.services.background.BackgroundService;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.command.CommandContext;
-import org.apache.isis.applib.services.eventbus.ActionInvokedEvent;
+import org.apache.isis.applib.services.eventbus.ActionInteractionEvent;
import org.apache.isis.applib.services.eventbus.EventBusService;
import org.apache.isis.applib.services.scratchpad.Scratchpad;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
@@ -104,7 +103,7 @@ import org.apache.isis.applib.value.Clob;
@AutoComplete(repository=ToDoItems.class, action="autoComplete") // default unless overridden by autoCompleteNXxx() method
//@Bounded - if there were a small number of instances only (overrides autoComplete functionality)
@Bookmarkable
-public class ToDoItem implements Comparable<ToDoItem> {
+public class ToDoItem implements Categorized, Comparable<ToDoItem> {
//region > LOG
/**
@@ -115,7 +114,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
// region > title, icon
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public String title() {
final TitleBuffer buf = new TitleBuffer();
buf.append(getDescription());
@@ -135,13 +133,11 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > description (property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private String description;
@javax.jdo.annotations.Column(allowsNull="false", length=100)
- @PostsPropertyChangedEvent()
+ @PropertyInteraction()
@RegEx(validation = "${symbol_escape}${symbol_escape}w[@&:${symbol_escape}${symbol_escape}-${symbol_escape}${symbol_escape},${symbol_escape}${symbol_escape}.${symbol_escape}${symbol_escape}+ ${symbol_escape}${symbol_escape}w]*")
- @TypicalLength(50)
public String getDescription() {
return description;
}
@@ -158,7 +154,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > dueBy (property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@javax.jdo.annotations.Persistent(defaultFetchGroup="true")
private LocalDate dueBy;
@@ -178,13 +173,12 @@ public class ToDoItem implements Comparable<ToDoItem> {
if (dueBy == null) {
return null;
}
- return isMoreThanOneWeekInPast(dueBy) ? "Due by date cannot be more than one week old" : null;
+ return toDoItems.validateDueBy(dueBy);
}
//endregion
//region > category and subcategory (property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static enum Category {
Professional {
@Override
@@ -243,6 +237,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
private Category category;
@javax.jdo.annotations.Column(allowsNull="false")
+ @Disabled(reason="Use action to update both category and subcategory")
public Category getCategory() {
return category;
}
@@ -256,6 +251,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
private Subcategory subcategory;
@javax.jdo.annotations.Column(allowsNull="true")
+ @Disabled(reason="Use action to update both category and subcategory")
public Subcategory getSubcategory() {
return subcategory;
}
@@ -265,7 +261,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > ownedBy (property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
private String ownedBy;
@javax.jdo.annotations.Column(allowsNull="false")
@@ -279,7 +275,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > complete (property), completed (action), notYetCompleted (action)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
private boolean complete;
@Disabled
@@ -291,7 +287,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
this.complete = complete;
}
- @PostsActionInvokedEvent(CompletedEvent.class)
+ @ActionInteraction(CompletedEvent.class)
@Command
@PublishedAction
@Bulk
@@ -319,7 +315,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
return isComplete() ? "Already completed" : null;
}
- @PostsActionInvokedEvent(NoLongerCompletedEvent.class)
+ @ActionInteraction(NoLongerCompletedEvent.class)
@Command
@PublishedAction
@Bulk
@@ -349,7 +345,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > cost (property), updateCost (action)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private BigDecimal cost;
@javax.jdo.annotations.Column(allowsNull="true", scale=2)
@@ -362,7 +357,8 @@ public class ToDoItem implements Comparable<ToDoItem> {
public void setCost(final BigDecimal cost) {
this.cost = cost!=null?cost.setScale(2):null;
}
-
+
+ @ActionSemantics(Of.IDEMPOTENT)
public ToDoItem updateCost(
@Named("New cost")
@javax.validation.constraints.Digits(integer=10, fraction=2)
@@ -393,7 +389,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > notes (property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private String notes;
@javax.jdo.annotations.Column(allowsNull="true", length=400)
@@ -407,7 +402,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > attachment (property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private Blob attachment;
@javax.jdo.annotations.Persistent(defaultFetchGroup="false", columns = {
@javax.jdo.annotations.Column(name = "attachment_name"),
@@ -425,7 +419,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > doc (property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
private Clob doc;
@javax.jdo.annotations.Persistent(defaultFetchGroup="false", columns = {
@javax.jdo.annotations.Column(name = "doc_name"),
@@ -443,7 +436,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > version (derived property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public Long getVersionSequence() {
if(!(this instanceof javax.jdo.spi.PersistenceCapable)) {
return null;
@@ -459,7 +451,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > dependencies (property), add (action), remove (action)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// overrides the natural ordering
public static class DependenciesComparator implements Comparator<ToDoItem> {
@@ -481,8 +472,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
@javax.jdo.annotations.Element(column="dependentId")
private SortedSet<ToDoItem> dependencies = new TreeSet<ToDoItem>();
- @PostsCollectionAddedToEvent
- @PostsCollectionRemovedFromEvent
+ @CollectionInteraction
@SortedBy(DependenciesComparator.class)
public SortedSet<ToDoItem> getDependencies() {
return dependencies;
@@ -491,7 +481,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
public void setDependencies(final SortedSet<ToDoItem> dependencies) {
this.dependencies = dependencies;
}
-
+
public void addToDependencies(final ToDoItem toDoItem) {
getDependencies().add(toDoItem);
}
@@ -504,7 +494,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
@TypicalLength(20)
final ToDoItem toDoItem) {
// By wrapping the call, Isis will detect that the collection is modified
- // and it will automatically send a CollectionAddedToEvent to the Event Bus.
+ // and it will automatically send CollectionInteractionEvents to the Event Bus.
// ToDoItemSubscriptions is a demo subscriber to this event
wrapperFactory.wrapSkipRules(this).addToDependencies(toDoItem);
return this;
@@ -537,7 +527,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
@TypicalLength(20)
final ToDoItem toDoItem) {
// By wrapping the call, Isis will detect that the collection is modified
- // and it will automatically send a CollectionRemovedFromEvent to the Event Bus.
+ // and it will automatically send a CollectionInteractionEvent to the Event Bus.
// ToDoItemSubscriptions is a demo subscriber to this event
wrapperFactory.wrapSkipRules(this).removeFromDependencies(toDoItem);
return this;
@@ -563,7 +553,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > clone (action)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// the name of the action in the UI
// nb: method is not called "clone()" is inherited by java.lang.Object and
@@ -602,8 +591,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > delete (action)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- @PostsActionInvokedEvent(DeletedEvent.class)
+ @ActionInteraction(DeletedEvent.class)
@Bulk
public List<ToDoItem> delete() {
@@ -617,7 +605,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > totalCost (property)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ActionSemantics(Of.SAFE)
@Bulk(AppliesTo.BULK_ONLY)
public BigDecimal totalCost() {
@@ -631,7 +618,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > scheduleExplicitly (action), scheduleImplicitly (background action)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ActionSemantics(Of.IDEMPOTENT)
@Prototype
public ToDoItem scheduleExplicitly() {
@@ -640,8 +626,6 @@ public class ToDoItem implements Comparable<ToDoItem> {
return this;
}
- // //////////////////////////////////////
-
@ActionSemantics(Of.IDEMPOTENT)
@Command(executeIn=ExecuteIn.BACKGROUND)
@Prototype
@@ -652,17 +636,15 @@ public class ToDoItem implements Comparable<ToDoItem> {
//endregion
//region > openSourceCodeOnGithub (action)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@Prototype
@ActionSemantics(Of.SAFE)
public URL openSourceCodeOnGithub() throws MalformedURLException {
- return new URL("https://github.com/apache/isis/tree/master/example/application/${parentArtifactId}/dom/src/main/java/dom/todo/ToDoItem.java");
+ return new URL("https://github.com/apache/isis/tree/master/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java");
}
//endregion
//region > demoException (action)
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static enum DemoExceptionType {
RecoverableException,
RecoverableExceptionAutoEscalated,
@@ -691,8 +673,41 @@ public class ToDoItem implements Comparable<ToDoItem> {
}
//endregion
+ //region > lifecycle callbacks
+
+ public void created() {
+ LOG.debug("lifecycle callback: created: " + container.titleOf(this));
+ }
+
+ public void loaded() {
+ LOG.debug("lifecycle callback: loaded: " + container.titleOf(this));
+ }
+
+ public void persisting() {
+ LOG.debug("lifecycle callback: persisting: " + container.titleOf(this));
+ }
+
+ public void persisted() {
+ LOG.debug("lifecycle callback: persisted: " + container.titleOf(this));
+ }
+
+ public void updating() {
+ LOG.debug("lifecycle callback: updating: " + container.titleOf(this));
+ }
+ public void updated() {
+ LOG.debug("lifecycle callback: updated: " + container.titleOf(this));
+ }
+
+ public void removing() {
+ LOG.debug("lifecycle callback: removing: " + container.titleOf(this));
+ }
+
+ public void removed() {
+ LOG.debug("lifecycle callback: removed: " + container.titleOf(this));
+ }
+ //endregion
+
//region > object-level validation
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* In a real app, if this were actually a rule, then we'd expect that
@@ -705,36 +720,27 @@ public class ToDoItem implements Comparable<ToDoItem> {
}
return null;
}
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//endregion
//region > programmatic helpers
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60 * 1000L;
-
@Programmatic // excluded from the framework's metamodel
public boolean isDue() {
if (getDueBy() == null) {
return false;
}
- return !isMoreThanOneWeekInPast(getDueBy());
- }
-
- private static boolean isMoreThanOneWeekInPast(final LocalDate dueBy) {
- return dueBy.toDateTimeAtStartOfDay().getMillis() < Clock.getTime() - ONE_WEEK_IN_MILLIS;
+ return !toDoItems.isMoreThanOneWeekInPast(getDueBy());
}
//endregion
//region > events
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public static abstract class AbstractActionInvokedEvent extends ActionInvokedEvent<ToDoItem> {
+ public static abstract class AbstractActionInteractionEvent extends ActionInteractionEvent<ToDoItem> {
private static final long serialVersionUID = 1L;
private final String description;
- public AbstractActionInvokedEvent(
- final String description,
- final ToDoItem source,
- final Identifier identifier,
+ public AbstractActionInteractionEvent(
+ final String description,
+ final ToDoItem source,
+ final Identifier identifier,
final Object... arguments) {
super(source, identifier, arguments);
this.description = description;
@@ -744,7 +750,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
}
}
- public static class CompletedEvent extends AbstractActionInvokedEvent {
+ public static class CompletedEvent extends AbstractActionInteractionEvent {
private static final long serialVersionUID = 1L;
public CompletedEvent(
final ToDoItem source,
@@ -754,7 +760,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
}
}
- public static class NoLongerCompletedEvent extends AbstractActionInvokedEvent {
+ public static class NoLongerCompletedEvent extends AbstractActionInteractionEvent {
private static final long serialVersionUID = 1L;
public NoLongerCompletedEvent(
final ToDoItem source,
@@ -764,7 +770,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
}
}
- public static class DeletedEvent extends AbstractActionInvokedEvent {
+ public static class DeletedEvent extends AbstractActionInteractionEvent {
private static final long serialVersionUID = 1L;
public DeletedEvent(
final ToDoItem source,
@@ -773,12 +779,11 @@ public class ToDoItem implements Comparable<ToDoItem> {
super("deleted", source, identifier, arguments);
}
}
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
//endregion
//region > predicates
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static class Predicates {
public static Predicate<ToDoItem> thoseOwnedBy(final String currentUser) {
@@ -853,7 +858,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
}
}
- // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
//endregion
//region > toString, compareTo
@@ -884,12 +889,12 @@ public class ToDoItem implements Comparable<ToDoItem> {
@javax.inject.Inject
@SuppressWarnings("unused")
private ClockService clockService;
-
+
Bulk.InteractionContext bulkInteractionContext;
public void injectBulkInteractionContext(Bulk.InteractionContext bulkInteractionContext) {
this.bulkInteractionContext = bulkInteractionContext;
}
-
+
@SuppressWarnings("unused")
@javax.inject.Inject
private CommandContext commandContext;
@@ -907,6 +912,7 @@ public class ToDoItem implements Comparable<ToDoItem> {
@javax.inject.Inject
private WrapperFactory wrapperFactory;
+
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//endregion
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json
index db9e7d2..f15424d 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.layout.json
@@ -15,68 +15,62 @@
* limitations under the License.
*/
{
- columns: [
+ "columns": [
{
- span: 6,
- memberGroups: {
- General: {
- members: {
- description: {
- typicalLength: { value: 50 }
+ "span": 6,
+ "memberGroups": {
+ "General": {
+ "members": {
+ "description": {
+ "typicalLength": { "value": 50 }
},
- category: {
- disabled: {
- reason: "Use action to update both category and subcategory"
- }
+ "category": {
},
- subcategory: {
- disabled: {
- reason: "Use action to update both category and subcategory"
- },
- actions: {
- updateCategory: {
- named: {
- value: "Update"
+ "subcategory": {
+ "actions": {
+ "updateCategory": {
+ "named": {
+ "value": "Update"
}
},
- analyseCategory: {}
+ "analyseCategory": {}
}
},
- ownedBy: {
- hidden: {}
+ "ownedBy": {
+ "hidden": {}
},
- complete: {
- actions: {
- completed: {
- named: { value: "Done" },
- describedAs: {
- value: "Mark this todo item as having been completed"
+ "complete": {
+ "actions": {
+ "completed": {
+ "named": { "value": "Done" },
+ "describedAs": {
+ "value": "Mark this todo item as having been completed"
},
- cssClass: { value: "x-highlight" }
+ "cssClass": { "value": "x-highlight" }
},
- notYetCompleted: {
- named: { value: "Not done" }
+ "notYetCompleted": {
+ "named": { "value": "Not done" }
},
- scheduleExplicitly: {
+ "scheduleExplicitly": {
},
- scheduleImplicitly: {
+ "scheduleImplicitly": {
}
},
- describedAs: {
- value: "Whether this todo item has been completed"
+ "describedAs": {
+ "value": "Whether this todo item has been completed"
}
}
}
},
- Misc: {
- members: {
- versionSequence: {
- named: {
- value: "Version"
+ "Misc": {
+ "members": {
+ "versionSequence": {
+ "named": {
+ "value": "Version"
},
- disabled: {},
- hidden: {
- where: ALL_TABLES
+ "disabled": {},
+ "hidden": {
+ "where": "ALL_TABLES"
}
}
}
@@ -84,48 +78,48 @@
}
},
{
- span: 6,
- memberGroups: {
- Priority: {
- members: {
- relativePriority: {
- actions: {
- previous: {},
- next: {}
+ "span": 6,
+ "memberGroups": {
+ "Priority": {
+ "members": {
+ "relativePriority": {
+ "actions": {
+ "previous": {},
+ "next": {}
}
},
- dueBy: {
- cssClass: { value: "x-key" }
+ "dueBy": {
+ "cssClass": { "value": "x-key" }
}
}
},
- Other: {
- members: {
- cost: {
- actions: {
- updateCost:{
- named: {
- value: "Update"
+ "Other": {
+ "members": {
+ "cost": {
+ "actions": {
+ "updateCost":{
+ "named": {
+ "value": "Update"
}
}
}
},
- notes: {
- multiLine: {
- numberOfLines: 5
+ "notes": {
+ "multiLine": {
+ "numberOfLines": 5
},
- hidden: {
- where: ALL_TABLES
+ "hidden": {
+ "where": "ALL_TABLES"
}
},
- attachment: {
- hidden: {
- where: STANDALONE_TABLES
+ "attachment": {
+ "hidden": {
+ "where": "STANDALONE_TABLES"
}
},
- doc: {
- hidden: {
- where: STANDALONE_TABLES
+ "doc": {
+ "hidden": {
+ "where": "STANDALONE_TABLES"
}
}
}
@@ -133,49 +127,49 @@
}
},
{
- span: 0
+ "span": 0
},
{
- span: 6,
- collections: {
- dependencies: {
- disabled: {},
- actions: {
- add:{},
- remove: {
- cssClass: { value: "x-caution" }
+ "span": 6,
+ "collections": {
+ "dependencies": {
+ "disabled": {},
+ "actions": {
+ "add":{},
+ "remove": {
+ "cssClass": { "value": "x-caution" }
}
},
- paged: {
- value: 5
+ "paged": {
+ "value": 5
},
- render: {
- value: EAGERLY
+ "render": {
+ "value": "EAGERLY"
}
},
- similarTo: {
- disabled: {},
- paged: {
- value: 3
+ "similarTo": {
+ "disabled": {},
+ "paged": {
+ "value": 3
},
- render: {
- value: LAZILY
+ "render": {
+ "value": "LAZILY"
}
}
}
}
],
- actions: {
- totalCost: {},
- delete: {
- cssClass: { value: "x-caution" }
+ "actions": {
+ "totalCost": {},
+ "delete": {
+ "cssClass": { "value": "x-caution" }
},
- duplicate: {
- named: {
- value: "Clone"
+ "duplicate": {
+ "named": {
+ "value": "Clone"
},
- describedAs: {
- value: "Create a new todo item from this one"
+ "describedAs": {
+ "value": "Create a new todo item from this one"
}
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemChangedPayloadFactory.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemChangedPayloadFactory.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemChangedPayloadFactory.java
index 7c03f19..f88ec1c 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemChangedPayloadFactory.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemChangedPayloadFactory.java
@@ -42,6 +42,7 @@ public class ToDoItemChangedPayloadFactory implements PayloadFactory{
return getChanged().getDescription();
}
}
+
@Override
public EventPayload payloadFor(Object changedObject, ChangeKind changeKind) {
return new ToDoItemPayload((ToDoItem) changedObject);
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java
index eb7c606..789796d 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemContributions.java
@@ -39,11 +39,10 @@ import org.apache.isis.applib.annotation.NotContributed.As;
import org.apache.isis.applib.query.QueryDefault;
import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
+@DomainService
public class ToDoItemContributions extends AbstractFactoryAndRepository {
//region > priority (contributed property)
- // //////////////////////////////////////
-
@DescribedAs("The relative priority of this item compared to others not yet complete (using 'due by' date)")
@NotInServiceMenu
@ActionSemantics(Of.SAFE)
@@ -70,7 +69,6 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
}}, ToDoItemContributions.class, "relativePriority", toDoItem);
}
-
private List<ToDoItem> sortedNotYetComplete() {
return ORDERING_DUE_BY
.compound(ORDERING_DESCRIPTION)
@@ -97,8 +95,6 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
//endregion
//region > next, previous (contributed actions)
- // //////////////////////////////////////
-
@DescribedAs("The next item not yet completed")
@NotInServiceMenu
@ActionSemantics(Of.SAFE)
@@ -163,8 +159,6 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
//endregion
//region > similarTo (contributed collection)
- // //////////////////////////////////////
-
@NotInServiceMenu
@ActionSemantics(Of.SAFE)
@NotContributed(As.ACTION)
@@ -189,52 +183,45 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
//endregion
//region > updateCategory (contributed action)
- // //////////////////////////////////////
@DescribedAs("Update category and subcategory")
@NotInServiceMenu
@ActionSemantics(Of.IDEMPOTENT)
- public ToDoItem updateCategory(
- final ToDoItem item,
+ public Categorized updateCategory(
+ final Categorized item,
final @Named("Category") Category category,
final @Optional @Named("Subcategory") Subcategory subcategory) {
item.setCategory(category);
item.setSubcategory(subcategory);
return item;
}
-
public Category default1UpdateCategory(
- final ToDoItem item) {
+ final Categorized item) {
return item != null? item.getCategory(): null;
}
public Subcategory default2UpdateCategory(
- final ToDoItem item) {
+ final Categorized item) {
return item != null? item.getSubcategory(): null;
}
public List<Subcategory> choices2UpdateCategory(
- final ToDoItem item, final Category category) {
+ final Categorized item, final Category category) {
return Subcategory.listFor(category);
}
public String validateUpdateCategory(
- final ToDoItem item, final Category category, final Subcategory subcategory) {
+ final Categorized item, final Category category, final Subcategory subcategory) {
return Subcategory.validate(category, subcategory);
}
//endregion
//region > helpers
- // //////////////////////////////////////
-
protected String currentUserName() {
return getContainer().getUser().getName();
}
-
//endregion
//region > injected services
- // //////////////////////////////////////
-
@javax.inject.Inject
private ToDoItems toDoItems;
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
index 1ee6d98..dab085e 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
@@ -23,33 +23,52 @@ package dom.todo;
import java.util.EventObject;
import java.util.List;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.eventbus.Subscribe;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.NonRecoverableException;
import org.apache.isis.applib.RecoverableException;
import org.apache.isis.applib.annotation.*;
-import org.apache.isis.applib.services.eventbus.CollectionAddedToEvent;
-import org.apache.isis.applib.services.eventbus.CollectionRemovedFromEvent;
+import org.apache.isis.applib.services.eventbus.ActionInteractionEvent;
+import org.apache.isis.applib.services.eventbus.CollectionInteractionEvent;
import org.apache.isis.applib.services.eventbus.EventBusService;
-import org.apache.isis.applib.services.eventbus.PropertyChangedEvent;
+import org.apache.isis.applib.services.eventbus.PropertyInteractionEvent;
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.transform;
+import static com.google.common.collect.Lists.newArrayList;
+
+@DomainService
public class ToDoItemSubscriptions {
//region > LOG
private final static org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(ToDoItemSubscriptions.class);
//endregion
-
//region > on(Event)...
- // //////////////////////////////////////
+
public static enum Behaviour {
- AcceptEvents,
- RejectEventsWithRecoverableException,
- RejectEventsWithNonRecoverableException,
- ThrowOtherException
+ AnyExecuteAccept,
+ AnyExecuteVetoWithRecoverableException,
+ AnyExecuteVetoWithNonRecoverableException,
+ AnyExecuteVetoWithOtherException,
+ UpdateCostActionHide,
+ UpdateCostActionDisable,
+ UpdateCostActionInvalidate,
+ DescriptionPropertyHide,
+ DescriptionPropertyDisable,
+ DescriptionPropertyInvalidate,
+ DependenciesCollectionHide,
+ // not implemented in Wicket viewer, but supported in wrapped objects
+ DependenciesCollectionDisable,
+ // not implemented in Wicket viewer, but supported in wrapped objects
+ DependenciesCollectionInvalidateAdd,
+ DependenciesCollectionInvalidateRemove,
+ SimilarToCollectionHide
}
- private Behaviour behaviour = Behaviour.AcceptEvents;
+ private Behaviour behaviour = Behaviour.AnyExecuteAccept;
/**
* To demo/test what occurs if a subscriber that might veto an event.
@@ -58,77 +77,177 @@ public class ToDoItemSubscriptions {
@MemberOrder(name = "Prototyping", sequence = "80")
@Named("Set subscriber behaviour")
@ActionSemantics(ActionSemantics.Of.IDEMPOTENT)
- public String subscriberBehaviour(@Named("Behaviour") Behaviour behaviour) {
+ public ToDoItem subscriberBehaviour(ToDoItem toDoItem, @Named("Behaviour") Behaviour behaviour) {
this.behaviour = behaviour;
- return "Subscriber behaviour set to: " + behaviour;
+ container.informUser("Subscriber behaviour set to: " + behaviour);
+ return toDoItem;
}
- public Behaviour default0SubscriberBehaviour() {
+ public Behaviour default1SubscriberBehaviour() {
return this.behaviour;
}
+
@Programmatic
public Behaviour getSubscriberBehaviour() {
return behaviour;
}
- private void rejectIfRequired() {
- if(behaviour == Behaviour.RejectEventsWithRecoverableException) {
+ private void onExecutedVetoIfRequired() {
+ if(behaviour == Behaviour.AnyExecuteVetoWithRecoverableException) {
throw new RecoverableException("Rejecting event (recoverable exception thrown)");
}
- if(behaviour == Behaviour.RejectEventsWithNonRecoverableException) {
+ if(behaviour == Behaviour.AnyExecuteVetoWithNonRecoverableException) {
throw new NonRecoverableException("Rejecting event (recoverable exception thrown)");
}
- if(behaviour == Behaviour.ThrowOtherException) {
+ if(behaviour == Behaviour.AnyExecuteVetoWithOtherException) {
throw new RuntimeException("Throwing some other exception");
}
}
//endregion
- //region > on(Event)...
- // //////////////////////////////////////
-
+ //region > on(Event) for ToDoItem-specific events
@Programmatic
@Subscribe
- public void on(ToDoItem.AbstractActionInvokedEvent ev) {
- rejectIfRequired();
+ public void on(final ToDoItem.CompletedEvent ev) {
recordEvent(ev);
- LOG.info(ev.getEventDescription() + ": " + container.titleOf(ev.getSource()));
+ switch(ev.getPhase()) {
+ case HIDE:
+ break;
+ case DISABLE:
+ break;
+ case VALIDATE:
+ break;
+ case EXECUTING:
+ break;
+ case EXECUTED:
+ LOG.info("Received ToDoItem.CompletedEvent for : " + container.titleOf(ev.getSource()));
+ break;
+ }
}
+ //endregion
+ //region > on(Event) ... general purpose
@Programmatic
@Subscribe
- public void on(PropertyChangedEvent<?,?> ev) {
- rejectIfRequired();
+ public void on(final ActionInteractionEvent<?> ev) {
recordEvent(ev);
- if(ev.getIdentifier().getMemberName().contains("description")) {
- String newValue = (String) ev.getNewValue();
- if(newValue.matches(".*demo veto.*")) {
- throw new RecoverableException("oh no you don't! " + ev.getNewValue());
- }
+ switch(ev.getPhase()) {
+ case HIDE:
+ if(getSubscriberBehaviour() == Behaviour.UpdateCostActionHide) {
+ if(ev.getIdentifier().getMemberName().equals("updateCost")) {
+ ev.hide();
+ }
+ }
+ break;
+ case DISABLE:
+ if(getSubscriberBehaviour() == Behaviour.UpdateCostActionDisable) {
+ if(ev.getIdentifier().getMemberName().equals("updateCost")) {
+ ev.disable("ToDoItemSubscriptions says: updateCost action disabled!");
+ }
+ }
+ break;
+ case VALIDATE:
+ if(getSubscriberBehaviour() == Behaviour.UpdateCostActionInvalidate &&
+ ev.getIdentifier().getMemberName().equals("updateCost")) {
+ ev.disable("ToDoItemSubscriptions says: can't invoke updateCostaction with these args!");
+ }
+ break;
+ case EXECUTING:
+ break;
+ case EXECUTED:
+ LOG.info("Received ActionInteractionEvent, " + container.titleOf(ev.getSource()) + ", invoked " + ev.getIdentifier().getMemberName());
+ onExecutedVetoIfRequired();
+ break;
}
- LOG.info(container.titleOf(ev.getSource()) + ", changed " + ev.getIdentifier().getMemberName() + " : " + ev.getOldValue() + " -> " + ev.getNewValue());
}
-
+
@Programmatic
@Subscribe
- public void on(CollectionAddedToEvent<?,?> ev) {
- rejectIfRequired();
+ public void on(PropertyInteractionEvent<?,?> ev) {
recordEvent(ev);
- LOG.info(container.titleOf(ev.getSource()) + ", added to " + ev.getIdentifier().getMemberName() + " : " + ev.getValue());
+ switch(ev.getPhase()) {
+ case HIDE:
+ if(getSubscriberBehaviour() == Behaviour.DescriptionPropertyHide &&
+ ev.getIdentifier().getMemberName().equals("description")) {
+ ev.hide();
+ }
+ break;
+ case DISABLE:
+ if(getSubscriberBehaviour() == Behaviour.DescriptionPropertyDisable &&
+ ev.getIdentifier().getMemberName().equals("description")) {
+ ev.disable("ToDoItemSubscriptions says: description property disabled!");
+ }
+ break;
+ case VALIDATE:
+ if(getSubscriberBehaviour() == Behaviour.DescriptionPropertyInvalidate &&
+ ev.getIdentifier().getMemberName().equals("description")) {
+ ev.disable("ToDoItemSubscriptions says: can't change description property to this value!");
+ }
+ break;
+ case EXECUTING:
+ break;
+ case EXECUTED:
+ LOG.info("Received PropertyInteractionEvent, " + container.titleOf(ev.getSource()) + ", changed " + ev.getIdentifier().getMemberName() + " : " + ev.getOldValue() + " -> " + ev.getNewValue());
+ onExecutedVetoIfRequired();
+
+ if(ev.getIdentifier().getMemberName().contains("description")) {
+ String newValue = (String) ev.getNewValue();
+ if(newValue.matches(".*demo veto.*")) {
+ throw new RecoverableException("oh no you don't! " + ev.getNewValue());
+ }
+ }
+ break;
+ }
}
@Programmatic
@Subscribe
- public void on(CollectionRemovedFromEvent<?,?> ev) {
- rejectIfRequired();
+ public void on(CollectionInteractionEvent<?,?> ev) {
recordEvent(ev);
- LOG.info(container.titleOf(ev.getSource()) + ", removed from " + ev.getIdentifier().getMemberName() + " : " + ev.getValue());
- }
+ switch (ev.getPhase()) {
+ case HIDE:
+ if(getSubscriberBehaviour() == Behaviour.DependenciesCollectionHide &&
+ ev.getIdentifier().getMemberName().equals("dependencies")) {
+ ev.hide();
+ }
+ if (getSubscriberBehaviour() == Behaviour.SimilarToCollectionHide &&
+ ev.getIdentifier().getMemberName().equals("similarTo")) {
+ ev.hide();
+ }
+ break;
+ case DISABLE:
+ if (getSubscriberBehaviour() == Behaviour.DependenciesCollectionDisable &&
+ ev.getIdentifier().getMemberName().equals("dependencies")) {
+ ev.disable("ToDoItemSubscriptions says: dependencies collection disabled!");
+ }
+ break;
+ case VALIDATE:
+ if(getSubscriberBehaviour() == Behaviour.DependenciesCollectionInvalidateAdd &&
+ ev.getIdentifier().getMemberName().equals("dependencies") &&
+ ev.getOf() == CollectionInteractionEvent.Of.ADD_TO ) {
+ ev.invalidate("ToDoItemSubscriptions says: can't add this object to dependencies collection!");
+ }
+ if(getSubscriberBehaviour() == Behaviour.DependenciesCollectionInvalidateRemove &&
+ ev.getIdentifier().getMemberName().equals("dependencies") &&
+ ev.getOf() == CollectionInteractionEvent.Of.REMOVE_FROM ) {
+ ev.invalidate("ToDoItemSubscriptions says: can't remove this object from dependencies collection!");
+ }
+ break;
+ case EXECUTING:
+ break;
+ case EXECUTED:
+ if(ev.getOf() == CollectionInteractionEvent.Of.ADD_TO) {
+ LOG.info("Received CollectionInteractionEvent, " + container.titleOf(ev.getSource()) + ", added to " + ev.getIdentifier().getMemberName() + " : " + ev.getValue());
+ } else {
+ LOG.info("Received CollectionInteractionEvent, " + container.titleOf(ev.getSource()) + ", removed from " + ev.getIdentifier().getMemberName() + " : " + ev.getValue());
+ }
+ onExecutedVetoIfRequired();
+ break;
+ }
+ }
//endregion
//region > receivedEvents
- // //////////////////////////////////////
-
private final List<java.util.EventObject> receivedEvents = Lists.newLinkedList();
/**
@@ -138,19 +257,43 @@ public class ToDoItemSubscriptions {
public List<java.util.EventObject> receivedEvents() {
return receivedEvents;
}
+
+ /**
+ * Used in integration tests.
+ */
+ @Programmatic
+ public <T extends java.util.EventObject> List<T> receivedEvents(final Class<T> expectedType) {
+ return newArrayList(
+ transform(
+ filter(receivedEvents, instanceOf(expectedType)),
+ castTo(expectedType)));
+ }
+
+ private static <T extends EventObject> Function<EventObject, T> castTo(Class<T> expectedType) {
+ return new Function<EventObject, T>() {
+ @Override
+ public T apply(EventObject input) {
+ return (T) input;
+ }
+ };
+ }
+
+ private static <T extends EventObject> Predicate<EventObject> instanceOf(final Class<T> expectedType) {
+ return new Predicate<EventObject>() {
+ @Override
+ public boolean apply(EventObject input) {
+ return expectedType.isInstance(input);
+ }
+ };
+ }
+
/**
* Used in integration tests.
*/
@Programmatic
public <T extends java.util.EventObject> T mostRecentlyReceivedEvent(Class<T> expectedType) {
- if (receivedEvents.isEmpty()) {
- return null;
- }
- final EventObject ev = receivedEvents.get(0);
- if(!expectedType.isAssignableFrom(ev.getClass())) {
- return null;
- }
- return expectedType.cast(ev);
+ final List<T> receivedEvents = receivedEvents(expectedType);
+ return !receivedEvents.isEmpty() ? receivedEvents.get(0) : null;
}
private void recordEvent(final java.util.EventObject ev) {
receivedEvents.add(0, ev);
@@ -161,20 +304,17 @@ public class ToDoItemSubscriptions {
@Programmatic
public void reset() {
receivedEvents.clear();
- subscriberBehaviour(ToDoItemSubscriptions.Behaviour.AcceptEvents);
+ subscriberBehaviour(null, ToDoItemSubscriptions.Behaviour.AnyExecuteAccept);
}
-
//endregion
-
//region > injected services
- // //////////////////////////////////////
-
@javax.inject.Inject
private DomainObjectContainer container;
@SuppressWarnings("unused")
private EventBusService eventBusService;
+ @Programmatic
public final void injectEventBusService(EventBusService eventBusService) {
eventBusService.register(this);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
index 7c58d7c..bee7631 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
@@ -35,11 +35,10 @@ import org.apache.isis.applib.query.QueryDefault;
import org.apache.isis.applib.services.clock.ClockService;
@Named("ToDos")
+@DomainService(menuOrder = "10", repositoryFor = ToDoItem.class)
public class ToDoItems {
//region > identification in the UI
- // //////////////////////////////////////
-
public String getId() {
return "toDoItems";
}
@@ -50,11 +49,9 @@ public class ToDoItems {
//endregion
//region > notYetComplete (action)
- // //////////////////////////////////////
-
@Bookmarkable
@ActionSemantics(Of.SAFE)
- @MemberOrder(sequence = "1")
+ @MemberOrder(sequence = "10")
public List<ToDoItem> notYetComplete() {
final List<ToDoItem> items = notYetCompleteNoUi();
if(items.isEmpty()) {
@@ -73,10 +70,8 @@ public class ToDoItems {
//endregion
//region > complete (action)
- // //////////////////////////////////////
-
@ActionSemantics(Of.SAFE)
- @MemberOrder(sequence = "3")
+ @MemberOrder(sequence = "20")
public List<ToDoItem> complete() {
final List<ToDoItem> items = completeNoUi();
if(items.isEmpty()) {
@@ -95,12 +90,10 @@ public class ToDoItems {
//endregion
//region > categorized (action)
- // //////////////////////////////////////
-
@SuppressWarnings("unchecked")
@Bookmarkable
@ActionSemantics(Of.SAFE)
- @MemberOrder(sequence = "30")
+ @MemberOrder(sequence = "40")
public List<ToDoItem> categorized(
@Named("Category") final Category category,
@Named("Subcategory") final Subcategory subcategory,
@@ -134,9 +127,7 @@ public class ToDoItems {
//endregion
//region > newToDo (action)
- // //////////////////////////////////////
-
- @MemberOrder(sequence = "40")
+ @MemberOrder(sequence = "5")
public ToDoItem newToDo(
final @RegEx(validation = "${symbol_escape}${symbol_escape}w[@&:${symbol_escape}${symbol_escape}-${symbol_escape}${symbol_escape},${symbol_escape}${symbol_escape}.${symbol_escape}${symbol_escape}+ ${symbol_escape}${symbol_escape}w]*") @Named("Description") String description,
final @Named("Category") Category category,
@@ -167,8 +158,7 @@ public class ToDoItems {
//endregion
//region > allToDos (action)
- // //////////////////////////////////////
-
+ @Prototype
@ActionSemantics(Of.SAFE)
@MemberOrder(sequence = "50")
public List<ToDoItem> allToDos() {
@@ -184,8 +174,6 @@ public class ToDoItems {
//endregion
//region > autoComplete (programmatic)
- // //////////////////////////////////////
-
@Programmatic // not part of metamodel
public List<ToDoItem> autoComplete(final String description) {
return container.allMatches(
@@ -197,8 +185,6 @@ public class ToDoItems {
//endregion
//region > helpers
- // //////////////////////////////////////
-
@Programmatic // for use by fixtures
public ToDoItem newToDo(
final String description,
@@ -226,9 +212,20 @@ public class ToDoItems {
//endregion
+ //region > common validation
+ private static final long ONE_WEEK_IN_MILLIS = 7 * 24 * 60 * 60 * 1000L;
+
+ @Programmatic
+ public String validateDueBy(LocalDate dueBy) {
+ return isMoreThanOneWeekInPast(dueBy) ? "Due by date cannot be more than one week old" : null;
+ }
+ @Programmatic
+ boolean isMoreThanOneWeekInPast(final LocalDate dueBy) {
+ return dueBy.toDateTimeAtStartOfDay().getMillis() < clockService.nowAsMillis() - ONE_WEEK_IN_MILLIS;
+ }
+ //endregion
+
//region > injected services
- // //////////////////////////////////////
-
@javax.inject.Inject
private DomainObjectContainer container;
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoItemTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoItemTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoItemTest.java
new file mode 100644
index 0000000..5020190
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoItemTest.java
@@ -0,0 +1,94 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+ * 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 dom.todo;
+
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.apache.isis.applib.annotation.Bulk;
+import org.apache.isis.applib.services.eventbus.EventBusService;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+public abstract class ToDoItemTest {
+
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+ @Mock
+ EventBusService eventBusService;
+
+ ToDoItem toDoItem;
+
+ @Before
+ public void setUp() throws Exception {
+ toDoItem = new ToDoItem();
+
+ toDoItem.bulkInteractionContext = Bulk.InteractionContext.regularAction(toDoItem);
+ toDoItem.eventBusService = eventBusService;
+
+ context.ignoring(eventBusService);
+ }
+
+ public static class Actions {
+
+ public static class Completed extends ToDoItemTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ toDoItem.setComplete(false);
+ assertThat(toDoItem.disableCompleted(), is(nullValue()));
+
+ // when
+ toDoItem.completed();
+
+ // then
+ assertThat(toDoItem.isComplete(), is(true));
+ assertThat(toDoItem.disableCompleted(), is(not(nullValue())));
+ }
+ }
+
+ public static class NotYetCompleted extends ToDoItemTest {
+
+ @Test
+ public void happyCase() throws Exception {
+
+ // given
+ toDoItem.setComplete(true);
+ assertThat(toDoItem.disableNotYetCompleted(), is(nullValue()));
+
+ // when
+ toDoItem.notYetCompleted();
+
+ // then
+ assertThat(toDoItem.isComplete(), is(false));
+ assertThat(toDoItem.disableNotYetCompleted(), is(not(nullValue())));
+ }
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/95b3e9ec/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoTest_completed.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoTest_completed.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoTest_completed.java
deleted file mode 100644
index 718460f..0000000
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/test/java/dom/todo/ToDoTest_completed.java
+++ /dev/null
@@ -1,71 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-/**
- * 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 dom.todo;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-import org.jmock.auto.Mock;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-
-import org.apache.isis.applib.annotation.Bulk;
-import org.apache.isis.applib.services.eventbus.EventBusService;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-
-public class ToDoTest_completed {
-
- @Rule
- public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
-
- @Mock
- private EventBusService eventBusService;
-
- private ToDoItem toDoItem;
-
- @Before
- public void setUp() throws Exception {
- toDoItem = new ToDoItem();
- toDoItem.bulkInteractionContext = Bulk.InteractionContext.regularAction(toDoItem);
- toDoItem.eventBusService = eventBusService;
-
- context.ignoring(eventBusService);
-
- toDoItem.setComplete(false);
- }
-
- @Test
- public void happyCase() throws Exception {
- // given
- assertThat(toDoItem.disableCompleted(), is(nullValue()));
-
- // when
- toDoItem.completed();
-
- // then
- assertThat(toDoItem.isComplete(), is(true));
- assertThat(toDoItem.disableCompleted(), is(not(nullValue())));
- }
-
-}
[03/39] git commit: ISIS-839: core,
updates to comments only for isis-module-background
Posted by da...@apache.org.
ISIS-839: core, updates to comments only for isis-module-background
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d2394b81
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d2394b81
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d2394b81
Branch: refs/heads/master
Commit: d2394b81dcdedb108b3a48a9bb280b5c2c86af8c
Parents: 0ddb462
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 21 11:10:01 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 21 11:10:01 2014 +0100
----------------------------------------------------------------------
.../applib/services/background/ActionInvocationMemento.java | 8 ++------
.../applib/services/background/BackgroundCommandService.java | 2 +-
.../metamodel/facets/actions/interaction/CommandUtil.java | 2 +-
3 files changed, 4 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/d2394b81/core/applib/src/main/java/org/apache/isis/applib/services/background/ActionInvocationMemento.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/background/ActionInvocationMemento.java b/core/applib/src/main/java/org/apache/isis/applib/services/background/ActionInvocationMemento.java
index 8b9e983..d9a51c6 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/background/ActionInvocationMemento.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/background/ActionInvocationMemento.java
@@ -18,9 +18,6 @@ package org.apache.isis.applib.services.background;
import java.util.Iterator;
import java.util.List;
-
-import com.google.common.primitives.Primitives;
-
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.memento.MementoService;
import org.apache.isis.applib.services.memento.MementoService.Memento;
@@ -31,9 +28,8 @@ import org.apache.isis.applib.services.memento.MementoService.Memento;
*
* <p>
* Provided as a mechanism by which implementations of {@link BackgroundService} can
- * hand-off work to the {@link BackgroundCommandService} through
- * {@link BackgroundCommandService#execute(ActionInvocationMemento)}. This is used by the
- * default implementation of <tt>BackgroundServiceDefault</tt> in Isis' core-runtime.
+ * hand-off work to the {@link BackgroundCommandService}. This is used by the
+ * default implementation of <tt>BackgroundServiceDefault</tt> in the <tt>isis-module-background</tt> module.
*
* <p>
* Implementation-wise this is a wrapper around {@link MementoService.Memento},
http://git-wip-us.apache.org/repos/asf/isis/blob/d2394b81/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java b/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java
index 092ad82..6a291c1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java
@@ -25,7 +25,7 @@ import org.apache.isis.applib.services.command.Command;
*
* <p>
* Separate from {@link BackgroundService} primarily so that the default
- * implementation, <tt>BackgroundServiceDefault</tt> (in core-runtime) can
+ * implementation, <tt>BackgroundServiceDefault</tt> (in <tt>isis-module-background</tt>) can
* delegate to different implementations of this service.
*
* <p>
http://git-wip-us.apache.org/repos/asf/isis/blob/d2394b81/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/CommandUtil.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/CommandUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/CommandUtil.java
index 92ccb24..14d50b6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/CommandUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/interaction/CommandUtil.java
@@ -39,7 +39,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
/**
- * Factoring out the commonality between {@link ActionInvocationFacetViaMethod} and <tt>BackgroundServiceDefault</tt>.
+ * Factoring out the commonality between <tt>ActionInvocationFacetViaMethod</tt> and <tt>BackgroundServiceDefault</tt>.
*/
public class CommandUtil {
[34/39] git commit: [maven-release-plugin] prepare for next
development iteration
Posted by da...@apache.org.
[maven-release-plugin] prepare for next development iteration
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e35f974a
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e35f974a
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e35f974a
Branch: refs/heads/master
Commit: e35f974a150afb98432586feac403290278484f6
Parents: 055a18c
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jul 25 08:26:31 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:26:31 2014 +0100
----------------------------------------------------------------------
example/archetype/todoapp/pom.xml | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/e35f974a/example/archetype/todoapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/pom.xml b/example/archetype/todoapp/pom.xml
index c8cb973..dd73d4a 100644
--- a/example/archetype/todoapp/pom.xml
+++ b/example/archetype/todoapp/pom.xml
@@ -21,7 +21,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.isis.archetype</groupId>
<artifactId>todoapp-archetype</artifactId>
- <version>1.6.0</version>
+ <version>1.7.0-SNAPSHOT</version>
<packaging>maven-archetype</packaging>
<name>todoapp-archetype</name>
<build>
@@ -47,8 +47,4 @@
<version>1.6.0</version>
<relativePath>../../../core/pom.xml</relativePath>
</parent>
-
- <scm>
- <tag>todoapp-archetype-1.6.0-RC3</tag>
- </scm>
</project>
[05/39] git commit: ISIS-839: further fix for Vfs discovery of
@DomainService classes
Posted by da...@apache.org.
ISIS-839: further fix for Vfs discovery of @DomainService classes
(get rid of noisy/harmless exception stack trace).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/19cfaa86
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/19cfaa86
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/19cfaa86
Branch: refs/heads/master
Commit: 19cfaa8630475aa23bf9a064d463ca534644529a
Parents: 4e93d1b
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 21 12:32:21 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 21 12:33:42 2014 +0100
----------------------------------------------------------------------
.../ClassDiscoveryServiceUsingReflections.java | 111 +++++++++++--------
1 file changed, 64 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/19cfaa86/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java b/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java
index 993319f..ea123e7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceUsingReflections.java
@@ -23,13 +23,13 @@ import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
import com.google.common.collect.Lists;
import org.reflections.Reflections;
import org.reflections.scanners.SubTypesScanner;
import org.reflections.util.ClasspathHelper;
-import org.reflections.util.ConfigurationBuilder;
import org.reflections.vfs.SystemDir;
import org.reflections.vfs.Vfs;
import org.apache.isis.applib.AbstractService;
@@ -53,16 +53,13 @@ public class ClassDiscoveryServiceUsingReflections
@Override
public <T> Set<Class<? extends T>> findSubTypesOfClasses(Class<T> type) {
- List<Vfs.UrlType> urlTypes = getUrlTypes();
- Vfs.setDefaultURLTypes(urlTypes);
+ Vfs.setDefaultURLTypes(getUrlTypes());
- ConfigurationBuilder configuration = ConfigurationBuilder.build(
+ final Reflections reflections = new Reflections(
ClasspathHelper.forClassLoader(Thread.currentThread().getContextClassLoader()),
ClasspathHelper.forClass(Object.class),
- new SubTypesScanner(false));
- // doesn't seem to do anything
- // configuration = configuration.filterInputsBy(ignorePom());
- final Reflections reflections = new Reflections(configuration);
+ new SubTypesScanner(false)
+ );
return reflections.getSubTypesOf(type);
}
@@ -87,8 +84,28 @@ public class ClassDiscoveryServiceUsingReflections
}
public Vfs.Dir createDir(final URL url) throws Exception {
- return null;
+ return emptyVfsDir(url);
+ }
+
+ private static Vfs.Dir emptyVfsDir(final URL url) {
+ return new Vfs.Dir() {
+ @Override
+ public String getPath() {
+ return url.toExternalForm();
+ }
+
+ @Override
+ public Iterable<Vfs.File> getFiles() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public void close() {
+ //
+ }
+ };
}
+
}
public static class JettyConsoleUrlType implements Vfs.UrlType {
@@ -102,47 +119,47 @@ public class ClassDiscoveryServiceUsingReflections
public Vfs.Dir createDir(final URL url) throws Exception {
return new SystemDir(getFile(url));
}
- }
- /**
- * try to get {@link java.io.File} from url
- *
- * <p>
- * Copied from {@link org.reflections.vfs.Vfs} (not publicly accessible)
- * </p>
- */
- static java.io.File getFile(URL url) {
- java.io.File file;
- String path;
-
- try {
- path = url.toURI().getSchemeSpecificPart();
- if ((file = new java.io.File(path)).exists()) return file;
- } catch (URISyntaxException e) {
- }
+ /**
+ * try to get {@link java.io.File} from url
+ *
+ * <p>
+ * Copied from {@link org.reflections.vfs.Vfs} (not publicly accessible)
+ * </p>
+ */
+ static java.io.File getFile(URL url) {
+ java.io.File file;
+ String path;
+
+ try {
+ path = url.toURI().getSchemeSpecificPart();
+ if ((file = new java.io.File(path)).exists()) return file;
+ } catch (URISyntaxException e) {
+ }
+
+ try {
+ path = URLDecoder.decode(url.getPath(), "UTF-8");
+ if (path.contains(".jar!")) path = path.substring(0, path.lastIndexOf(".jar!") + ".jar".length());
+ if ((file = new java.io.File(path)).exists()) return file;
+
+ } catch (UnsupportedEncodingException e) {
+ }
+
+ try {
+ path = url.toExternalForm();
+ if (path.startsWith("jar:")) path = path.substring("jar:".length());
+ if (path.startsWith("file:")) path = path.substring("file:".length());
+ if (path.contains(".jar!")) path = path.substring(0, path.indexOf(".jar!") + ".jar".length());
+ if ((file = new java.io.File(path)).exists()) return file;
+
+ path = path.replace("%20", " ");
+ if ((file = new java.io.File(path)).exists()) return file;
+
+ } catch (Exception e) {
+ }
- try {
- path = URLDecoder.decode(url.getPath(), "UTF-8");
- if (path.contains(".jar!")) path = path.substring(0, path.lastIndexOf(".jar!") + ".jar".length());
- if ((file = new java.io.File(path)).exists()) return file;
-
- } catch (UnsupportedEncodingException e) {
- }
-
- try {
- path = url.toExternalForm();
- if (path.startsWith("jar:")) path = path.substring("jar:".length());
- if (path.startsWith("file:")) path = path.substring("file:".length());
- if (path.contains(".jar!")) path = path.substring(0, path.indexOf(".jar!") + ".jar".length());
- if ((file = new java.io.File(path)).exists()) return file;
-
- path = path.replace("%20", " ");
- if ((file = new java.io.File(path)).exists()) return file;
-
- } catch (Exception e) {
+ return null;
}
-
- return null;
}
}
\ No newline at end of file
[07/39] git commit: ISIS-839: updates to simpleapp and todoapp
examples for services:
Posted by da...@apache.org.
ISIS-839: updates to simpleapp and todoapp examples for services:
* include isis-module-background as maven dependency (commented out as per others for simpleapp, included for todoapp)
* remove registration of BackgroundServiceDefault in isis.properties, since now a @DomainService
* remove registration of AuditingServiceJdo, CommandServiceJdo, PublishingServiceJdo since now all @DomainService.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/eb75a8cf
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/eb75a8cf
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/eb75a8cf
Branch: refs/heads/master
Commit: eb75a8cf71920f8cdb06675844b0c06b95c87c35
Parents: c0d3c41
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 21 11:15:09 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 21 12:34:35 2014 +0100
----------------------------------------------------------------------
example/application/simpleapp/webapp/pom.xml | 11 +++++++++++
.../webapp/src/main/webapp/WEB-INF/isis.properties | 8 +-------
example/application/todoapp/webapp/pom.xml | 4 ++++
.../webapp/src/main/webapp/WEB-INF/isis.properties | 8 +-------
4 files changed, 17 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/eb75a8cf/example/application/simpleapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/pom.xml b/example/application/simpleapp/webapp/pom.xml
index 1c8e58f..7ec84d5 100644
--- a/example/application/simpleapp/webapp/pom.xml
+++ b/example/application/simpleapp/webapp/pom.xml
@@ -215,6 +215,17 @@
-->
<!--
+ uncomment to enable BackgroundService;
+ depends on: an implementation of BackgroundCommandService to persist commands
+ (see isis-module-command-jdo)
+ -->
+ <!--
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-background</artifactId>
+ </dependency>
+ -->
+ <!--
uncomment to enable commands (@Command annotation)
persisted to database, also enabling the ability to run commands in the background
(eg using the Quartz scheduler)
http://git-wip-us.apache.org/repos/asf/isis/blob/eb75a8cf/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
index 52ce41a..605e0ab 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -163,23 +163,17 @@ isis.services.ServicesInstallerFromAnnotation.packagePrefix=dom.simple,\
isis.services = \
org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions,\
\
- # customizable exception handling for JDO objectstore, \
+ # customizable exception handling, \
org.apache.isis.objectstore.jdo.applib.service.exceprecog.ExceptionRecognizerCompositeForJdoObjectStore,\
\
- # isis-module-background services (depends on: isis-module-command-jdo), \
- # org.apache.isis.core.runtime.services.background.BackgroundServiceDefault,\
- \
# isis-module-command-jdo services, \
- # org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdo,\
# org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoContributions,\
# org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoContributions,\
\
# isis-module-audit-jdo services, \
- # org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdo,\
# org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdoContributions,\
\
# isis-module-publishing-jdo services, \
- # org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdo,\
# org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoContributions,\
\
# JDO implementation of the two SettingsServices, \
http://git-wip-us.apache.org/repos/asf/isis/blob/eb75a8cf/example/application/todoapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/pom.xml b/example/application/todoapp/webapp/pom.xml
index 58897a6..b217a23 100644
--- a/example/application/todoapp/webapp/pom.xml
+++ b/example/application/todoapp/webapp/pom.xml
@@ -201,6 +201,10 @@
<!-- isis modules -->
<dependency>
<groupId>org.apache.isis.module</groupId>
+ <artifactId>isis-module-background</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.isis.module</groupId>
<artifactId>isis-module-devutils-impl</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/eb75a8cf/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties b/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties
index 121dc60..8e95327 100644
--- a/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -165,23 +165,17 @@ isis.services.ServicesInstallerFromAnnotation.packagePrefix=app,\
isis.services = \
org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions,\
\
- # customizable exception handling for JDO objectstore, \
+ # customizable exception handling, \
org.apache.isis.objectstore.jdo.applib.service.exceprecog.ExceptionRecognizerCompositeForJdoObjectStore,\
\
- # isis-module-background services (depends on: isis-module-command-jdo), \
- org.apache.isis.core.runtime.services.background.BackgroundServiceDefault,\
- \
# isis-module-command-jdo services, \
- org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdo,\
org.apache.isis.objectstore.jdo.applib.service.command.CommandServiceJdoContributions,\
org.apache.isis.objectstore.jdo.applib.service.background.BackgroundCommandServiceJdoContributions,\
\
# isis-module-audit-jdo services, \
- org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdo,\
org.apache.isis.objectstore.jdo.applib.service.audit.AuditingServiceJdoContributions,\
\
# isis-module-publishing-jdo services, \
- org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdo,\
org.apache.isis.objectstore.jdo.applib.service.publish.PublishingServiceJdoContributions,\
\
# JDO implementation of the two SettingsServices, \
[09/39] git commit: ISIS-839: fixing RAT errors for Wicket viewer.
Posted by da...@apache.org.
ISIS-839: fixing RAT errors for Wicket viewer.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/172d56a4
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/172d56a4
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/172d56a4
Branch: refs/heads/master
Commit: 172d56a4a6dbdc7fed277b70951202da685d9f8d
Parents: 98071b9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Jul 19 11:10:49 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 21 12:35:03 2014 +0100
----------------------------------------------------------------------
.../FixedObjectAdapterMementoProviderTest.java | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/172d56a4/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/FixedObjectAdapterMementoProviderTest.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/FixedObjectAdapterMementoProviderTest.java b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/FixedObjectAdapterMementoProviderTest.java
index 93f662e..7f508d3 100644
--- a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/FixedObjectAdapterMementoProviderTest.java
+++ b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/FixedObjectAdapterMementoProviderTest.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.viewer.wicket.ui.components.widgets.valuechoices;
import java.util.Collection;
[25/39] git commit: ISIS-839: updating simpleapp and todoapp example
apps to reference 1.6.0 (instead of -SNAPSHOT)
Posted by da...@apache.org.
ISIS-839: updating simpleapp and todoapp example apps to reference 1.6.0 (instead of -SNAPSHOT)
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/8afcd995
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/8afcd995
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/8afcd995
Branch: refs/heads/master
Commit: 8afcd9952c0aede1f6acb83aad6d56bc4c4b70f7
Parents: 49512f7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 21 15:18:55 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jul 25 08:14:09 2014 +0100
----------------------------------------------------------------------
example/application/simpleapp/pom.xml | 4 ++--
example/application/todoapp/pom.xml | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/8afcd995/example/application/simpleapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index de6115e..91f5399 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -34,8 +34,8 @@
</prerequisites>
<properties>
- <isis.version>1.6.0-SNAPSHOT</isis.version>
- <isis-viewer-wicket.version>1.6.0-SNAPSHOT</isis-viewer-wicket.version>
+ <isis.version>1.6.0</isis.version>
+ <isis-viewer-wicket.version>1.6.0</isis-viewer-wicket.version>
<!-- must be consistent with the versions defined by the JDO Objectstore -->
<datanucleus-accessplatform-jdo-rdbms.version>3.3.6</datanucleus-accessplatform-jdo-rdbms.version>
http://git-wip-us.apache.org/repos/asf/isis/blob/8afcd995/example/application/todoapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/pom.xml b/example/application/todoapp/pom.xml
index 158a31d..1d40e99 100644
--- a/example/application/todoapp/pom.xml
+++ b/example/application/todoapp/pom.xml
@@ -34,8 +34,8 @@
</prerequisites>
<properties>
- <isis.version>1.6.0-SNAPSHOT</isis.version>
- <isis-viewer-wicket.version>1.6.0-SNAPSHOT</isis-viewer-wicket.version>
+ <isis.version>1.6.0</isis.version>
+ <isis-viewer-wicket.version>1.6.0</isis-viewer-wicket.version>
<!-- must be consistent with the versions defined by the JDO Objectstore -->
<datanucleus-accessplatform-jdo-rdbms.version>3.3.6</datanucleus-accessplatform-jdo-rdbms.version>
[38/39] git commit: Merge branch 'prepare/isis-1.6.0-RC3'
Posted by da...@apache.org.
Merge branch 'prepare/isis-1.6.0-RC3'
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/fee6d393
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/fee6d393
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/fee6d393
Branch: refs/heads/master
Commit: fee6d3937f5424325ee1d7b72e71f0bc7ff7b8d1
Parents: 0af3219 15e4c14
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jul 28 14:21:52 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jul 28 14:21:52 2014 +0100
----------------------------------------------------------------------
STATUS | 5 +
component/viewer/scimpi/pom.xml | 2 +-
component/viewer/wicket/applib/pom.xml | 2 +-
component/viewer/wicket/impl/pom.xml | 2 +-
component/viewer/wicket/model/pom.xml | 2 +-
component/viewer/wicket/pom.xml | 18 +-
component/viewer/wicket/tck/pom.xml | 6 +-
component/viewer/wicket/ui/pom.xml | 2 +-
.../wicket/ui/components/about/AboutPanel.java | 6 +-
.../FixedObjectAdapterMementoProviderTest.java | 18 +
core/applib/pom.xml | 2 +-
.../background/ActionInvocationMemento.java | 8 +-
.../background/BackgroundCommandService.java | 2 +-
.../ClassDiscoveryServiceUsingReflections.java | 121 +-
.../applib/services/wrapper/WrapperFactory.java | 2 +-
core/bytecode-cglib/pom.xml | 2 +-
core/bytecode-javassist/pom.xml | 2 +-
core/integtestsupport/pom.xml | 6 +-
core/log4j/pom.xml | 2 +-
core/metamodel/pom.xml | 2 +-
.../facets/actions/interaction/CommandUtil.java | 2 +-
core/module-audit-jdo/pom.xml | 2 +-
.../service/audit/AuditingServiceJdo.java | 7 +-
core/module-background/pom.xml | 8 +-
.../background/BackgroundCommandExecution.java | 171 +++
.../background/BackgroundServiceDefault.java | 287 +++++
core/module-command-jdo/pom.xml | 12 +-
.../service/command/CommandServiceJdo.java | 2 +
...xecutionFromBackgroundCommandServiceJdo.java | 3 +
core/module-devutils/applib/pom.xml | 2 +-
core/module-devutils/impl/pom.xml | 2 +-
core/module-devutils/pom.xml | 10 +-
core/module-publishing-jdo/pom.xml | 2 +-
.../service/publish/PublishingServiceJdo.java | 2 +
.../module-publishingeventserializer-ro/pom.xml | 2 +-
core/module-settings/applib/pom.xml | 2 +-
core/module-settings/impl-jdo/pom.xml | 2 +-
core/module-settings/pom.xml | 10 +-
core/module-wrapper/pom.xml | 139 ---
.../core/wrapper/WrapperFactoryAbstract.java | 314 ------
.../isis/core/wrapper/WrapperFactoryCglib.java | 30 -
.../core/wrapper/WrapperFactoryDefault.java | 39 -
.../core/wrapper/WrapperFactoryJavassist.java | 30 -
.../dispatchers/InteractionEventDispatcher.java | 28 -
.../InteractionEventDispatcherTypeSafe.java | 34 -
.../AbstractCollectionInvocationHandler.java | 92 --
.../handlers/CollectionInvocationHandler.java | 53 -
.../handlers/DelegatingInvocationHandler.java | 32 -
.../DelegatingInvocationHandlerDefault.java | 131 ---
.../handlers/DomainObjectInvocationHandler.java | 720 ------------
.../wrapper/handlers/MapInvocationHandler.java | 48 -
.../wrapper/handlers/ProxyContextHandler.java | 84 --
.../core/wrapper/internal/util/Constants.java | 52 -
.../internal/util/MethodPrefixFinder.java | 48 -
.../isis/core/wrapper/internal/util/Util.java | 53 -
.../core/wrapper/proxy/ProxyInstantiator.java | 26 -
.../proxy/ProxyInstantiatorForCglib.java | 101 --
.../proxy/ProxyInstantiatorForJavassist.java | 77 --
.../wrapper/WrapperFactoryAbstractTest.java | 109 --
...rapperFactoryAbstractTest_wrappedObject.java | 376 -------
...oryAbstractTest_wrappedObject_transient.java | 257 -----
.../WrapperFactoryCglibTest_wrappedObject.java | 32 -
...actoryCglibTest_wrappedObject_transient.java | 34 -
...apperFactoryJavassistTest_wrappedObject.java | 32 -
...ryJavassistTest_wrappedObject_transient.java | 31 -
core/objectstore-inmemory/pom.xml | 2 +-
core/objectstore-jdo-datanucleus/pom.xml | 2 +-
core/objectstore-jdo-metamodel/pom.xml | 2 +-
core/pom.xml | 123 ++-
core/profilestore-inmemory/pom.xml | 2 +-
core/runtime/pom.xml | 2 +-
.../ServicesInstallerFromAnnotation.java | 3 +
.../background/BackgroundCommandExecution.java | 171 ---
.../background/BackgroundServiceDefault.java | 286 -----
.../services/DeweyOrderComparatorTest.java | 18 +
.../runtime/services/DeweyOrderUtilTest.java | 18 +
core/security-noop/pom.xml | 2 +-
core/security-shiro/pom.xml | 6 +-
.../IsisPermissionTest_equals.java | 18 +
core/specsupport/pom.xml | 6 +-
core/tck/pom.xml | 5 +-
core/tck/tck-dom/pom.xml | 2 +-
core/tck/tck-fixture/pom.xml | 2 +-
core/tck/tck-viewer-restfulobjects/pom.xml | 5 +-
core/unittestsupport/pom.xml | 2 +-
core/viewer-restfulobjects-applib/pom.xml | 2 +-
core/viewer-restfulobjects-rendering/pom.xml | 2 +-
core/viewer-restfulobjects-server/pom.xml | 2 +-
core/webserver/pom.xml | 2 +-
core/wrapper/pom.xml | 138 +++
.../core/wrapper/WrapperFactoryAbstract.java | 314 ++++++
.../isis/core/wrapper/WrapperFactoryCglib.java | 30 +
.../core/wrapper/WrapperFactoryDefault.java | 39 +
.../core/wrapper/WrapperFactoryJavassist.java | 30 +
.../dispatchers/InteractionEventDispatcher.java | 28 +
.../InteractionEventDispatcherTypeSafe.java | 34 +
.../AbstractCollectionInvocationHandler.java | 92 ++
.../handlers/CollectionInvocationHandler.java | 53 +
.../handlers/DelegatingInvocationHandler.java | 32 +
.../DelegatingInvocationHandlerDefault.java | 131 +++
.../handlers/DomainObjectInvocationHandler.java | 720 ++++++++++++
.../wrapper/handlers/MapInvocationHandler.java | 48 +
.../wrapper/handlers/ProxyContextHandler.java | 84 ++
.../core/wrapper/internal/util/Constants.java | 52 +
.../internal/util/MethodPrefixFinder.java | 48 +
.../isis/core/wrapper/internal/util/Util.java | 53 +
.../core/wrapper/proxy/ProxyInstantiator.java | 26 +
.../proxy/ProxyInstantiatorForCglib.java | 101 ++
.../proxy/ProxyInstantiatorForJavassist.java | 77 ++
.../wrapper/WrapperFactoryAbstractTest.java | 127 +++
...rapperFactoryAbstractTest_wrappedObject.java | 376 +++++++
...oryAbstractTest_wrappedObject_transient.java | 257 +++++
.../WrapperFactoryCglibTest_wrappedObject.java | 32 +
...actoryCglibTest_wrappedObject_transient.java | 34 +
...apperFactoryJavassistTest_wrappedObject.java | 32 +
...ryJavassistTest_wrappedObject_transient.java | 31 +
example/application/simpleapp/dom/pom.xml | 2 +-
.../src/main/java/dom/simple/SimpleObjects.java | 2 +-
example/application/simpleapp/fixture/pom.xml | 2 +-
.../simple/SimpleObjectsFixturesService.java | 2 +-
.../application/simpleapp/integtests/pom.xml | 6 +-
example/application/simpleapp/pom.xml | 6 +-
.../launch/SimpleApp-PROTOTYPE-jrebel.launch | 2 +-
.../SimpleApp-PROTOTYPE-no-fixtures.launch | 2 +-
.../SimpleApp-PROTOTYPE-with-fixtures.launch | 2 +-
.../launch/SimpleApp-SERVER-no-fixtures.launch | 2 +-
.../webapp/ide/intellij/launch/README.txt | 2 +
.../ide/intellij/launch/SimpleApp_PROTOTYPE.xml | 29 +
.../launch/SimpleApp__enhance_only_.xml | 23 +
example/application/simpleapp/webapp/pom.xml | 17 +-
.../src/main/resources/webapp/welcome.html | 8 +-
.../src/main/webapp/WEB-INF/isis.properties | 8 +-
.../webapp/src/main/webapp/about/index.html | 86 +-
example/application/todoapp/dom/pom.xml | 2 +-
example/application/todoapp/fixture/pom.xml | 2 +-
example/application/todoapp/integtests/pom.xml | 6 +-
example/application/todoapp/pom.xml | 6 +-
.../launch/ToDoApp-PROTOTYPE-jrebel.launch | 2 +-
.../ToDoApp-PROTOTYPE-with-fixtures.launch | 2 +-
.../ide/eclipse/launch/ToDoApp-PROTOTYPE.launch | 2 +-
.../ide/eclipse/launch/ToDoApp-SERVER.launch | 2 +-
.../webapp/ide/intellij/launch/README.txt | 3 +
.../ide/intellij/launch/TodoApp_PROTOTYPE.xml | 29 +
.../intellij/launch/TodoApp__enhance_only_.xml | 23 +
example/application/todoapp/webapp/pom.xml | 10 +-
.../src/main/resources/webapp/welcome.html | 7 +-
.../src/main/webapp/WEB-INF/isis.properties | 8 +-
.../webapp/src/main/webapp/about/index.html | 119 +-
example/archetype/simpleapp/pom.xml | 8 +-
.../META-INF/maven/archetype-metadata.xml | 9 +-
.../resources/archetype-resources/dom/pom.xml | 23 +-
.../src/main/java/dom/simple/SimpleObjects.java | 6 +-
.../archetype-resources/fixture/pom.xml | 2 +-
.../fixture/simple/SimpleObjectsFixture.java | 14 +-
.../simple/SimpleObjectsFixturesService.java | 70 ++
.../archetype-resources/integtests/pom.xml | 6 +-
.../integration/SimpleAppSystemInitializer.java | 22 +-
.../main/resources/archetype-resources/pom.xml | 33 +-
.../webapp/ide/intellij/launch/README.txt | 5 +
.../ide/intellij/launch/SimpleApp_PROTOTYPE.xml | 32 +
.../launch/SimpleApp__enhance_only_.xml | 26 +
.../archetype-resources/webapp/pom.xml | 83 +-
.../webapp/prototyping/DeveloperUtilities.java | 4 +-
.../SimpleObjectsFixturesService.java | 71 --
.../src/main/resources/webapp/welcome.html | 8 +-
.../src/main/webapp/WEB-INF/isis.properties | 65 +-
.../webapp/src/main/webapp/about/index.html | 88 +-
.../projects/basic/archetype.properties | 2 +-
example/archetype/todoapp/pom.xml | 8 +-
.../META-INF/maven/archetype-metadata.xml | 9 +-
.../resources/archetype-resources/dom/pom.xml | 16 +-
.../dom/src/main/java/app/ToDoAppDashboard.java | 9 -
.../main/java/app/ToDoAppDashboardService.java | 41 +-
.../dom/src/main/java/app/ToDoItemAnalysis.java | 13 +-
.../java/app/ToDoItemAnalysisContributions.java | 10 +-
.../java/app/ToDoItemsByCategoryViewModel.java | 15 -
.../java/app/ToDoItemsByDateRangeViewModel.java | 16 -
.../dom/src/main/java/dom/todo/Categorized.java | 35 +
.../dom/src/main/java/dom/todo/ToDoItem.java | 126 ++-
.../src/main/java/dom/todo/ToDoItem.layout.json | 192 ++--
.../dom/todo/ToDoItemChangedPayloadFactory.java | 1 +
.../java/dom/todo/ToDoItemContributions.java | 27 +-
.../java/dom/todo/ToDoItemSubscriptions.java | 248 ++++-
.../dom/src/main/java/dom/todo/ToDoItems.java | 41 +-
.../src/test/java/dom/todo/ToDoItemTest.java | 94 ++
.../test/java/dom/todo/ToDoTest_completed.java | 71 --
.../java/dom/todo/ToDoTest_notYetCompleted.java | 71 --
.../archetype-resources/fixture/pom.xml | 2 +-
.../fixture/todo/ToDoItemsFixturesService.java | 10 +
.../archetype-resources/integtests/pom.xml | 6 +-
.../java/integration/ToDoSystemInitializer.java | 47 +-
.../tests/AbstractToDoIntegTest.java | 41 +
.../java/integration/tests/ToDoIntegTest.java | 41 -
.../tests/ToDoItemContributionsIntegTest.java | 152 +++
.../integration/tests/ToDoItemIntegTest.java | 1040 ++++++++++++++++++
.../integration/tests/ToDoItemsIntegTest.java | 116 ++
...oDoItemContributionsTest_updateCategory.java | 106 --
.../tests/actions/ToDoItemTest_completed.java | 174 ---
.../tests/actions/ToDoItemTest_duplicate.java | 83 --
.../actions/ToDoItemTest_notYetCompleted.java | 79 --
.../ToDoItemContributionsTest_similarTo.java | 71 --
.../colls/ToDoItemTest_dependencies_add.java | 181 ---
.../colls/ToDoItemTest_dependencies_remove.java | 176 ---
.../ToDoItemContributionsTest_priority.java | 75 --
.../tests/props/ToDoItemTest_attachment.java | 82 --
.../tests/props/ToDoItemTest_category.java | 62 --
.../tests/props/ToDoItemTest_cost.java | 100 --
.../tests/props/ToDoItemTest_description.java | 220 ----
.../tests/props/ToDoItemTest_dueBy.java | 106 --
.../tests/props/ToDoItemTest_notes.java | 90 --
.../tests/props/ToDoItemTest_ownedBy.java | 61 -
.../tests/props/ToDoItemTest_subcategory.java | 62 --
.../tests/repo/ToDoItemsTest_finders.java | 84 --
.../repo/ToDoItemsTest_newToDo_and_delete.java | 68 --
.../tests/smoke/ToDoItemTest_title.java | 116 --
.../main/resources/archetype-resources/pom.xml | 40 +-
.../webapp/ide/intellij/launch/README.txt | 6 +
.../ide/intellij/launch/TodoApp_PROTOTYPE.xml | 32 +
.../intellij/launch/TodoApp__enhance_only_.xml | 26 +
.../archetype-resources/webapp/pom.xml | 48 +-
.../src/main/java/webapp/admin/Admin.java | 1 +
.../java/webapp/admin/AdminContributions.java | 7 +-
.../webapp/prototyping/DeveloperUtilities.java | 6 +-
.../prototyping/ExternalLinksService.java | 8 +-
.../prototyping/WicketDeveloperUtilities.java | 42 +
.../webapp/ToDoApplication_en.properties | 54 +
.../webapp/src/main/resources/webapp/realm1.ini | 26 +
.../src/main/resources/webapp/welcome.html | 7 +-
.../src/main/webapp/WEB-INF/isis.properties | 76 +-
.../src/main/webapp/WEB-INF/logging.properties | 32 +
.../main/webapp/WEB-INF/persistor.properties | 12 +-
.../webapp/src/main/webapp/WEB-INF/shiro.ini | 10 +
.../webapp/src/main/webapp/about/index.html | 149 +--
.../webapp/src/main/webapp/css/application.css | 2 +-
.../projects/basic/archetype.properties | 2 +-
scripts/recreate-archetype.sh | 79 ++
tool/maven-plugin/pom.xml | 2 +-
237 files changed, 6782 insertions(+), 6826 deletions(-)
----------------------------------------------------------------------