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/04/30 01:19:43 UTC
git commit: ISIS-569: JavassistImposteriser
Repository: isis
Updated Branches:
refs/heads/master 42f33f6a2 -> 07fb0e6ee
ISIS-569: JavassistImposteriser
and remove dependency on (cglib-based) ClassImposteriser.
Also:
- update .travis.yml.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/07fb0e6e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/07fb0e6e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/07fb0e6e
Branch: refs/heads/master
Commit: 07fb0e6ee3924dcd3a585eca66b6c7121faaafbc
Parents: 42f33f6
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Apr 30 00:19:32 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Apr 30 00:19:32 2014 +0100
----------------------------------------------------------------------
.travis.yml | 1 +
component/objectstore/nosql/pom.xml | 6 -
component/viewer/dnd/impl/pom.xml | 6 -
component/viewer/junit/impl/pom.xml | 5 -
component/viewer/wicket/impl/pom.xml | 6 -
component/viewer/wicket/model/pom.xml | 7 -
component/viewer/wicket/ui/pom.xml | 6 -
core/integtestsupport/pom.xml | 5 -
.../facets/ImperativeFacetUtilsTest.java | 15 +-
.../services/ServicesInjectorDefaultTest.java | 10 +-
...icationFacetFactoryProcessParameterTest.java | 10 +-
...ficationFacetFactoryProcessPropertyTest.java | 21 +-
...cificationValidatingInteractionMoreTest.java | 24 +-
...ySpecificationValidatingInteractionTest.java | 24 +-
...jectsDefault_savesOidGeneratorAsMemento.java | 21 +-
core/pom.xml | 22 --
core/runtime/pom.xml | 6 -
core/specsupport/pom.xml | 5 -
.../scenarios/DomainServiceProviderMockery.java | 7 +-
core/unittestsupport/pom.xml | 17 +-
.../isis/core/unittestsupport/files/Files.java | 2 +-
.../unittestsupport/jmocking/IsisActions.java | 2 +-
.../jmocking/JUnitRuleMockery2.java | 15 +-
.../jmocking/JavassistImposteriser.java | 208 +++++++++++++
.../jmocking/JavassistImposteriserTest.java | 299 +++++++++++++++++++
.../objectstore/sql/sql-tests-common/pom.xml | 4 -
mothballed/misc/metamodel/namefile/pom.xml | 5 -
27 files changed, 572 insertions(+), 187 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index dff5f3a..9165eca 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1 +1,2 @@
language: java
+install: "mvn clean install -P released"
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/component/objectstore/nosql/pom.xml
----------------------------------------------------------------------
diff --git a/component/objectstore/nosql/pom.xml b/component/objectstore/nosql/pom.xml
index eab4514..5e654ed 100644
--- a/component/objectstore/nosql/pom.xml
+++ b/component/objectstore/nosql/pom.xml
@@ -205,12 +205,6 @@
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <scope>test</scope>
- </dependency>
-
</dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/component/viewer/dnd/impl/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/pom.xml b/component/viewer/dnd/impl/pom.xml
index f5e587d..f691a5c 100644
--- a/component/viewer/dnd/impl/pom.xml
+++ b/component/viewer/dnd/impl/pom.xml
@@ -104,12 +104,6 @@
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <scope>test</scope>
- </dependency>
-
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/component/viewer/junit/impl/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/junit/impl/pom.xml b/component/viewer/junit/impl/pom.xml
index e8d9de7..f60859b 100644
--- a/component/viewer/junit/impl/pom.xml
+++ b/component/viewer/junit/impl/pom.xml
@@ -134,11 +134,6 @@
</dependency>
<dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- </dependency>
-
- <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/component/viewer/wicket/impl/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/pom.xml b/component/viewer/wicket/impl/pom.xml
index 051cad8..89ec66b 100644
--- a/component/viewer/wicket/impl/pom.xml
+++ b/component/viewer/wicket/impl/pom.xml
@@ -90,12 +90,6 @@
</dependency>
- <!-- jmock class mocking -->
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice-parent</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/component/viewer/wicket/model/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/pom.xml b/component/viewer/wicket/model/pom.xml
index bd647cd..6b4cb0b 100644
--- a/component/viewer/wicket/model/pom.xml
+++ b/component/viewer/wicket/model/pom.xml
@@ -60,13 +60,6 @@
<artifactId>isis-core-runtime</artifactId>
</dependency>
- <!-- jmock class mocking -->
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <scope>test</scope>
- </dependency>
-
</dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/component/viewer/wicket/ui/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/pom.xml b/component/viewer/wicket/ui/pom.xml
index 66903f6..b085474 100644
--- a/component/viewer/wicket/ui/pom.xml
+++ b/component/viewer/wicket/ui/pom.xml
@@ -117,11 +117,5 @@
<artifactId>log4j</artifactId>
</dependency>
- <!-- jmock class mocking -->
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/integtestsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/integtestsupport/pom.xml b/core/integtestsupport/pom.xml
index 11e76f7..775e38e 100644
--- a/core/integtestsupport/pom.xml
+++ b/core/integtestsupport/pom.xml
@@ -93,11 +93,6 @@
</dependency>
<dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- </dependency>
-
- <dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-tck-dom</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ImperativeFacetUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ImperativeFacetUtilsTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ImperativeFacetUtilsTest.java
index 821e067..23238d9 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ImperativeFacetUtilsTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/ImperativeFacetUtilsTest.java
@@ -19,28 +19,23 @@
package org.apache.isis.core.metamodel.facets;
-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 java.lang.reflect.Method;
-
import com.google.common.collect.Lists;
-
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
-import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-
import org.apache.isis.applib.filter.Filter;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils.ImperativeFacetFlags;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.unittestsupport.jmocking.JavassistImposteriser;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
@RunWith(JMock.class)
public class ImperativeFacetUtilsTest {
@@ -61,7 +56,7 @@ public class ImperativeFacetUtilsTest {
private final Mockery context = new JUnit4Mockery() {
{
- setImposteriser(ClassImposteriser.INSTANCE);
+ setImposteriser(JavassistImposteriser.INSTANCE);
}
};
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
index e3e2bcc..01a305f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/ServicesInjectorDefaultTest.java
@@ -48,19 +48,19 @@ public class ServicesInjectorDefaultTest {
private ServicesInjectorSpi injector;
- static interface Service1 {
+ public static interface Service1 {
}
- static interface Service2 {
+ public static interface Service2 {
}
- static interface Mixin {
+ public static interface Mixin {
}
- static interface DomainObjectContainerExtended extends DomainObjectContainer, Mixin {
+ public static interface DomainObjectContainerExtended extends DomainObjectContainer, Mixin {
}
- static interface SomeDomainObject {
+ public static interface SomeDomainObject {
public void setContainer(DomainObjectContainer container);
public void setMixin(Mixin mixin);
public void setService1(Service1 service);
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
index 70a16cc..eab8435 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessParameterTest.java
@@ -19,30 +19,28 @@
package org.apache.isis.core.progmodel.facets.propparam.specification;
-import static org.apache.isis.core.commons.matchers.IsisMatchers.anInstanceOf;
-
import java.lang.reflect.Method;
-
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
-import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
import org.apache.isis.core.progmodel.facets.param.validate.perspec.MustSatisfySpecificationOnParameterFacet;
import org.apache.isis.core.progmodel.facets.param.validate.perspec.MustSatisfySpecificationOnParameterFacetFactory;
+import org.apache.isis.core.unittestsupport.jmocking.JavassistImposteriser;
+
+import static org.apache.isis.core.commons.matchers.IsisMatchers.anInstanceOf;
@RunWith(JMock.class)
public class MustSatisfySpecificationFacetFactoryProcessParameterTest {
private final Mockery mockery = new JUnit4Mockery() {
{
- setImposteriser(ClassImposteriser.INSTANCE);
+ setImposteriser(JavassistImposteriser.INSTANCE);
}
};
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
index 308ef93..b273a14 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationFacetFactoryProcessPropertyTest.java
@@ -19,34 +19,25 @@
package org.apache.isis.core.progmodel.facets.propparam.specification;
-import static org.apache.isis.core.commons.matchers.IsisMatchers.anInstanceOf;
-
import java.lang.reflect.Method;
-
import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-
import org.apache.isis.core.metamodel.facetapi.MethodRemover;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.progmodel.facets.properties.validate.perspec.MustSatisfySpecificationOnPropertyFacet;
import org.apache.isis.core.progmodel.facets.properties.validate.perspec.MustSatisfySpecificationOnPropertyFacetFactory;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+
+import static org.apache.isis.core.commons.matchers.IsisMatchers.anInstanceOf;
-@RunWith(JMock.class)
public class MustSatisfySpecificationFacetFactoryProcessPropertyTest {
- private final Mockery mockery = new JUnit4Mockery() {
- {
- setImposteriser(ClassImposteriser.INSTANCE);
- }
- };
+ @Rule
+ public JUnitRuleMockery2 mockery = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
private MethodRemover mockMethodRemover;
private FacetedMethod mockFacetHolder;
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java
index 13388ff..ba7bc3e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionMoreTest.java
@@ -19,35 +19,25 @@
package org.apache.isis.core.progmodel.facets.propparam.specification;
-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.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
import org.apache.isis.core.progmodel.facets.object.validperspec.MustSatisfySpecificationOnTypeFacet;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
-@RunWith(JMock.class)
public class MustSatisfySpecificationValidatingInteractionMoreTest {
- private final Mockery mockery = new JUnit4Mockery() {
- {
- setImposteriser(ClassImposteriser.INSTANCE);
- }
- };
+ @Rule
+ public JUnitRuleMockery2 mockery = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
private MustSatisfySpecificationOnTypeFacet facetForSpecificationFirstLetterUpperCase;
private FacetHolder mockHolder;
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java
index b9d9193..c9e7fd1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/propparam/specification/MustSatisfySpecificationValidatingInteractionTest.java
@@ -19,35 +19,25 @@
package org.apache.isis.core.progmodel.facets.propparam.specification;
-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.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.interactions.PropertyModifyContext;
import org.apache.isis.core.progmodel.facets.object.validperspec.MustSatisfySpecificationOnTypeFacet;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
-@RunWith(JMock.class)
public class MustSatisfySpecificationValidatingInteractionTest {
- private final Mockery mockery = new JUnit4Mockery() {
- {
- setImposteriser(ClassImposteriser.INSTANCE);
- }
- };
+ @Rule
+ public JUnitRuleMockery2 mockery = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
private MustSatisfySpecificationOnTypeFacet facetForSpecificationAlwaysSatisfied;
private MustSatisfySpecificationOnTypeFacet facetForSpecificationNeverSatisfied;
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/objectstore-inmemory/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
----------------------------------------------------------------------
diff --git a/core/objectstore-inmemory/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java b/core/objectstore-inmemory/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
index 671af11..e41d2f8 100644
--- a/core/objectstore-inmemory/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
+++ b/core/objectstore-inmemory/src/test/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento.java
@@ -19,27 +19,22 @@
package org.apache.isis.core.objectstore.internal;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
-
import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefault;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+import static org.junit.Assert.assertThat;
public class ObjectStorePersistedObjectsDefault_savesOidGeneratorAsMemento {
private ObjectStorePersistedObjectsDefault persistedObjects;
- private final Mockery context = new JUnit4Mockery() {
- {
- setImposteriser(ClassImposteriser.INSTANCE);
- }
- };
+ @Rule
+ public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
private IdentifierGeneratorDefault.Memento mockMemento;
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index bff65cf..3129f99 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -1305,23 +1305,6 @@ ${license.additional-notes}
</exclusions>
</dependency>
- <!-- transitively includes cglib:cglib-nodep:2.1_3 and org.objenesis:objenesis:1.0 -->
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <version>2.6.0</version>
- <exclusions>
- <exclusion>
- <groupId>cglib</groupId>
- <artifactId>cglib-nodep</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.objenesis</groupId>
- <artifactId>objenesis</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
<!-- BDD testing -->
<dependency>
<groupId>info.cukes</groupId>
@@ -1431,11 +1414,6 @@ ${license.additional-notes}
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<scope>test</scope>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/runtime/pom.xml
----------------------------------------------------------------------
diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml
index d35a515..a5340f8 100644
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@ -119,12 +119,6 @@
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <scope>test</scope>
- </dependency>
-
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/specsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/specsupport/pom.xml b/core/specsupport/pom.xml
index 90f5369..78e46fb 100644
--- a/core/specsupport/pom.xml
+++ b/core/specsupport/pom.xml
@@ -57,7 +57,6 @@
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-unittestsupport</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
@@ -77,10 +76,6 @@
<groupId>org.jmock</groupId>
<artifactId>jmock</artifactId>
</dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- </dependency>
<dependency>
<groupId>info.cukes</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
----------------------------------------------------------------------
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
index 5b639c9..860cfa9 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
@@ -17,17 +17,14 @@
package org.apache.isis.core.specsupport.scenarios;
import java.util.Map;
-
import com.google.common.collect.Maps;
-
import org.hamcrest.Description;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
-import org.jmock.lib.legacy.ClassImposteriser;
-
import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.core.unittestsupport.jmocking.JavassistImposteriser;
class DomainServiceProviderMockery implements DomainServiceProvider {
@@ -44,7 +41,7 @@ class DomainServiceProviderMockery implements DomainServiceProvider {
private void init() {
context = new Mockery() {{
- setImposteriser(ClassImposteriser.INSTANCE);
+ setImposteriser(JavassistImposteriser.INSTANCE);
}};
mocks.clear();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/unittestsupport/pom.xml
----------------------------------------------------------------------
diff --git a/core/unittestsupport/pom.xml b/core/unittestsupport/pom.xml
index 462fe06..fe0fc1c 100644
--- a/core/unittestsupport/pom.xml
+++ b/core/unittestsupport/pom.xml
@@ -87,11 +87,6 @@
<artifactId>jmock-junit4</artifactId>
</dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- </dependency>
-
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo-api</artifactId>
@@ -100,6 +95,18 @@
</dependency>
<dependency>
+ <groupId>org.javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <!--<version>3.18.1-GA</version>-->
+ </dependency>
+
+ <dependency>
+ <groupId>org.objenesis</groupId>
+ <artifactId>objenesis</artifactId>
+ <!--<version>1.4</version>-->
+ </dependency>
+
+ <dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<exclusions>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/files/Files.java
----------------------------------------------------------------------
diff --git a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/files/Files.java b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/files/Files.java
index c03347b..c397ab2 100644
--- a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/files/Files.java
+++ b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/files/Files.java
@@ -70,7 +70,7 @@ public final class Files {
}
// introduced for testing of this utility class.
- interface Deleter {
+ public interface Deleter {
void deleteFile(File f);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/IsisActions.java
----------------------------------------------------------------------
diff --git a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/IsisActions.java b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/IsisActions.java
index 99afeb9..26cec06 100644
--- a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/IsisActions.java
+++ b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/IsisActions.java
@@ -23,7 +23,7 @@ import org.jmock.api.Action;
import org.jmock.api.Invocation;
public final class IsisActions {
-
+
private IsisActions() {
}
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java
----------------------------------------------------------------------
diff --git a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java
index f4ac728..7cb2e90 100644
--- a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java
+++ b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JUnitRuleMockery2.java
@@ -18,31 +18,28 @@
*/
package org.apache.isis.core.unittestsupport.jmocking;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.junit.Assert.fail;
+import junit.framework.AssertionFailedError;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.List;
-
-import junit.framework.AssertionFailedError;
-
import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.jmock.internal.AllDeclaredFields;
import org.jmock.lib.concurrent.Synchroniser;
-import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.rules.MethodRule;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
-import org.picocontainer.DefaultPicoContainer;
import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoBuilder;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static org.junit.Assert.fail;
+
/**
* Use as a <tt>@Rule</tt>, meaning that the <tt>@RunWith(JMock.class)</tt> can
@@ -70,7 +67,7 @@ public class JUnitRuleMockery2 extends JUnit4Mockery implements MethodRule {
public static JUnitRuleMockery2 createFor(final Mode mode) {
final JUnitRuleMockery2 jUnitRuleMockery2 = new JUnitRuleMockery2();
if (mode == Mode.INTERFACES_AND_CLASSES) {
- jUnitRuleMockery2.setImposteriser(ClassImposteriser.INSTANCE);
+ jUnitRuleMockery2.setImposteriser(JavassistImposteriser.INSTANCE);
}
jUnitRuleMockery2.setThreadingPolicy(new Synchroniser());
return jUnitRuleMockery2;
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JavassistImposteriser.java
----------------------------------------------------------------------
diff --git a/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JavassistImposteriser.java b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JavassistImposteriser.java
new file mode 100644
index 0000000..0fc9332
--- /dev/null
+++ b/core/unittestsupport/src/main/java/org/apache/isis/core/unittestsupport/jmocking/JavassistImposteriser.java
@@ -0,0 +1,208 @@
+/**
+ * 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.unittestsupport.jmocking;
+
+import javassist.util.proxy.MethodFilter;
+import javassist.util.proxy.MethodHandler;
+import javassist.util.proxy.ProxyFactory;
+import javassist.util.proxy.ProxyObject;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import org.jmock.api.Imposteriser;
+import org.jmock.api.Invocation;
+import org.jmock.api.Invokable;
+import org.jmock.lib.JavaReflectionImposteriser;
+import org.objenesis.Objenesis;
+import org.objenesis.ObjenesisStd;
+
+public class JavassistImposteriser implements Imposteriser {
+
+ public static final Imposteriser INSTANCE = new JavassistImposteriser();
+
+ private final Imposteriser reflectionImposteriser = new JavaReflectionImposteriser();
+ private final Objenesis objenesis = new ObjenesisStd();
+
+ private JavassistImposteriser() {
+ }
+
+
+ public boolean canImposterise(Class<?> mockedType) {
+
+ if(mockedType.isInterface()) {
+ return reflectionImposteriser.canImposterise(mockedType);
+ }
+
+ return !mockedType.isPrimitive() &&
+ !Modifier.isFinal(mockedType.getModifiers()) &&
+ !toStringMethodIsFinal(mockedType);
+ }
+
+ public <T> T imposterise(final Invokable mockObject, final Class<T> mockedType, Class<?>... ancilliaryTypes) {
+ if (!canImposterise(mockedType)) {
+ throw new IllegalArgumentException(mockedType.getName() + " cannot be imposterized (either a primitive, or a final type or has final toString method)");
+ }
+
+ if(mockedType.isInterface()) {
+ return reflectionImposteriser.imposterise(mockObject, mockedType, ancilliaryTypes);
+ }
+
+ try {
+ setConstructorsAccessible(mockedType, true);
+
+ final Class<?> proxyClass = proxyClass(mockedType, ancilliaryTypes);
+ final Object proxy = proxy(proxyClass, mockObject);
+ return mockedType.cast(proxy);
+ } finally {
+ setConstructorsAccessible(mockedType, false);
+ }
+ }
+
+ // //////////////////////////////////////
+
+ private static boolean toStringMethodIsFinal(Class<?> type) {
+ try {
+ Method toString = type.getMethod("toString");
+ return Modifier.isFinal(toString.getModifiers());
+
+ }
+ catch (SecurityException e) {
+ throw new IllegalStateException("not allowed to reflect on toString method", e);
+ }
+ catch (NoSuchMethodException e) {
+ throw new Error("no public toString method found", e);
+ }
+ }
+
+ private static void setConstructorsAccessible(Class<?> mockedType, boolean accessible) {
+ for (Constructor<?> constructor : mockedType.getDeclaredConstructors()) {
+ constructor.setAccessible(accessible);
+ }
+ }
+
+ private Class<?> proxyClass(Class<?> mockedType, Class<?>... ancilliaryTypes) {
+
+ final ProxyFactory proxyFactory;
+ proxyFactory = new ProxyFactory();
+ proxyFactory.setFilter(new MethodFilter() {
+ @Override
+ public boolean isHandled(final Method m) {
+ // ignore finalize() and als bridge methods
+ return !m.getName().equals("finalize") || m.isBridge();
+ }
+ });
+
+ if(mockedType.isInterface()) {
+ proxyFactory.setSuperclass(Object.class);
+ proxyFactory.setInterfaces(prepend(mockedType, ancilliaryTypes));
+ } else {
+ proxyFactory.setSuperclass(mockedType);
+ proxyFactory.setInterfaces(ancilliaryTypes);
+ }
+
+ return proxyFactory.createClass();
+
+ // original cglib code:
+
+ // final Enhancer enhancer = new Enhancer() {
+ // @Override
+ // @SuppressWarnings("unchecked")
+ // protected void filterConstructors(Class sc, List constructors) {
+ // // Don't filter
+ // }
+ // };
+ // enhancer.setClassLoader(SearchingClassLoader.combineLoadersOf(mockedType, ancilliaryTypes));
+ // enhancer.setUseFactory(true);
+ // if (mockedType.isInterface()) {
+ // enhancer.setSuperclass(Object.class);
+ // enhancer.setInterfaces(prepend(mockedType, ancilliaryTypes));
+ // }
+ // else {
+ // enhancer.setSuperclass(mockedType);
+ // enhancer.setInterfaces(ancilliaryTypes);
+ // }
+ // enhancer.setCallbackTypes(new Class[]{InvocationHandler.class, NoOp.class});
+ // enhancer.setCallbackFilter(IGNORE_BRIDGE_METHODS);
+ // if (mockedType.getSigners() != null) {
+ // enhancer.setNamingPolicy(NAMING_POLICY_THAT_ALLOWS_IMPOSTERISATION_OF_CLASSES_IN_SIGNED_PACKAGES);
+ // }
+ //
+ // try {
+ // return enhancer.createClass();
+ // }
+ // catch (CodeGenerationException e) {
+ // // Note: I've only been able to manually test this. It exists to help people writing
+ // // Eclipse plug-ins or using other environments that have sophisticated class loader
+ // // structures.
+ // throw new IllegalArgumentException("could not imposterise " + mockedType, e);
+ // }
+
+ }
+
+
+ // original cglib code:
+
+ // private static final NamingPolicy NAMING_POLICY_THAT_ALLOWS_IMPOSTERISATION_OF_CLASSES_IN_SIGNED_PACKAGES = new DefaultNamingPolicy() {
+ // @Override
+ // public String getClassName(String prefix, String source, Object key, Predicate names) {
+ // return "org.jmock.codegen." + super.getClassName(prefix, source, key, names);
+ // }
+ // };
+ //
+ // private static final CallbackFilter IGNORE_BRIDGE_METHODS = new CallbackFilter() {
+ // public int accept(Method method) {
+ // return method.isBridge() ? 1 : 0;
+ // }
+ // };
+
+
+ private Object proxy(Class<?> proxyClass, final Invokable mockObject) {
+
+ final ProxyObject proxyObject = (ProxyObject) objenesis.newInstance(proxyClass);
+ proxyObject.setHandler(new MethodHandler() {
+ @Override
+ public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args) throws Throwable {
+ return mockObject.invoke(new Invocation(self, thisMethod, args));
+ }
+ });
+
+ return proxyObject;
+
+ // original cglib code:
+
+ // final Factory proxy = (Factory)objenesis.newInstance(proxyClass);
+ // proxy.setCallbacks(new Callback[] {
+ // new InvocationHandler() {
+ // public Object invoke(Object receiver, Method method, Object[] args) throws Throwable {
+ // return mockObject.invoke(new Invocation(receiver, method, args));
+ // }
+ // },
+ // NoOp.INSTANCE
+ // });
+ // return proxy;
+ }
+
+ private Class<?>[] prepend(Class<?> first, Class<?>... rest) {
+ Class<?>[] all = new Class<?>[rest.length+1];
+ all[0] = first;
+ System.arraycopy(rest, 0, all, 1, rest.length);
+ return all;
+ }
+
+ //public static class ClassWithSuperclassToWorkAroundCglibBug {}
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JavassistImposteriserTest.java
----------------------------------------------------------------------
diff --git a/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JavassistImposteriserTest.java b/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JavassistImposteriserTest.java
new file mode 100644
index 0000000..ce6480e
--- /dev/null
+++ b/core/unittestsupport/src/test/java/org/apache/isis/core/unittestsupport/jmocking/JavassistImposteriserTest.java
@@ -0,0 +1,299 @@
+package org.apache.isis.core.unittestsupport.jmocking;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Date;
+import org.jmock.api.Imposteriser;
+import org.jmock.api.Invocation;
+import org.jmock.api.Invokable;
+import org.jmock.lib.action.VoidAction;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class JavassistImposteriserTest {
+
+ private Imposteriser imposteriser = JavassistImposteriser.INSTANCE;
+
+ private Invokable invokable;
+ private Invocation invocation;
+
+
+ @Before
+ public void setUp() throws Exception {
+ invokable = new Invokable() {
+ @Override
+ public Object invoke(Invocation invocation) throws Throwable {
+ JavassistImposteriserTest.this.invocation = invocation;
+ return "result";
+ }
+ };
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ invokable = null;
+ invocation = null;
+ }
+
+
+ // //////////////////////////////////////
+
+
+ @Test
+ public void happyCaseWhenJdkInterface() {
+ assertTrue(imposteriser.canImposterise(Runnable.class));
+ final Runnable imposter = imposteriser.imposterise(invokable, Runnable.class);
+ assertNotNull(imposter);
+ imposter.run();
+ }
+
+ @Test
+ public void happyCaseWhenJdkClass() {
+ assertTrue(imposteriser.canImposterise(Date.class));
+ final Date imposter = imposteriser.imposterise(invokable, Date.class);
+ assertNotNull(imposter);
+ imposter.toString();
+ }
+
+
+ // //////////////////////////////////////
+
+ @Test
+ public void cannotImposterisePrimitiveType() {
+ assertFalse(imposteriser.canImposterise(int.class));
+ }
+
+ @Test
+ public void cannotImposteriseVoidType() {
+ assertFalse(imposteriser.canImposterise(void.class));
+ }
+
+
+ // //////////////////////////////////////
+
+
+ public static abstract class AnAbstractNestedClass {
+ @SuppressWarnings("UnusedDeclaration")
+ public abstract String foo();
+ }
+
+ @Test
+ public void happyCaseWhenAbstractClass() {
+ assertTrue(imposteriser.canImposterise(AnAbstractNestedClass.class));
+ final AnAbstractNestedClass imposter = imposteriser.imposterise(invokable, AnAbstractNestedClass.class);
+ assertNotNull(imposter);
+ assertEquals("result", imposter.foo());
+ }
+
+
+ // //////////////////////////////////////
+
+
+
+ public static class AnInnerClass {
+ @SuppressWarnings("UnusedDeclaration")
+ public String foo() {return "original result";}
+ }
+
+ @Test
+ public void happyCaseWhenNonFinalInstantiableClass() {
+ assertTrue(imposteriser.canImposterise(AnInnerClass.class));
+ final AnInnerClass imposter = imposteriser.imposterise(invokable, AnInnerClass.class);
+ assertNotNull(imposter);
+ assertEquals("result", imposter.foo());
+ }
+
+
+
+ // //////////////////////////////////////
+
+
+ public static final class AFinalClass {
+ @SuppressWarnings("UnusedDeclaration")
+ public String foo() {return "original result";}
+ }
+
+ @Test
+ public void cannotImposteriseWhenFinalInstantiableClasses() {
+ assertFalse(imposteriser.canImposterise(AFinalClass.class));
+ }
+
+
+ // //////////////////////////////////////
+
+
+
+ public static class AClassWithAPrivateConstructor {
+ @SuppressWarnings("unused")
+ private AClassWithAPrivateConstructor(String someArgument) {}
+
+ public String foo() {return "original result";}
+ }
+
+ @Test
+ public void happyCaseWhenClassWithNonPublicConstructor() {
+ assertTrue(imposteriser.canImposterise(AClassWithAPrivateConstructor.class));
+ AClassWithAPrivateConstructor imposter =
+ imposteriser.imposterise(invokable, AClassWithAPrivateConstructor.class);
+
+ assertNotNull(imposter);
+ assertEquals("result", imposter.foo());
+ }
+
+
+ // //////////////////////////////////////
+
+
+
+ @SuppressWarnings("ClassInitializerMayBeStatic")
+ public static class ConcreteClassWithConstructorAndInstanceInitializer {
+ {
+ shouldNotBeCalled("instance initializer");
+ }
+
+ public ConcreteClassWithConstructorAndInstanceInitializer() {
+ shouldNotBeCalled("constructor");
+ }
+
+ public String foo() {
+ shouldNotBeCalled("method foo()");
+ return null; // never reached
+ }
+
+ private static void shouldNotBeCalled(String exceptionMessageIfCalled) {
+ throw new IllegalStateException(exceptionMessageIfCalled + " should not be called");
+ }
+ }
+
+ @Test
+ public void happyCaseWhenConcreteClassWithConstructorAndInitialisersThatShouldNotBeCalled() {
+ assertTrue(imposteriser.canImposterise(ConcreteClassWithConstructorAndInstanceInitializer.class));
+ ConcreteClassWithConstructorAndInstanceInitializer imposter =
+ imposteriser.imposterise(invokable, ConcreteClassWithConstructorAndInstanceInitializer.class);
+ assertNotNull(imposter);
+ assertEquals("result", imposter.foo());
+ }
+
+
+
+ // //////////////////////////////////////
+
+
+
+ public interface AnInterface {
+ String foo();
+ }
+
+ @Test
+ public void happyCaseWhenCustomInterface() {
+ assertTrue(imposteriser.canImposterise(AnInterface.class));
+ AnInterface imposter = imposteriser.imposterise(invokable, AnInterface.class);
+
+ assertNotNull(imposter);
+ assertEquals("result", imposter.foo());
+ }
+
+
+
+ // //////////////////////////////////////
+
+
+
+
+ @Test
+ public void happyCaseWhenClassInASignedJarFile() throws Exception {
+ File jarFile = new File("src/test/resources/signed.jar");
+
+ assertTrue(jarFile.exists());
+
+ URL jarURL = jarFile.toURI().toURL();
+ ClassLoader loader = new URLClassLoader(new URL[]{jarURL});
+ Class<?> typeInSignedJar = loader.loadClass("TypeInSignedJar");
+
+ assertTrue(imposteriser.canImposterise(typeInSignedJar));
+ Object o = imposteriser.imposterise(new VoidAction(), typeInSignedJar);
+
+ assertTrue(typeInSignedJar.isInstance(o));
+ }
+
+
+
+ // //////////////////////////////////////
+
+
+ public static class ClassWithFinalToStringMethod {
+ @Override
+ public final String toString() {
+ return "you can't override me!";
+ }
+ }
+
+ // See issue JMOCK-150
+ @Test
+ public void cannotImposteriseAClassWithAFinalToStringMethod() {
+ assertFalse(imposteriser.canImposterise(ClassWithFinalToStringMethod.class));
+
+ try {
+ imposteriser.imposterise(new VoidAction(), ClassWithFinalToStringMethod.class);
+ fail("should have thrown IllegalArgumentException");
+ }
+ catch (IllegalArgumentException expected) {
+
+ }
+ }
+
+
+
+
+
+ // //////////////////////////////////////
+
+
+ public interface EmptyInterface {}
+
+ public interface AnInterface2 {
+ String foo();
+ }
+
+
+ // See issue JMOCK-145
+ @Test
+ public void worksAroundBugInCglibWhenAskedToImposteriseObject() {
+ imposteriser.imposterise(new VoidAction(), Object.class);
+ imposteriser.imposterise(new VoidAction(), Object.class, EmptyInterface.class);
+ imposteriser.imposterise(new VoidAction(), Object.class, AnInterface2.class);
+ }
+
+ private static Object invokeMethod(Object object, Method method, Object... args) throws IllegalAccessException, InvocationTargetException {
+ method.setAccessible(true);
+ return method.invoke(object, args);
+ }
+
+
+
+ // //////////////////////////////////////
+
+
+
+ // See issue JMOCK-256 (Github #36)
+ @Test
+ public void doesntDelegateFinalizeMethod() throws Exception {
+ Invokable failIfInvokedAction = new Invokable() {
+ @Override
+ public Object invoke(Invocation invocation) throws Throwable {
+ fail("invocation should not have happened");
+ return null;
+ }
+ };
+
+ Object imposter = imposteriser.imposterise(failIfInvokedAction, Object.class);
+ invokeMethod(imposter, Object.class.getDeclaredMethod("finalize"));
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/mothballed/component/objectstore/sql/sql-tests-common/pom.xml
----------------------------------------------------------------------
diff --git a/mothballed/component/objectstore/sql/sql-tests-common/pom.xml b/mothballed/component/objectstore/sql/sql-tests-common/pom.xml
index 829c1e4..ddb472a 100644
--- a/mothballed/component/objectstore/sql/sql-tests-common/pom.xml
+++ b/mothballed/component/objectstore/sql/sql-tests-common/pom.xml
@@ -152,10 +152,6 @@
<!-- others -->
<dependency>
<groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/07fb0e6e/mothballed/misc/metamodel/namefile/pom.xml
----------------------------------------------------------------------
diff --git a/mothballed/misc/metamodel/namefile/pom.xml b/mothballed/misc/metamodel/namefile/pom.xml
index 481ef78..17a8f6e 100644
--- a/mothballed/misc/metamodel/namefile/pom.xml
+++ b/mothballed/misc/metamodel/namefile/pom.xml
@@ -72,11 +72,6 @@
</exclusion>
</exclusions>
</dependency>
- <dependency>
- <groupId>org.jmock</groupId>
- <artifactId>jmock-legacy</artifactId>
- <version>2.6.0</version>
- </dependency>
</dependencies>