You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/08/16 11:04:37 UTC
git commit: ISIS-51, ISIS-495: removing dependencies on Apache commons
Updated Branches:
refs/heads/master 16854d353 -> 28189e1f9
ISIS-51, ISIS-495: removing dependencies on Apache commons
- commons-lang (except in Scimpi)
- commons-collections
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/28189e1f
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/28189e1f
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/28189e1f
Branch: refs/heads/master
Commit: 28189e1f9a26d4774995b6f7594d6d84f2fdde88
Parents: 16854d3
Author: Dan Haywood <da...@apache.org>
Authored: Fri Aug 16 10:04:20 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Fri Aug 16 10:04:20 2013 +0100
----------------------------------------------------------------------
.../xml/internal/UserProfileContentWriter.java | 3 +-
.../applib/client/RestfulClientTest_follow.java | 20 +-
...estfulObjectsApplicationExceptionMapper.java | 7 +-
.../server/RuntimeExceptionMapper.java | 9 +-
component/viewer/scimpi/dispatcher/pom.xml | 5 +
.../dispatcher/view/debug/Specification.java | 3 +-
component/viewer/scimpi/pom.xml | 7 +
.../ConverterForObjectAdapterMemento.java | 5 +-
.../viewer/wicket/ui/pages/PageAbstract.java | 8 +-
core/metamodel/pom.xml | 5 -
.../core/commons/exceptions/ExceptionUtils.java | 413 +++++++++++++++++++
.../isis/core/commons/lang/StringUtils.java | 109 +++++
.../collections/CollectionFacetAbstract.java | 9 -
.../collections/modify/CollectionFacet.java | 7 -
.../core/metamodel/spec/FreeStandingList.java | 12 -
.../collection/JavaCollectionFacet.java | 4 +-
.../collection/ObjectToAdapterFunction.java | 53 +++
.../collection/ObjectToAdapterTransformer.java | 53 ---
.../isis/core/runtime/snapshot/XmlSnapshot.java | 4 +-
.../collections/JavaCollectionFacetTest.java | 3 -
core/pom.xml | 17 +-
core/runtime/pom.xml | 2 +
.../isis/core/runtime/RuntimeBootstrapper.java | 22 +-
.../ObjectToAdapterTransformer.java | 56 ---
.../adaptermanager/PojoAdapterHashMap.java | 1 -
25 files changed, 631 insertions(+), 206 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/profilestore/xml/src/main/java/org/apache/isis/profilestore/xml/internal/UserProfileContentWriter.java
----------------------------------------------------------------------
diff --git a/component/profilestore/xml/src/main/java/org/apache/isis/profilestore/xml/internal/UserProfileContentWriter.java b/component/profilestore/xml/src/main/java/org/apache/isis/profilestore/xml/internal/UserProfileContentWriter.java
index 62a345e..59c0ad2 100644
--- a/component/profilestore/xml/src/main/java/org/apache/isis/profilestore/xml/internal/UserProfileContentWriter.java
+++ b/component/profilestore/xml/src/main/java/org/apache/isis/profilestore/xml/internal/UserProfileContentWriter.java
@@ -23,8 +23,7 @@ import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
-import org.apache.commons.lang.StringUtils;
-
+import org.apache.isis.core.commons.lang.StringUtils;
import org.apache.isis.core.commons.xml.ContentWriter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java
index 3573a16..8e0926a 100644
--- a/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java
+++ b/component/viewer/restfulobjects/applib/src/test/java/org/apache/isis/viewer/restfulobjects/applib/client/RestfulClientTest_follow.java
@@ -21,19 +21,15 @@ package org.apache.isis.viewer.restfulobjects.applib.client;
import java.net.URI;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
-import org.apache.commons.collections.map.MultiValueMap;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
-import org.apache.isis.viewer.restfulobjects.applib.JsonFixture;
-import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
-import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import org.jboss.resteasy.client.ClientExecutor;
import org.jboss.resteasy.client.ClientRequest;
import org.jboss.resteasy.client.core.BaseClientResponse;
+import org.jboss.resteasy.specimpl.MultivaluedMapImpl;
import org.jboss.resteasy.specimpl.UriBuilderImpl;
import org.jmock.Expectations;
import org.jmock.auto.Mock;
@@ -42,6 +38,12 @@ import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+import org.apache.isis.viewer.restfulobjects.applib.JsonFixture;
+import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
+import org.apache.isis.viewer.restfulobjects.applib.LinkRepresentation;
+
public class RestfulClientTest_follow {
@Rule
@@ -90,13 +92,13 @@ public class RestfulClientTest_follow {
allowing(mockClientRequest).getHttpMethod();
will(returnValue("GET"));
- one(mockClientRequest).execute();
+ oneOf(mockClientRequest).execute();
will(returnValue(mockClientResponse));
- one(mockClientResponse).setReturnType(String.class);
+ oneOf(mockClientResponse).setReturnType(String.class);
allowing(mockClientResponse);
- final MultiValueMap result = new MultiValueMap();
+ final MultivaluedMap result = new MultivaluedMapImpl();
result.put("Content-Type", "application/json");
allowing(mockClientResponse).getMetadata();
will(returnValue(result));
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplicationExceptionMapper.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplicationExceptionMapper.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplicationExceptionMapper.java
index 409ecdc..0c9eb4b 100644
--- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplicationExceptionMapper.java
+++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplicationExceptionMapper.java
@@ -20,21 +20,20 @@ package org.apache.isis.viewer.restfulobjects.server;
import java.util.List;
-import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
-import org.apache.commons.lang.exception.ExceptionUtils;
+import com.google.common.collect.Lists;
+
+import org.apache.isis.core.commons.exceptions.ExceptionUtils;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
-import com.google.common.collect.Lists;
-
//@Path("/") // FIXME: workaround for TomEE ... but breaks the RestEasy TCK tests so commented out:-(
@Provider
public class RestfulObjectsApplicationExceptionMapper implements ExceptionMapper<RestfulObjectsApplicationException> {
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java
----------------------------------------------------------------------
diff --git a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java
index d642823..315451c 100644
--- a/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java
+++ b/component/viewer/restfulobjects/server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RuntimeExceptionMapper.java
@@ -25,13 +25,14 @@ import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
-import org.apache.commons.lang.exception.ExceptionUtils;
+import com.google.common.collect.Lists;
+
+import org.jboss.resteasy.spi.Failure;
+
+import org.apache.isis.core.commons.exceptions.ExceptionUtils;
import org.apache.isis.viewer.restfulobjects.applib.RestfulMediaType;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse.HttpStatusCode;
import org.apache.isis.viewer.restfulobjects.applib.util.JsonMapper;
-import org.jboss.resteasy.spi.Failure;
-
-import com.google.common.collect.Lists;
@Provider
public class RuntimeExceptionMapper implements ExceptionMapper<RuntimeException> {
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/viewer/scimpi/dispatcher/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/pom.xml b/component/viewer/scimpi/dispatcher/pom.xml
index 44ed076..012a7de 100644
--- a/component/viewer/scimpi/dispatcher/pom.xml
+++ b/component/viewer/scimpi/dispatcher/pom.xml
@@ -80,6 +80,11 @@
</dependency>
<dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.htmlparser</groupId>
<artifactId>htmlparser</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java
index b7a0e1a..315b01e 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/debug/Specification.java
@@ -22,8 +22,7 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.debug;
import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.lang.StringUtils;
-
+import org.apache.isis.core.commons.lang.StringUtils;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/viewer/scimpi/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/pom.xml b/component/viewer/scimpi/pom.xml
index a4f1dc9..ec824c0 100644
--- a/component/viewer/scimpi/pom.xml
+++ b/component/viewer/scimpi/pom.xml
@@ -120,6 +120,13 @@
<version>1.0.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <!-- defined here because other Isis modules do not depend upon it -->
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.6</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
index 2c61488..f5b95ad 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
@@ -21,7 +21,8 @@ package org.apache.isis.viewer.wicket.viewer.integration.wicket;
import java.util.Locale;
-import org.apache.commons.lang.StringUtils;
+import com.google.common.base.Strings;
+
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -50,7 +51,7 @@ public class ConverterForObjectAdapterMemento implements IConverter {
*/
@Override
public Object convertToObject(final String value, final Locale locale) {
- if (StringUtils.isEmpty(value)) {
+ if (Strings.isNullOrEmpty(value)) {
return null;
}
final Oid oid = RootOidDefault.deStringEncoded(value, getOidMarshaller());
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index b88a0d9..f6b3563 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -23,12 +23,10 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import com.google.common.base.Strings;
import com.google.inject.Inject;
import com.google.inject.name.Named;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.wicket.Application;
import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.markup.head.CssReferenceHeaderItem;
@@ -44,6 +42,8 @@ import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
@@ -176,7 +176,7 @@ public abstract class PageAbstract extends WebPage {
//response.render(new PriorityHeaderItem(JavaScriptReferenceHeaderItem.forReference(BOOTSTRAP_JS)));
final String feedbackMsg = JGrowlUtil.asJGrowlCalls(getMessageBroker());
- if (!StringUtils.isEmpty(feedbackMsg)) {
+ if (!Strings.isNullOrEmpty(feedbackMsg)) {
response.render(OnDomReadyHeaderItem.forScript(feedbackMsg));
}
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/pom.xml
----------------------------------------------------------------------
diff --git a/core/metamodel/pom.xml b/core/metamodel/pom.xml
index b55d5ee..b5fb279 100644
--- a/core/metamodel/pom.xml
+++ b/core/metamodel/pom.xml
@@ -72,11 +72,6 @@
<scope>test</scope>
</dependency>
-
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- </dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/commons/exceptions/ExceptionUtils.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/exceptions/ExceptionUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/exceptions/ExceptionUtils.java
new file mode 100644
index 0000000..fc81a98
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/exceptions/ExceptionUtils.java
@@ -0,0 +1,413 @@
+/**
+ * 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.commons.exceptions;
+
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.StringTokenizer;
+
+/**
+ * <p>Provides utilities for manipulating and examining
+ * <code>Throwable</code> objects.</p>
+ *
+ * @author Daniel L. Rall
+ * @author Dmitri Plotnikov
+ * @author Stephen Colebourne
+ * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
+ * @author Pete Gieser
+ * @since 1.0
+ * @version $Id: ExceptionUtils.java 594278 2007-11-12 19:58:30Z bayard $
+ */
+// portions copied in from commons-lang 2.6
+public class ExceptionUtils {
+
+ /**
+ * <p>The names of methods commonly used to access a wrapped exception.</p>
+ */
+ private static String[] CAUSE_METHOD_NAMES = {
+ "getCause",
+ "getNextException",
+ "getTargetException",
+ "getException",
+ "getSourceException",
+ "getRootCause",
+ "getCausedByException",
+ "getNested",
+ "getLinkedException",
+ "getNestedException",
+ "getLinkedCause",
+ "getThrowable",
+ };
+
+ /**
+ * <p>The Method object for Java 1.4 getCause.</p>
+ */
+ private static final Method THROWABLE_CAUSE_METHOD;
+
+ /**
+ * <p>The Method object for Java 1.4 initCause.</p>
+ */
+ private static final Method THROWABLE_INITCAUSE_METHOD;
+
+ static {
+ Method causeMethod;
+ try {
+ causeMethod = Throwable.class.getMethod("getCause", null);
+ } catch (Exception e) {
+ causeMethod = null;
+ }
+ THROWABLE_CAUSE_METHOD = causeMethod;
+ try {
+ causeMethod = Throwable.class.getMethod("initCause", new Class[]{Throwable.class});
+ } catch (Exception e) {
+ causeMethod = null;
+ }
+ THROWABLE_INITCAUSE_METHOD = causeMethod;
+ }
+
+ /**
+ * <p>
+ * Public constructor allows an instance of <code>ExceptionUtils</code> to be created, although that is not
+ * normally necessary.
+ * </p>
+ */
+ public ExceptionUtils() {
+ super();
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * <p>Introspects the <code>Throwable</code> to obtain the cause.</p>
+ *
+ * <p>The method searches for methods with specific names that return a
+ * <code>Throwable</code> object. This will pick up most wrapping exceptions,
+ * including those from JDK 1.4, and
+ * {@link org.apache.commons.lang.exception.NestableException NestableException}.
+ * The method names can be added to using {@link #addCauseMethodName(String)}.</p>
+ *
+ * <p>The default list searched for are:</p>
+ * <ul>
+ * <li><code>getCause()</code></li>
+ * <li><code>getNextException()</code></li>
+ * <li><code>getTargetException()</code></li>
+ * <li><code>getException()</code></li>
+ * <li><code>getSourceException()</code></li>
+ * <li><code>getRootCause()</code></li>
+ * <li><code>getCausedByException()</code></li>
+ * <li><code>getNested()</code></li>
+ * </ul>
+ *
+ * <p>In the absence of any such method, the object is inspected for a
+ * <code>detail</code> field assignable to a <code>Throwable</code>.</p>
+ *
+ * <p>If none of the above is found, returns <code>null</code>.</p>
+ *
+ * @param throwable the throwable to introspect for a cause, may be null
+ * @return the cause of the <code>Throwable</code>,
+ * <code>null</code> if none found or null throwable input
+ * @since 1.0
+ */
+ public static Throwable getCause(Throwable throwable) {
+ synchronized(CAUSE_METHOD_NAMES) {
+ return getCause(throwable, CAUSE_METHOD_NAMES);
+ }
+ }
+
+ /**
+ * <p>Introspects the <code>Throwable</code> to obtain the cause.</p>
+ *
+ * <ol>
+ * <li>Try known exception types.</li>
+ * <li>Try the supplied array of method names.</li>
+ * <li>Try the field 'detail'.</li>
+ * </ol>
+ *
+ * <p>A <code>null</code> set of method names means use the default set.
+ * A <code>null</code> in the set of method names will be ignored.</p>
+ *
+ * @param throwable the throwable to introspect for a cause, may be null
+ * @param methodNames the method names, null treated as default set
+ * @return the cause of the <code>Throwable</code>,
+ * <code>null</code> if none found or null throwable input
+ * @since 1.0
+ */
+ public static Throwable getCause(Throwable throwable, String[] methodNames) {
+ if (throwable == null) {
+ return null;
+ }
+ Throwable cause = getCauseUsingWellKnownTypes(throwable);
+ if (cause == null) {
+ if (methodNames == null) {
+ synchronized(CAUSE_METHOD_NAMES) {
+ methodNames = CAUSE_METHOD_NAMES;
+ }
+ }
+ for (int i = 0; i < methodNames.length; i++) {
+ String methodName = methodNames[i];
+ if (methodName != null) {
+ cause = getCauseUsingMethodName(throwable, methodName);
+ if (cause != null) {
+ break;
+ }
+ }
+ }
+
+ if (cause == null) {
+ cause = getCauseUsingFieldName(throwable, "detail");
+ }
+ }
+ return cause;
+ }
+
+ /**
+ * <p>Finds a <code>Throwable</code> for known types.</p>
+ *
+ * <p>Uses <code>instanceof</code> checks to examine the exception,
+ * looking for well known types which could contain chained or
+ * wrapped exceptions.</p>
+ *
+ * @param throwable the exception to examine
+ * @return the wrapped exception, or <code>null</code> if not found
+ */
+ private static Throwable getCauseUsingWellKnownTypes(Throwable throwable) {
+ /*if (throwable instanceof Nestable) {
+ return ((Nestable) throwable).getCause();
+ } else */
+ if (throwable instanceof SQLException) {
+ return ((SQLException) throwable).getNextException();
+ } else if (throwable instanceof InvocationTargetException) {
+ return ((InvocationTargetException) throwable).getTargetException();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * <p>Finds a <code>Throwable</code> by method name.</p>
+ *
+ * @param throwable the exception to examine
+ * @param methodName the name of the method to find and invoke
+ * @return the wrapped exception, or <code>null</code> if not found
+ */
+ private static Throwable getCauseUsingMethodName(Throwable throwable, String methodName) {
+ Method method = null;
+ try {
+ method = throwable.getClass().getMethod(methodName, null);
+ } catch (NoSuchMethodException ignored) {
+ // exception ignored
+ } catch (SecurityException ignored) {
+ // exception ignored
+ }
+
+ if (method != null && Throwable.class.isAssignableFrom(method.getReturnType())) {
+ try {
+ return (Throwable) method.invoke(throwable, /*ArrayUtils.*/EMPTY_OBJECT_ARRAY);
+ } catch (IllegalAccessException ignored) {
+ // exception ignored
+ } catch (IllegalArgumentException ignored) {
+ // exception ignored
+ } catch (InvocationTargetException ignored) {
+ // exception ignored
+ }
+ }
+ return null;
+ }
+
+ private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
+
+ /**
+ * <p>Finds a <code>Throwable</code> by field name.</p>
+ *
+ * @param throwable the exception to examine
+ * @param fieldName the name of the attribute to examine
+ * @return the wrapped exception, or <code>null</code> if not found
+ */
+ private static Throwable getCauseUsingFieldName(Throwable throwable, String fieldName) {
+ Field field = null;
+ try {
+ field = throwable.getClass().getField(fieldName);
+ } catch (NoSuchFieldException ignored) {
+ // exception ignored
+ } catch (SecurityException ignored) {
+ // exception ignored
+ }
+
+ if (field != null && Throwable.class.isAssignableFrom(field.getType())) {
+ try {
+ return (Throwable) field.get(throwable);
+ } catch (IllegalAccessException ignored) {
+ // exception ignored
+ } catch (IllegalArgumentException ignored) {
+ // exception ignored
+ }
+ }
+ return null;
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * <p>Checks if the Throwable class has a <code>getCause</code> method.</p>
+ *
+ * <p>This is true for JDK 1.4 and above.</p>
+ *
+ * @return true if Throwable is nestable
+ * @since 2.0
+ */
+ public static boolean isThrowableNested() {
+ return THROWABLE_CAUSE_METHOD != null;
+ }
+
+ /**
+ * <p>Checks whether this <code>Throwable</code> class can store a cause.</p>
+ *
+ * <p>This method does <b>not</b> check whether it actually does store a cause.<p>
+ *
+ * @param throwable the <code>Throwable</code> to examine, may be null
+ * @return boolean <code>true</code> if nested otherwise <code>false</code>
+ * @since 2.0
+ */
+ public static boolean isNestedThrowable(Throwable throwable) {
+ if (throwable == null) {
+ return false;
+ }
+
+ /*if (throwable instanceof Nestable) {
+ return true;
+ } else*/ if (throwable instanceof SQLException) {
+ return true;
+ } else if (throwable instanceof InvocationTargetException) {
+ return true;
+ } else if (isThrowableNested()) {
+ return true;
+ }
+
+ Class cls = throwable.getClass();
+ synchronized(CAUSE_METHOD_NAMES) {
+ for (int i = 0, isize = CAUSE_METHOD_NAMES.length; i < isize; i++) {
+ try {
+ Method method = cls.getMethod(CAUSE_METHOD_NAMES[i], null);
+ if (method != null && Throwable.class.isAssignableFrom(method.getReturnType())) {
+ return true;
+ }
+ } catch (NoSuchMethodException ignored) {
+ // exception ignored
+ } catch (SecurityException ignored) {
+ // exception ignored
+ }
+ }
+ }
+
+ try {
+ Field field = cls.getField("detail");
+ if (field != null) {
+ return true;
+ }
+ } catch (NoSuchFieldException ignored) {
+ // exception ignored
+ } catch (SecurityException ignored) {
+ // exception ignored
+ }
+
+ return false;
+ }
+
+ /**
+ * <p>Returns the list of <code>Throwable</code> objects in the
+ * exception chain.</p>
+ *
+ * <p>A throwable without cause will return an array containing
+ * one element - the input throwable.
+ * A throwable with one cause will return an array containing
+ * two elements. - the input throwable and the cause throwable.
+ * A <code>null</code> throwable will return an array of size zero.</p>
+ *
+ * <p>From version 2.2, this method handles recursive cause structures
+ * that might otherwise cause infinite loops. The cause chain is
+ * processed until the end is reached, or until the next item in the
+ * chain is already in the result set.</p>
+ *
+ * @see #getThrowableList(Throwable)
+ * @param throwable the throwable to inspect, may be null
+ * @return the array of throwables, never null
+ */
+ public static Throwable[] getThrowables(Throwable throwable) {
+ List list = getThrowableList(throwable);
+ return (Throwable[]) list.toArray(new Throwable[list.size()]);
+ }
+
+ /**
+ * <p>Returns the list of <code>Throwable</code> objects in the
+ * exception chain.</p>
+ *
+ * <p>A throwable without cause will return a list containing
+ * one element - the input throwable.
+ * A throwable with one cause will return a list containing
+ * two elements. - the input throwable and the cause throwable.
+ * A <code>null</code> throwable will return a list of size zero.</p>
+ *
+ * <p>This method handles recursive cause structures that might
+ * otherwise cause infinite loops. The cause chain is processed until
+ * the end is reached, or until the next item in the chain is already
+ * in the result set.</p>
+ *
+ * @param throwable the throwable to inspect, may be null
+ * @return the list of throwables, never null
+ * @since Commons Lang 2.2
+ */
+ public static List getThrowableList(Throwable throwable) {
+ List list = new ArrayList();
+ while (throwable != null && list.contains(throwable) == false) {
+ list.add(throwable);
+ throwable = ExceptionUtils.getCause(throwable);
+ }
+ return list;
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * <p>A way to get the entire nested stack-trace of an throwable.</p>
+ *
+ * <p>The result of this method is highly dependent on the JDK version
+ * and whether the exceptions override printStackTrace or not.</p>
+ *
+ * @param throwable the <code>Throwable</code> to be examined
+ * @return the nested stack trace, with the root cause first
+ * @since 2.0
+ */
+ public static String getFullStackTrace(Throwable throwable) {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw, true);
+ Throwable[] ts = getThrowables(throwable);
+ for (int i = 0; i < ts.length; i++) {
+ ts[i].printStackTrace(pw);
+ if (isNestedThrowable(ts[i])) {
+ break;
+ }
+ }
+ return sw.getBuffer().toString();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringUtils.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringUtils.java
index 5abfa76..2eedb65 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringUtils.java
@@ -385,4 +385,113 @@ public final class StringUtils {
return string2;
}
+
+ // //////////////////////////////////////
+ // copied in from Apache Commons
+ // //////////////////////////////////////
+
+
+ public static final String EMPTY = "";
+ /**
+ * <p>The maximum size to which the padding constant(s) can expand.</p>
+ */
+ private static final int PAD_LIMIT = 8192;
+
+ /**
+ * <p>Repeat a String <code>repeat</code> times to form a
+ * new String.</p>
+ *
+ * <pre>
+ * StringUtils.repeat(null, 2) = null
+ * StringUtils.repeat("", 0) = ""
+ * StringUtils.repeat("", 2) = ""
+ * StringUtils.repeat("a", 3) = "aaa"
+ * StringUtils.repeat("ab", 2) = "abab"
+ * StringUtils.repeat("a", -2) = ""
+ * </pre>
+ *
+ * @param str the String to repeat, may be null
+ * @param repeat number of times to repeat str, negative treated as zero
+ * @return a new String consisting of the original String repeated,
+ * <code>null</code> if null String input
+ */
+ public static String repeat(String str, int repeat) {
+ // Performance tuned for 2.0 (JDK1.4)
+
+ if (str == null) {
+ return null;
+ }
+ if (repeat <= 0) {
+ return EMPTY;
+ }
+ int inputLength = str.length();
+ if (repeat == 1 || inputLength == 0) {
+ return str;
+ }
+ if (inputLength == 1 && repeat <= PAD_LIMIT) {
+ return padding(repeat, str.charAt(0));
+ }
+
+ int outputLength = inputLength * repeat;
+ switch (inputLength) {
+ case 1 :
+ char ch = str.charAt(0);
+ char[] output1 = new char[outputLength];
+ for (int i = repeat - 1; i >= 0; i--) {
+ output1[i] = ch;
+ }
+ return new String(output1);
+ case 2 :
+ char ch0 = str.charAt(0);
+ char ch1 = str.charAt(1);
+ char[] output2 = new char[outputLength];
+ for (int i = repeat * 2 - 2; i >= 0; i--, i--) {
+ output2[i] = ch0;
+ output2[i + 1] = ch1;
+ }
+ return new String(output2);
+ default :
+ StringBuilder buf = new StringBuilder(outputLength);
+ for (int i = 0; i < repeat; i++) {
+ buf.append(str);
+ }
+ return buf.toString();
+ }
+ }
+
+ /**
+ * <p>Returns padding using the specified delimiter repeated
+ * to a given length.</p>
+ *
+ * <pre>
+ * StringUtils.padding(0, 'e') = ""
+ * StringUtils.padding(3, 'e') = "eee"
+ * StringUtils.padding(-2, 'e') = IndexOutOfBoundsException
+ * </pre>
+ *
+ * <p>Note: this method doesn't not support padding with
+ * <a href="http://www.unicode.org/glossary/#supplementary_character">Unicode Supplementary Characters</a>
+ * as they require a pair of <code>char</code>s to be represented.
+ * If you are needing to support full I18N of your applications
+ * consider using {@link #repeat(String, int)} instead.
+ * </p>
+ *
+ * @param repeat number of times to repeat delim
+ * @param padChar character to repeat
+ * @return String with repeated character
+ * @throws IndexOutOfBoundsException if <code>repeat < 0</code>
+ * @see #repeat(String, int)
+ */
+ private static String padding(int repeat, char padChar) throws IndexOutOfBoundsException {
+ if (repeat < 0) {
+ throw new IndexOutOfBoundsException("Cannot pad a negative amount: " + repeat);
+ }
+ final char[] buf = new char[repeat];
+ for (int i = 0; i < buf.length; i++) {
+ buf[i] = padChar;
+ }
+ return new String(buf);
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/CollectionFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/CollectionFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/CollectionFacetAbstract.java
index 38ea6e4..7cb3a8a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/CollectionFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/CollectionFacetAbstract.java
@@ -20,11 +20,8 @@
package org.apache.isis.core.metamodel.facets.collections;
import java.util.Collection;
-import java.util.Enumeration;
import java.util.Iterator;
-import org.apache.commons.collections.iterators.IteratorEnumeration;
-
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -38,12 +35,6 @@ public abstract class CollectionFacetAbstract extends FacetAbstract implements C
}
@Override
- @SuppressWarnings("unchecked")
- public final Enumeration<ObjectAdapter> elements(final ObjectAdapter collectionAdapter) {
- return new IteratorEnumeration(iterator(collectionAdapter));
- }
-
- @Override
public final boolean contains(final ObjectAdapter collectionAdapter, final ObjectAdapter candidateObjectAdapter) {
final Collection<ObjectAdapter> collection = collection(collectionAdapter);
return collection.contains(candidateObjectAdapter);
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
index 0c22120..3028880 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/modify/CollectionFacet.java
@@ -40,13 +40,6 @@ public interface CollectionFacet extends Facet {
int size(ObjectAdapter collection);
- /**
- * @deprecated - use {@link #iterator(ObjectAdapter)} or
- * {@link #iterable(ObjectAdapter)}.
- */
- @Deprecated
- Enumeration<ObjectAdapter> elements(ObjectAdapter collectionAdapter);
-
Iterable<ObjectAdapter> iterable(ObjectAdapter collectionAdapter);
Iterator<ObjectAdapter> iterator(ObjectAdapter collectionAdapter);
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/FreeStandingList.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/FreeStandingList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/FreeStandingList.java
index 234b71d..14c1670 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/FreeStandingList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/FreeStandingList.java
@@ -21,11 +21,8 @@ package org.apache.isis.core.metamodel.spec;
import java.util.AbstractList;
import java.util.Collections;
-import java.util.Enumeration;
import java.util.List;
-import org.apache.commons.collections.iterators.IteratorEnumeration;
-
import org.apache.isis.core.commons.lang.ToString;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -58,15 +55,6 @@ public class FreeStandingList extends AbstractList<ObjectAdapter> {
return instances.size();
}
- /**
- * @deprecated - use {@link #iterator()}.
- */
- @SuppressWarnings("unchecked")
- @Deprecated
- public Enumeration<ObjectAdapter> elements() {
- return new IteratorEnumeration(iterator());
- }
-
public ObjectSpecification getElementSpecification() {
return instanceSpecification;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/JavaCollectionFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/JavaCollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/JavaCollectionFacet.java
index 0010415..fc524b2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/JavaCollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/JavaCollectionFacet.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.progmodel.facets.collections.collection;
import java.util.Collection;
import java.util.Iterator;
-import org.apache.commons.collections.CollectionUtils;
+import com.google.common.collect.Collections2;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -42,7 +42,7 @@ public class JavaCollectionFacet extends CollectionFacetAbstract {
@SuppressWarnings("unchecked")
public Collection<ObjectAdapter> collection(final ObjectAdapter wrappedCollection) {
final Collection<?> collectionOfUnderlying = collectionOfUnderlying(wrappedCollection);
- return CollectionUtils.collect(collectionOfUnderlying, new ObjectToAdapterTransformer(getAdapterManager()));
+ return Collections2.transform(collectionOfUnderlying, new ObjectToAdapterFunction(getAdapterManager()));
}
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/ObjectToAdapterFunction.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/ObjectToAdapterFunction.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/ObjectToAdapterFunction.java
new file mode 100644
index 0000000..4d1ada3
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/ObjectToAdapterFunction.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.progmodel.facets.collections.collection;
+
+import com.google.common.base.Function;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+
+/**
+ * Uses the Commons Collection API to transform {@link Object}s into
+ * {@link ObjectAdapter} adapters.
+ *
+ */
+public final class ObjectToAdapterFunction implements Function<Object,ObjectAdapter> {
+
+ private final AdapterManager adapterManager;
+
+ public ObjectToAdapterFunction(final AdapterManager adapterManager) {
+ this.adapterManager = adapterManager;
+ }
+
+ @Override
+ public ObjectAdapter apply(final Object object) {
+ return getAdapterManager().adapterFor(object);
+ }
+
+ // //////////////////////////////////////////////////////////////////
+ // Dependencies (from constructor)
+ // //////////////////////////////////////////////////////////////////
+
+ public AdapterManager getAdapterManager() {
+ return adapterManager;
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/ObjectToAdapterTransformer.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/ObjectToAdapterTransformer.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/ObjectToAdapterTransformer.java
deleted file mode 100644
index 442a24d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/collections/collection/ObjectToAdapterTransformer.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.progmodel.facets.collections.collection;
-
-import org.apache.commons.collections.Transformer;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-
-/**
- * Uses the Commons Collection API to transform {@link Object}s into
- * {@link ObjectAdapter} adapters.
- *
- */
-public final class ObjectToAdapterTransformer implements Transformer {
-
- private final AdapterManager adapterManager;
-
- public ObjectToAdapterTransformer(final AdapterManager adapterManager) {
- this.adapterManager = adapterManager;
- }
-
- @Override
- public Object transform(final Object object) {
- return getAdapterManager().adapterFor(object);
- }
-
- // //////////////////////////////////////////////////////////////////
- // Dependencies (from constructor)
- // //////////////////////////////////////////////////////////////////
-
- public AdapterManager getAdapterManager() {
- return adapterManager;
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshot.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshot.java b/core/metamodel/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshot.java
index 54d49ba..c3dc75c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshot.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/runtime/snapshot/XmlSnapshot.java
@@ -499,9 +499,7 @@ public class XmlSnapshot {
LOG.debug("includeField(Pl, Vec, Str): 1->M: " + log("collection.size", "" + facet.size(collection)));
}
boolean allFieldsNavigated = true;
- final Enumeration elements = facet.elements(collection);
- while (elements.hasMoreElements()) {
- final ObjectAdapter referencedObject = (ObjectAdapter) elements.nextElement();
+ for(final ObjectAdapter referencedObject: facet.iterable(collection)) {
final boolean appendedXml = appendXmlThenIncludeRemaining(fieldPlace, referencedObject, names, annotation);
if (LOG.isDebugEnabled()) {
LOG.debug("includeField(Pl, Vec, Str): 1->M: + invoked appendXmlThenIncludeRemaining for " + log("referencedObj", referencedObject) + andlog("returned", "" + appendedXml));
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/collections/JavaCollectionFacetTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/collections/JavaCollectionFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/collections/JavaCollectionFacetTest.java
index 1f65ca2..5f98ffc 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/collections/JavaCollectionFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/collections/JavaCollectionFacetTest.java
@@ -77,9 +77,6 @@ public class JavaCollectionFacetTest {
one(mockCollection).getObject();
will(returnValue(mockWrappedCollection));
- one(mockWrappedCollection).size();
- will(returnValue(0));
-
one(mockWrappedCollection).iterator();
will(returnValue(mockIterator));
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index c298e5c..81874a2 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -59,7 +59,6 @@
<testsToExclude>**/*IntegrationTest.java</testsToExclude>
-
<!-- remaining properties should not need to be overridden -->
<compileSource>1.6</compileSource>
<compileTarget>1.6</compileTarget>
@@ -1185,16 +1184,7 @@ ${license.additional-notes}
</dependency>
<!-- Apache Commons -->
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.6</version>
- </dependency>
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>3.2.1</version>
- </dependency>
+
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
@@ -1210,11 +1200,6 @@ ${license.additional-notes}
<artifactId>commons-codec</artifactId>
<version>1.8</version>
</dependency>
- <dependency>
- <groupId>commons-jxpath</groupId>
- <artifactId>commons-jxpath</artifactId>
- <version>1.3</version>
- </dependency>
<!-- Other Common Utils -->
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/runtime/pom.xml
----------------------------------------------------------------------
diff --git a/core/runtime/pom.xml b/core/runtime/pom.xml
index 0393004..12eacb1 100644
--- a/core/runtime/pom.xml
+++ b/core/runtime/pom.xml
@@ -115,10 +115,12 @@
<scope>test</scope>
</dependency>
+<!--
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
+ -->
<dependency>
<groupId>org.jmock</groupId>
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/runtime/src/main/java/org/apache/isis/core/runtime/RuntimeBootstrapper.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/RuntimeBootstrapper.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/RuntimeBootstrapper.java
index bb43257..f6b3c44 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/RuntimeBootstrapper.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/RuntimeBootstrapper.java
@@ -22,11 +22,11 @@ package org.apache.isis.core.runtime;
import java.util.ArrayList;
import java.util.List;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
import com.google.inject.Injector;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.Predicate;
-
import org.apache.isis.core.commons.lang.Threads;
import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
import org.apache.isis.core.runtime.installerregistry.installerapi.EmbeddedWebServerInstaller;
@@ -78,15 +78,13 @@ final class RuntimeBootstrapper implements IsisBootstrapper {
}
private List<IsisViewer> findWebViewers(final List<IsisViewer> viewers) {
- final List<IsisViewer> webViewers = new ArrayList<IsisViewer>(viewers);
- CollectionUtils.filter(webViewers, new Predicate() {
- @Override
- public boolean evaluate(final Object object) {
- final IsisViewer viewer = (IsisViewer) object;
- return viewer.getWebAppSpecification() != null;
- }
- });
- return webViewers;
+ return Lists.newArrayList(
+ Iterables.filter(viewers, new Predicate<IsisViewer>() {
+ @Override
+ public boolean apply(final IsisViewer viewer) {
+ return viewer.getWebAppSpecification() != null;
+ }
+ }));
}
private List<IsisViewer> findNonWebViewers(final List<IsisViewer> viewers, final List<IsisViewer> webViewers) {
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/ObjectToAdapterTransformer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/ObjectToAdapterTransformer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/ObjectToAdapterTransformer.java
deleted file mode 100644
index 1ddd331..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/ObjectToAdapterTransformer.java
+++ /dev/null
@@ -1,56 +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.persistence.adaptermanager;
-
-import org.apache.commons.collections.Transformer;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-
-/**
- * Uses the Commons Collection API to transform {@link Object}s into
- * {@link ObjectAdapter} adapters.
- *
- */
-public final class ObjectToAdapterTransformer implements Transformer {
-
- public ObjectToAdapterTransformer() {
- }
-
- @Override
- public Object transform(final Object object) {
- return getAdapterManager().adapterFor(object);
- }
-
- // //////////////////////////////////////////////////////////////////
- // Dependencies (from context)
- // //////////////////////////////////////////////////////////////////
-
- protected AdapterManager getAdapterManager() {
- return getPersistenceSession().getAdapterManager();
- }
-
- protected PersistenceSession getPersistenceSession() {
- return IsisContext.getPersistenceSession();
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/isis/blob/28189e1f/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoAdapterHashMap.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoAdapterHashMap.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoAdapterHashMap.java
index 2927d8d..63bddfa 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoAdapterHashMap.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoAdapterHashMap.java
@@ -24,7 +24,6 @@ import java.util.Map;
import com.google.common.collect.Maps;
-import org.apache.commons.collections.map.IdentityMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;