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/09/06 14:53:36 UTC

[7/8] ISIS-509: tidy-up of Util classes.

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ClassLoaders.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ClassLoaders.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ClassLoaders.java
deleted file mode 100644
index 1af6571..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ClassLoaders.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import com.google.common.collect.Maps;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public final class ClassLoaders {
-
-    private static Map<String, Class<?>> primitives = Maps.newHashMap();
-
-    static {
-        @SuppressWarnings({ "rawtypes" })
-        final List<Class> primitiveClasses = Arrays.<Class> asList(boolean.class, byte.class, short.class, int.class, long.class, float.class, double.class, char.class);
-        for (final Class<?> cls : primitiveClasses) {
-            primitives.put(cls.getName(), cls);
-        }
-    }
-
-    public static Class<?> forName(final ObjectSpecification objectSpec) {
-        final String fullName = objectSpec.getFullIdentifier();
-        return forName(fullName);
-    }
-
-    public static Class<?> forName(final String fullName) {
-        final Class<?> primitiveCls = primitives.get(fullName);
-        if (primitiveCls != null) {
-            return primitiveCls;
-        }
-        try {
-            return Thread.currentThread().getContextClassLoader().loadClass(fullName);
-        } catch (final ClassNotFoundException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public static Class<?> forNameElseNull(final String fullName) {
-        if (fullName == null) {
-            return null;
-        }
-        try {
-            return Thread.currentThread().getContextClassLoader().loadClass(fullName);
-        } catch (final ClassNotFoundException e) {
-            return null;
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Classes.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Classes.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Classes.java
deleted file mode 100644
index 91763ca..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Classes.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-
-public final class Classes {
-
-    public static Matcher<?> isSubclassOf(final Class<?> superClass) {
-        return new BaseMatcher<Object>() {
-            @Override
-            public boolean matches(final Object item) {
-                final Class<?> cls = (Class<?>) item;
-                return superClass.isAssignableFrom(cls);
-            }
-
-            @Override
-            public void describeTo(final Description description) {
-                description.appendText("is subclass of " + superClass.getName());
-            }
-        };
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Generics.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Generics.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Generics.java
deleted file mode 100644
index 0c940ae..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Generics.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-public final class Generics {
-
-    private Generics() {
-    }
-
-    public static <T> T coalesce(final T... candidates) {
-        for (final T t : candidates) {
-            if (t != null) {
-                return t;
-            }
-        }
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/MementoFunctions.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/MementoFunctions.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/MementoFunctions.java
new file mode 100644
index 0000000..2358e0c
--- /dev/null
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/MementoFunctions.java
@@ -0,0 +1,110 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.model.util;
+
+import com.google.common.base.Function;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
+import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
+import org.apache.isis.viewer.wicket.model.mementos.CollectionMemento;
+import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
+import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
+
+public final class MementoFunctions {
+
+    private MementoFunctions() {
+    }
+
+    public static Function<ObjectSpecification, ObjectSpecId> fromSpec() {
+        return new Function<ObjectSpecification, ObjectSpecId>() {
+
+            @Override
+            public ObjectSpecId apply(final ObjectSpecification from) {
+                return from.getSpecId();
+            }
+        };
+    }
+
+    public static Function<OneToOneAssociation, PropertyMemento> fromProperty() {
+        return new Function<OneToOneAssociation, PropertyMemento>() {
+            @Override
+            public PropertyMemento apply(final OneToOneAssociation from) {
+                return new PropertyMemento(from);
+            }
+        };
+    }
+
+    public static Function<OneToManyAssociation, CollectionMemento> fromCollection() {
+        return new Function<OneToManyAssociation, CollectionMemento>() {
+            @Override
+            public CollectionMemento apply(final OneToManyAssociation from) {
+                return new CollectionMemento(from);
+            }
+        };
+    }
+
+    public static Function<ObjectAction, ActionMemento> fromAction() {
+        return new Function<ObjectAction, ActionMemento>() {
+            @Override
+            public ActionMemento apply(final ObjectAction from) {
+                return new ActionMemento(from);
+            }
+        };
+    }
+
+    public static Function<ObjectActionParameter, ActionParameterMemento> fromActionParameter() {
+        return new Function<ObjectActionParameter, ActionParameterMemento>() {
+            @Override
+            public ActionParameterMemento apply(final ObjectActionParameter from) {
+                return new ActionParameterMemento(from);
+            }
+        };
+    }
+
+    public static Function<Object, ObjectAdapterMemento> fromPojo(final AdapterManager adapterManager) {
+        return new Function<Object, ObjectAdapterMemento>() {
+            @Override
+            public ObjectAdapterMemento apply(final Object pojo) {
+                final ObjectAdapter adapter = adapterManager.adapterFor(pojo);
+                return ObjectAdapterMemento.createOrNull(adapter);
+            }
+        };
+    }
+
+    public static Function<ObjectAdapter, ObjectAdapterMemento> fromAdapter() {
+        return new Function<ObjectAdapter, ObjectAdapterMemento>() {
+            @Override
+            public ObjectAdapterMemento apply(final ObjectAdapter adapter) {
+                return ObjectAdapterMemento.createOrNull(adapter);
+            }
+        };
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Mementos.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Mementos.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Mementos.java
deleted file mode 100644
index 4f60c4f..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Mementos.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-import com.google.common.base.Function;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
-import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
-import org.apache.isis.viewer.wicket.model.mementos.CollectionMemento;
-import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
-
-public final class Mementos {
-
-    private Mementos() {
-    }
-
-    public static Function<ObjectSpecification, ObjectSpecId> fromSpec() {
-        return new Function<ObjectSpecification, ObjectSpecId>() {
-
-            @Override
-            public ObjectSpecId apply(final ObjectSpecification from) {
-                return from.getSpecId();
-            }
-        };
-    }
-
-    public static Function<OneToOneAssociation, PropertyMemento> fromProperty() {
-        return new Function<OneToOneAssociation, PropertyMemento>() {
-            @Override
-            public PropertyMemento apply(final OneToOneAssociation from) {
-                return new PropertyMemento(from);
-            }
-        };
-    }
-
-    public static Function<OneToManyAssociation, CollectionMemento> fromCollection() {
-        return new Function<OneToManyAssociation, CollectionMemento>() {
-            @Override
-            public CollectionMemento apply(final OneToManyAssociation from) {
-                return new CollectionMemento(from);
-            }
-        };
-    }
-
-    public static Function<ObjectAction, ActionMemento> fromAction() {
-        return new Function<ObjectAction, ActionMemento>() {
-            @Override
-            public ActionMemento apply(final ObjectAction from) {
-                return new ActionMemento(from);
-            }
-        };
-    }
-
-    public static Function<ObjectActionParameter, ActionParameterMemento> fromActionParameter() {
-        return new Function<ObjectActionParameter, ActionParameterMemento>() {
-            @Override
-            public ActionParameterMemento apply(final ObjectActionParameter from) {
-                return new ActionParameterMemento(from);
-            }
-        };
-    }
-
-    public static Function<Object, ObjectAdapterMemento> fromPojo() {
-        return new Function<Object, ObjectAdapterMemento>() {
-            @Override
-            public ObjectAdapterMemento apply(final Object pojo) {
-                final ObjectAdapter adapter = getAdapterManager().adapterFor(pojo);
-                return ObjectAdapterMemento.createOrNull(adapter);
-            }
-        };
-    }
-
-    public static Function<ObjectAdapter, ObjectAdapterMemento> fromAdapter() {
-        return new Function<ObjectAdapter, ObjectAdapterMemento>() {
-            @Override
-            public ObjectAdapterMemento apply(final ObjectAdapter adapter) {
-                return ObjectAdapterMemento.createOrNull(adapter);
-            }
-        };
-    }
-
-    private static AdapterManager getAdapterManager() {
-        return IsisContext.getPersistenceSession().getAdapterManager();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectActionParameters.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectActionParameters.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectActionParameters.java
deleted file mode 100644
index eb14171..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectActionParameters.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-
-public final class ObjectActionParameters {
-
-    private ObjectActionParameters() {
-    }
-
-    public static boolean compatibleWith(final ObjectAdapter contextAdapter, final ObjectActionParameter actionParam) {
-        return contextAdapter != null && contextAdapter.getSpecification().isOfType(actionParam.getSpecification());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java
new file mode 100644
index 0000000..f764faf
--- /dev/null
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java
@@ -0,0 +1,74 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.model.util;
+
+import com.google.common.base.Function;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
+
+public final class ObjectAdapterFunctions {
+
+    private ObjectAdapterFunctions() {
+    }
+
+    public static Function<Object, ObjectAdapter> fromPojo(final AdapterManager adapterManager) {
+        return new Function<Object, ObjectAdapter>() {
+            @Override
+            public ObjectAdapter apply(final Object pojo) {
+                return adapterManager.adapterFor(pojo);
+            }
+        };
+    }
+
+    public static Function<ObjectAdapterMemento, ObjectAdapter> fromMemento() {
+        return new Function<ObjectAdapterMemento, ObjectAdapter>() {
+            @Override
+            public ObjectAdapter apply(final ObjectAdapterMemento from) {
+                return from.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
+            }
+        };
+    }
+
+    public static Function<ObjectAdapter, ObjectAdapterMemento> toMemento() {
+        return new Function<ObjectAdapter, ObjectAdapterMemento>() {
+
+            @Override
+            public ObjectAdapterMemento apply(ObjectAdapter from) {
+                return ObjectAdapterMemento.createOrNull(from);
+            }
+            
+        };
+    }
+
+    private static AdapterManager getAdapterManager() {
+        return getPersistenceSession().getAdapterManager();
+    }
+
+    private static PersistenceSession getPersistenceSession() {
+        return IsisContext.getPersistenceSession();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapters.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapters.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapters.java
deleted file mode 100644
index 92238e7..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapters.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-import com.google.common.base.Function;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-
-public final class ObjectAdapters {
-
-    private ObjectAdapters() {
-    }
-
-    public static Function<Object, ObjectAdapter> fromPojo() {
-        return new Function<Object, ObjectAdapter>() {
-            @Override
-            public ObjectAdapter apply(final Object pojo) {
-                return getAdapterManager().adapterFor(pojo);
-            }
-        };
-    }
-
-    public static Function<ObjectAdapterMemento, ObjectAdapter> fromMemento() {
-        return new Function<ObjectAdapterMemento, ObjectAdapter>() {
-            @Override
-            public ObjectAdapter apply(final ObjectAdapterMemento from) {
-                return from.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
-            }
-        };
-    }
-
-    public static Function<ObjectAdapter, ObjectAdapterMemento> toMemento() {
-        return new Function<ObjectAdapter, ObjectAdapterMemento>() {
-
-            @Override
-            public ObjectAdapterMemento apply(ObjectAdapter from) {
-                return ObjectAdapterMemento.createOrNull(from);
-            }
-            
-        };
-    }
-
-    public static Function<Oid, ObjectAdapter> fromOid() {
-        return new Function<Oid, ObjectAdapter>() {
-            @Override
-            public ObjectAdapter apply(final Oid from) {
-                final ObjectAdapter adapterFor = getAdapterManager().getAdapterFor(from);
-                return adapterFor;
-            }
-        };
-    }
-
-    private static AdapterManager getAdapterManager() {
-        return getPersistenceSession().getAdapterManager();
-    }
-
-    private static PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/OidMatchers.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/OidMatchers.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/OidMatchers.java
new file mode 100644
index 0000000..ed77526
--- /dev/null
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/OidMatchers.java
@@ -0,0 +1,63 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.model.util;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
+
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
+
+public final class OidMatchers {
+
+    private OidMatchers() {
+    }
+
+    public static Matcher<Oid> isTransient() {
+        return new TypeSafeMatcher<Oid>() {
+
+            @Override
+            public boolean matchesSafely(final Oid item) {
+                return item.isTransient();
+            }
+
+            @Override
+            public void describeTo(final Description description) {
+                description.appendText("is transient");
+            }
+        };
+    }
+
+    public static Matcher<Oid> isPersistent() {
+        return new TypeSafeMatcher<Oid>() {
+
+            @Override
+            public boolean matchesSafely(final Oid item) {
+                return !item.isTransient();
+            }
+
+            @Override
+            public void describeTo(final Description description) {
+                description.appendText("is persistent");
+            }
+        };
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Oids.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Oids.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Oids.java
deleted file mode 100644
index 84cb5bd..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Oids.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.TypeSafeMatcher;
-
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-
-public final class Oids {
-
-    private Oids() {
-    }
-
-    public static Matcher<Oid> isTransient() {
-        return new TypeSafeMatcher<Oid>() {
-
-            @Override
-            public boolean matchesSafely(final Oid item) {
-                return item.isTransient();
-            }
-
-            @Override
-            public void describeTo(final Description description) {
-                description.appendText("is transient");
-            }
-        };
-    }
-
-    public static Matcher<Oid> isPersistent() {
-        return new TypeSafeMatcher<Oid>() {
-
-            @Override
-            public boolean matchesSafely(final Oid item) {
-                return !item.isTransient();
-            }
-
-            @Override
-            public void describeTo(final Description description) {
-                description.appendText("is persistent");
-            }
-        };
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Pojos.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Pojos.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Pojos.java
deleted file mode 100644
index 9b9eb97..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Pojos.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-import com.google.common.base.Function;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-public final class Pojos {
-
-    private Pojos() {
-    }
-
-    public static Function<Object, Oid> toOid() {
-        return new Function<Object, Oid>() {
-            @Override
-            public Oid apply(final Object pojo) {
-                final ObjectAdapter adapter = getAdapterManager().adapterFor(pojo);
-                return adapter.getOid();
-            }
-
-        };
-    }
-
-    public static Function<ObjectAdapter, Object> forAdapter() {
-        return new Function<ObjectAdapter, Object>() {
-
-            @Override
-            public Object apply(final ObjectAdapter from) {
-                return from.getObject();
-            }
-        };
-    }
-
-    private static AdapterManager getAdapterManager() {
-        return IsisContext.getPersistenceSession().getAdapterManager();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Strings.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Strings.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Strings.java
deleted file mode 100644
index 365818c..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/Strings.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.util;
-
-public final class Strings {
-
-    private Strings() {
-    }
-
-    public static String toCamelCase(final String name) {
-        final String nameLower = name.toLowerCase();
-        final StringBuilder buf = new StringBuilder();
-        boolean capitalizeNext = false;
-        for (int i = 0; i < nameLower.length(); i++) {
-            final char ch = nameLower.charAt(i);
-            if (ch == '_') {
-                capitalizeNext = true;
-            } else {
-                if (capitalizeNext) {
-                    buf.append(Character.toUpperCase(ch));
-                } else {
-                    buf.append(ch);
-                }
-                capitalizeNext = false;
-            }
-        }
-        return buf.toString();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java
index e90ed80..d06d2b8 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentType.java
@@ -21,7 +21,7 @@ package org.apache.isis.viewer.wicket.ui;
 
 import org.apache.wicket.Component;
 
-import org.apache.isis.viewer.wicket.model.util.Strings;
+import org.apache.isis.core.commons.lang.StringExtensions;
 
 /**
  * Enumerates the different types of {@link Component}s that can be constructed
@@ -157,7 +157,7 @@ public enum ComponentType {
     }
 
     public String getWicketId() {
-        return Strings.toCamelCase(name());
+        return StringExtensions.toCamelCase(name());
     }
 
     public static ComponentType lookup(final String id) {

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
index 0f16104..d78a290 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/about/JarManifestModel.java
@@ -35,7 +35,7 @@ import com.google.common.base.CharMatcher;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Lists;
 
-import org.apache.isis.core.commons.lang.IoUtils;
+import org.apache.isis.core.commons.lang.CloseableExtensions;
 import org.apache.isis.viewer.wicket.model.models.ModelAbstract;
 
 public class JarManifestModel extends ModelAbstract<JarManifestModel> {
@@ -70,7 +70,7 @@ public class JarManifestModel extends ModelAbstract<JarManifestModel> {
         } catch (Exception ex) {
             // ignore
         } finally {
-            IoUtils.closeSafely(metaInfManifestIs);
+            CloseableExtensions.closeSafely(metaInfManifestIs);
         }
         
         Enumeration<?> resEnum;
@@ -95,7 +95,7 @@ public class JarManifestModel extends ModelAbstract<JarManifestModel> {
             } catch(Exception e3) {
                 // ignore
             } finally {
-                IoUtils.closeSafely(is);
+                CloseableExtensions.closeSafely(is);
             }
         }
         

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
index b2aa843..6e23883 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
@@ -38,7 +38,7 @@ import org.apache.wicket.markup.repeater.RepeatingView;
 import org.apache.wicket.model.IModel;
 
 import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.commons.lang.CastUtils;
+import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -48,7 +48,7 @@ import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ActionExecutor;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.model.util.Mementos;
+import org.apache.isis.viewer.wicket.model.util.MementoFunctions;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarModelSubscriber;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
@@ -153,7 +153,7 @@ public class ActionParametersFormPanel extends PanelAbstract<ActionModel> {
 
 
         private List<ActionParameterMemento> buildParameterMementos(final List<ObjectActionParameter> parameters) {
-            final List<ActionParameterMemento> parameterMementoList = Lists.transform(parameters, Mementos.fromActionParameter());
+            final List<ActionParameterMemento> parameterMementoList = Lists.transform(parameters, MementoFunctions.fromActionParameter());
             // we copy into a new array list otherwise we get lazy evaluation =
             // reference to a non-serializable object
             return Lists.newArrayList(parameterMementoList);

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
index f726d9c..bdc28ae 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/additionallinks/AdditionalLinksPanel.java
@@ -28,7 +28,7 @@ import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 
-import org.apache.isis.core.commons.lang.StringUtils;
+import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.links.ListOfLinksModel;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
@@ -85,7 +85,7 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
                 if(cssClass != null) {
                     item.add(new CssClassAppender(cssClass));
                 }
-                viewTitleLabel.add(new CssClassAppender(StringUtils.toLowerDashed(linkAndLabel.getLabel())));
+                viewTitleLabel.add(new CssClassAppender(StringExtensions.asLowerDashed(linkAndLabel.getLabel())));
                 link.addOrReplace(viewTitleLabel);
                 item.addOrReplace(link);
             }

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
index 9593147..fc266c5 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
@@ -21,6 +21,8 @@ package org.apache.isis.viewer.wicket.ui.components.entity.header;
 
 import java.util.List;
 
+import com.google.common.base.Function;
+import com.google.common.base.Functions;
 import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
 import com.google.inject.Inject;
@@ -30,6 +32,8 @@ import org.apache.wicket.Component;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
 import org.apache.isis.applib.filter.Filters;
+import org.apache.isis.core.commons.lang.StringFunctions;
+import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.spec.ActionType;
@@ -140,8 +144,8 @@ public class EntityHeaderPanel extends PanelAbstract<EntityModel> implements Act
     private Filter<ObjectAction> memberOrderNameNotAssociation(final ObjectSpecification adapterSpec) {
 
         final List<ObjectAssociation> associations = adapterSpec.getAssociations(Contributed.INCLUDED);
-        final List<String> associationNames = Lists.transform(associations, ObjectAssociations.toName());
-        final List<String> associationIds = Lists.transform(associations, ObjectAssociations.toId());
+        final List<String> associationNames = Lists.transform(associations, Functions.compose(StringFunctions.toLowerCase(), ObjectAssociation.Functions.toName()));
+        final List<String> associationIds = Lists.transform(associations, Functions.compose(StringFunctions.toLowerCase(), ObjectAssociation.Functions.toId()));
 
         return new Filter<ObjectAction>() {
 
@@ -151,12 +155,12 @@ public class EntityHeaderPanel extends PanelAbstract<EntityModel> implements Act
                 if(memberOrderFacet == null || Strings.isNullOrEmpty(memberOrderFacet.name())) {
                     return true;
                 }
-                String memberOrderName = memberOrderFacet.name();
+                String memberOrderName = StringFunctions.toLowerCase().apply(memberOrderFacet.name());
                 return !associationNames.contains(memberOrderName) && !associationIds.contains(memberOrderName);
             }
         };
     }
-
+    
 
     protected Filter<ObjectAction> dynamicallyVisibleFor(final ObjectAdapter adapter) {
         return ObjectAction.Filters.dynamicallyVisible(getAuthenticationSession(), adapter, Where.ANYWHERE);

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index 7d1f233..9553548 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -52,7 +52,7 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.NamedWithMimeType;
-import org.apache.isis.core.commons.lang.IoUtils;
+import org.apache.isis.core.commons.lang.CloseableExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
@@ -157,7 +157,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
         } catch (IOException ex) {
             return null;
         } finally {
-            IoUtils.closeSafely(bais);
+            CloseableExtensions.closeSafely(bais);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.java
index fe0b0e8..b1a22b3 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuPanel.java
@@ -26,7 +26,7 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.repeater.RepeatingView;
 import org.apache.wicket.model.util.ListModel;
 
-import org.apache.isis.viewer.wicket.model.util.Strings;
+import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -57,7 +57,7 @@ public class CssMenuPanel extends PanelAbstract<CssMenuPanel.MyModel> {
         };
         @Override
         public String toString() {
-            return Strings.toCamelCase(name());
+            return StringExtensions.toCamelCase(name());
         }
 
         public String getAppendValue() {

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
index c5dd2cf..51dac92 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2Panel.java
@@ -48,7 +48,7 @@ import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel.RenderingHint;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModelWithPending.Util;
-import org.apache.isis.viewer.wicket.model.util.Mementos;
+import org.apache.isis.viewer.wicket.model.util.MementoFunctions;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.actions.ActionInvokeHandler;
@@ -224,7 +224,7 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
                 final ObjectSpecification typeOfSpecification = entityModel.getTypeOfSpecification();
                 final AutoCompleteFacet autoCompleteFacet = typeOfSpecification.getFacet(AutoCompleteFacet.class);
                 final List<ObjectAdapter> results = autoCompleteFacet.execute(term);
-                return Lists.transform(results, Mementos.fromAdapter());
+                return Lists.transform(results, MementoFunctions.fromAdapter());
             }
 
         };
@@ -248,7 +248,7 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
                     return Collections.emptyList();
                 }
                 // take a copy otherwise is only lazily evaluated
-                return Lists.newArrayList(Lists.transform(autoCompleteChoices, Mementos.fromAdapter()));
+                return Lists.newArrayList(Lists.transform(autoCompleteChoices, MementoFunctions.fromAdapter()));
             }
             
         };
@@ -266,7 +266,7 @@ public class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAda
             return Collections.emptyList();
         }
         // take a copy otherwise is only lazily evaluated
-        return Lists.newArrayList(Lists.transform(choices, Mementos.fromAdapter()));
+        return Lists.newArrayList(Lists.transform(choices, MementoFunctions.fromAdapter()));
     }
 
     private void syncLinkWithInput(final ObjectAdapter adapter) {

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
index c161e23..c4d2720 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
@@ -52,7 +52,7 @@ import org.apache.isis.viewer.wicket.model.models.EntityModel.RenderingHint;
 import org.apache.isis.viewer.wicket.model.models.ScalarModelWithPending.Util;
 import org.apache.isis.viewer.wicket.model.models.ModelAbstract;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.model.util.Mementos;
+import org.apache.isis.viewer.wicket.model.util.MementoFunctions;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.actions.ActionInvokeHandler;

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
index 693b607..8a6b8ce 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
@@ -43,7 +43,7 @@ import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ModelAbstract;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModelWithPending;
-import org.apache.isis.viewer.wicket.model.util.Mementos;
+import org.apache.isis.viewer.wicket.model.util.MementoFunctions;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.components.widgets.ObjectAdapterMementoProviderAbstract;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -93,7 +93,7 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
         final List<ObjectAdapter> choices = scalarModel.getChoices(argumentsIfAvailable);
         
         // take a copy otherwise is only lazily evaluated
-        return Lists.newArrayList(Lists.transform(choices, Mementos.fromAdapter()));
+        return Lists.newArrayList(Lists.transform(choices, MementoFunctions.fromAdapter()));
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java
index 2c1505a..21ec7c8 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.viewer.wicket.ui.errors;
 
+import com.google.common.base.Strings;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -26,7 +28,7 @@ import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 
 import org.apache.isis.applib.ApplicationException;
 import org.apache.isis.core.commons.authentication.MessageBroker;
-import org.apache.isis.core.commons.lang.StringUtils;
+import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
 
@@ -49,7 +51,7 @@ public class JGrowlBehaviour extends AbstractDefaultAjaxBehavior {
     @Override
     protected void respond(AjaxRequestTarget target) {
         String feedbackMsg = JGrowlUtil.asJGrowlCalls(IsisContext.getMessageBroker());
-        if(!StringUtils.isNullOrEmpty(feedbackMsg)) {
+        if(!Strings.isNullOrEmpty(feedbackMsg)) {
             target.appendJavaScript(feedbackMsg);
         }
     }
@@ -58,7 +60,7 @@ public class JGrowlBehaviour extends AbstractDefaultAjaxBehavior {
     public void renderHead(Component component, IHeaderResponse response) {
         super.renderHead(component, response);
         String feedbackMsg = JGrowlUtil.asJGrowlCalls(IsisContext.getMessageBroker());
-        if(!StringUtils.isNullOrEmpty(feedbackMsg)) {
+        if(!Strings.isNullOrEmpty(feedbackMsg)) {
             response.render(OnDomReadyHeaderItem.forScript(feedbackMsg));
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
index 4c9d8ea..0356de0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
@@ -41,7 +41,7 @@ import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
-import org.apache.isis.core.commons.lang.StringUtils;
+import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.links.LinksProvider;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -213,7 +213,7 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
                     };
                     String name = nameFor(componentFactory);
                     Label viewTitleLabel = new Label(ID_VIEW_TITLE, name);
-                    viewTitleLabel.add(new CssClassAppender(StringUtils.toLowerDashed(name)));
+                    viewTitleLabel.add(new CssClassAppender(StringExtensions.asLowerDashed(name)));
                     link.add(viewTitleLabel);
                     item.add(link);
                     

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/CglibClassSubstitutor.java
----------------------------------------------------------------------
diff --git a/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/CglibClassSubstitutor.java b/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/CglibClassSubstitutor.java
index 5392754..681eb79 100644
--- a/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/CglibClassSubstitutor.java
+++ b/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/CglibClassSubstitutor.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.bytecode.cglib;
 
-import org.apache.isis.core.commons.lang.JavaClassUtils;
+import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.CglibEnhanced;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutorAbstract;
 
@@ -35,7 +35,7 @@ public class CglibClassSubstitutor extends ClassSubstitutorAbstract {
      */
     @Override
     public Class<?> getClass(final Class<?> cls) {
-        if (JavaClassUtils.directlyImplements(cls, CglibEnhanced.class)) {
+        if (ClassUtil.directlyImplements(cls, CglibEnhanced.class)) {
             return getClass(cls.getSuperclass());
         }
         return super.getClass(cls);

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java
----------------------------------------------------------------------
diff --git a/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java b/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java
index 672d322..64ce728 100644
--- a/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java
+++ b/core/bytecode-cglib/src/main/java/org/apache/isis/core/bytecode/cglib/ObjectResolveAndObjectChangedEnhancer.java
@@ -28,7 +28,7 @@ import net.sf.cglib.proxy.Enhancer;
 import net.sf.cglib.proxy.MethodInterceptor;
 import net.sf.cglib.proxy.MethodProxy;
 
-import org.apache.isis.core.commons.lang.ArrayUtil;
+import org.apache.isis.core.commons.lang.ArrayExtensions;
 import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils.ImperativeFacetFlags;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
@@ -98,7 +98,7 @@ public class ObjectResolveAndObjectChangedEnhancer extends ObjectResolveAndObjec
         if (enhancer == null) {
             enhancer = new Enhancer();
             enhancer.setSuperclass(cls);
-            enhancer.setInterfaces(ArrayUtil.combine(cls.getInterfaces(), new Class<?>[] { CglibEnhanced.class }));
+            enhancer.setInterfaces(ArrayExtensions.combine(cls.getInterfaces(), new Class<?>[] { CglibEnhanced.class }));
             enhancer.setCallback(callback);
             enhancerByClass.put(cls, enhancer);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/JavassistClassSubstitutor.java
----------------------------------------------------------------------
diff --git a/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/JavassistClassSubstitutor.java b/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/JavassistClassSubstitutor.java
index 013a7aa..aecb166 100644
--- a/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/JavassistClassSubstitutor.java
+++ b/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/JavassistClassSubstitutor.java
@@ -19,7 +19,7 @@
 
 package org.apache.isis.core.bytecode.javassist;
 
-import org.apache.isis.core.commons.lang.JavaClassUtils;
+import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.metamodel.specloader.classsubstitutor.ClassSubstitutorAbstract;
 
 public class JavassistClassSubstitutor extends ClassSubstitutorAbstract {
@@ -36,7 +36,7 @@ public class JavassistClassSubstitutor extends ClassSubstitutorAbstract {
      */
     @Override
     public Class<?> getClass(final Class<?> cls) {
-        if (JavaClassUtils.directlyImplements(cls, JavassistEnhanced.class)) {
+        if (ClassUtil.directlyImplements(cls, JavassistEnhanced.class)) {
             return getClass(cls.getSuperclass());
         }
         return super.getClass(cls);

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java
----------------------------------------------------------------------
diff --git a/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java b/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java
index 2b11eae..df4ded0 100644
--- a/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java
+++ b/core/bytecode-javassist/src/main/java/org/apache/isis/core/bytecode/javassist/ObjectResolveAndObjectChangedEnhancer.java
@@ -27,7 +27,7 @@ import javassist.util.proxy.ProxyFactory;
 import javassist.util.proxy.ProxyObject;
 
 import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.commons.lang.ArrayUtil;
+import org.apache.isis.core.commons.lang.ArrayExtensions;
 import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils.ImperativeFacetFlags;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
@@ -86,7 +86,7 @@ public class ObjectResolveAndObjectChangedEnhancer extends ObjectResolveAndObjec
 
         final ProxyFactory proxyFactory = new ProxyFactory();
         proxyFactory.setSuperclass(cls);
-        proxyFactory.setInterfaces(ArrayUtil.combine(cls.getInterfaces(), new Class<?>[] { JavassistEnhanced.class }));
+        proxyFactory.setInterfaces(ArrayExtensions.combine(cls.getInterfaces(), new Class<?>[] { JavassistEnhanced.class }));
 
         proxyFactory.setFilter(new MethodFilter() {
             @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/AuthenticationSessionAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/AuthenticationSessionAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/AuthenticationSessionAbstract.java
index 736f7e9..ff554f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/AuthenticationSessionAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/authentication/AuthenticationSessionAbstract.java
@@ -30,7 +30,7 @@ import java.util.Map;
 
 import org.apache.isis.core.commons.encoding.DataInputExtended;
 import org.apache.isis.core.commons.encoding.DataOutputExtended;
-import org.apache.isis.core.commons.lang.ToString;
+import org.apache.isis.core.commons.util.ToString;
 
 public abstract class AuthenticationSessionAbstract implements AuthenticationSession, Serializable {
 

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/metamodel/src/main/java/org/apache/isis/core/commons/config/PropertiesReader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/PropertiesReader.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/PropertiesReader.java
index fa8465e..7e5f09d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/config/PropertiesReader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/config/PropertiesReader.java
@@ -23,7 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
 
-import org.apache.isis.core.commons.lang.IoUtils;
+import org.apache.isis.core.commons.lang.CloseableExtensions;
 import org.apache.isis.core.commons.resource.ResourceStreamSource;
 
 /**
@@ -43,7 +43,7 @@ class PropertiesReader {
             }
             properties.load(in);
         } finally {
-            IoUtils.closeSafely(in);
+            CloseableExtensions.closeSafely(in);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
index 54484e5..178a09a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/factory/InstanceUtil.java
@@ -20,7 +20,7 @@
 package org.apache.isis.core.commons.factory;
 
 import org.apache.isis.core.commons.ensure.Assert;
-import org.apache.isis.core.commons.lang.CastUtils;
+import org.apache.isis.core.commons.lang.ObjectExtensions;
 
 public final class InstanceUtil {
 
@@ -47,7 +47,7 @@ public final class InstanceUtil {
         Class<? extends T> defaultType = null;
         if (defaultTypeName != null) {
             try {
-                defaultType = CastUtils.cast(Thread.currentThread().getContextClassLoader().loadClass(defaultTypeName));
+                defaultType = ObjectExtensions.asT(Thread.currentThread().getContextClassLoader().loadClass(defaultTypeName));
                 if (defaultType == null) {
                     throw new InstanceCreationClassException("Failed to load default type '" + defaultTypeName + "'");
                 }
@@ -65,7 +65,7 @@ public final class InstanceUtil {
         if (defaultTypeName != null) {
             defaultType = loadClass(defaultTypeName, requiredType);
             try {
-                defaultType = CastUtils.cast(Thread.currentThread().getContextClassLoader().loadClass(defaultTypeName));
+                defaultType = ObjectExtensions.asT(Thread.currentThread().getContextClassLoader().loadClass(defaultTypeName));
                 if (defaultType == null) {
                     throw new InstanceCreationClassException("Failed to load default type '" + defaultTypeName + "'");
                 }
@@ -101,7 +101,7 @@ public final class InstanceUtil {
         Assert.assertNotNull("Class to instantiate must be specified", cls);
         try {
             if (requiredType == null || requiredType.isAssignableFrom(cls)) {
-                final Class<T> tClass = CastUtils.cast(cls);
+                final Class<T> tClass = ObjectExtensions.asT(cls);
                 return tClass.newInstance();
             } else {
                 throw new InstanceCreationClassException("Class '" + cls.getName() + "' is not of type '" + requiredType + "'");
@@ -133,7 +133,7 @@ public final class InstanceUtil {
             if (requiredType != null && !requiredType.isAssignableFrom(loadedClass)) {
                 throw new InstanceCreationClassException("Class '" + className + "' is not of type '" + requiredType + "'");
             }
-            return CastUtils.cast(loadedClass);
+            return ObjectExtensions.asT(loadedClass);
         } catch (final NoClassDefFoundError e) {
             throw new InstanceCreationClassException("Default type '" + className + "' found, but is missing a dependent class: " + e.getMessage(), e);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ArrayExtensions.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ArrayExtensions.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ArrayExtensions.java
new file mode 100644
index 0000000..25a6f88
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ArrayExtensions.java
@@ -0,0 +1,161 @@
+/*
+ *  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.lang;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.isis.core.commons.exceptions.IsisException;
+
+public final class ArrayExtensions {
+
+    private ArrayExtensions() {
+    }
+
+    static Object[] convertPrimitiveToObjectArray(final Object extendee, final Class<?> arrayType) {
+        Object[] convertedArray;
+        try {
+            final Class<?> wrapperClass = ClassExtensions.asWrapped(arrayType);
+            final Constructor<?> constructor = wrapperClass.getConstructor(new Class[] { String.class });
+            final int len = Array.getLength(extendee);
+            convertedArray = (Object[]) Array.newInstance(wrapperClass, len);
+            for (int i = 0; i < len; i++) {
+                convertedArray[i] = constructor.newInstance(new Object[] { Array.get(extendee, i).toString() });
+            }
+        } catch (final NoSuchMethodException e) {
+            throw new IsisException(e);
+        } catch (final ArrayIndexOutOfBoundsException e) {
+            throw new IsisException(e);
+        } catch (final IllegalArgumentException e) {
+            throw new IsisException(e);
+        } catch (final InstantiationException e) {
+            throw new IsisException(e);
+        } catch (final IllegalAccessException e) {
+            throw new IsisException(e);
+        } catch (final InvocationTargetException e) {
+            throw new IsisException(e);
+        }
+        return convertedArray;
+    }
+
+    public static Object[] asCharToCharacterArray(final Object extendee) {
+        final char[] original = (char[]) extendee;
+        final int len = original.length;
+        final Character[] converted = new Character[len];
+        for (int i = 0; i < converted.length; i++) {
+            converted[i] = Character.valueOf(original[i]);
+        }
+        return converted;
+    }
+
+    public static <T> T[] combine(final T[]... arrays) {
+        final List<T> combinedList = new ArrayList<T>();
+        for (final T[] array : arrays) {
+            for (final T t : array) {
+                combinedList.add(t);
+            }
+        }
+        return combinedList.toArray(arrays[0]); // using 1st element of arrays
+                                                // to specify the type
+    }
+
+    public static String[] append(final String[] extendee, final String... moreArgs) {
+        final ArrayList<String> argList = new ArrayList<String>();
+        argList.addAll(Arrays.asList(extendee));
+        argList.addAll(Arrays.asList(moreArgs));
+        return argList.toArray(new String[] {});
+    }
+
+    public static List<String> mergeToList(final String[] extendee, final String[] array2) {
+        final List<String> prefixes = new ArrayList<String>();
+        ArrayExtensions.addNoDuplicates(extendee, prefixes);
+        ArrayExtensions.addNoDuplicates(array2, prefixes);
+        return prefixes;
+    }
+
+    static void addNoDuplicates(final String[] array, final List<String> list) {
+        for (int i = 0; i < array.length; i++) {
+            if (!list.contains(array[i])) {
+                list.add(array[i]);
+            }
+        }
+    }
+
+    public static List<Object> asListFlattened(final Object[] objectArray) {
+        final List<Object> list = new ArrayList<Object>();
+        for (final Object element : objectArray) {
+            if (Collection.class.isAssignableFrom(element.getClass())) {
+                @SuppressWarnings("rawtypes")
+                final Collection collection = (Collection) element;
+                list.addAll(asListFlattened(collection.toArray()));
+            } else {
+                list.add(element);
+            }
+        }
+        return list;
+    }
+
+    public static <T> T coalesce(final T... strings) {
+        for (final T str : strings) {
+            if (str != null) {
+                return str;
+            }
+        }
+        return null;
+    }
+
+    public static String commaSeparatedClassNames(final List<Object> objects) {
+        final StringBuilder buf = new StringBuilder();
+        int i = 0;
+        for (final Object object : objects) {
+            if (i++ > 0) {
+                buf.append(',');
+            }
+            buf.append(object.getClass().getName());
+        }
+        return buf.toString();
+    }
+
+    public static String asSemicolonDelimitedStr(final List<String> list) {
+        final StringBuffer buf = new StringBuffer();
+        for (final String message : list) {
+            if (list.size() > 1) {
+                buf.append("; ");
+            }
+            buf.append(message);
+        }
+        return buf.toString();
+    }
+
+    public static List<Class<?>> toClasses(final List<Object> objectList) {
+        final List<Class<?>> classList = new ArrayList<Class<?>>();
+        for (final Object service : objectList) {
+            classList.add(service.getClass());
+        }
+        return classList;
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ArrayUtil.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ArrayUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ArrayUtil.java
deleted file mode 100644
index 3ff1662..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/ArrayUtil.java
+++ /dev/null
@@ -1,102 +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.commons.lang;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.isis.core.commons.exceptions.IsisException;
-
-public final class ArrayUtil {
-
-    private ArrayUtil() {
-    }
-
-    public static Object[] getObjectAsObjectArray(final Object option) {
-        final Class<?> arrayType = option.getClass().getComponentType();
-        if (!arrayType.isPrimitive()) {
-            return (Object[]) option;
-        }
-        if (arrayType == char.class) {
-            return ArrayUtil.convertCharToCharacterArray(option);
-        } else {
-            return convertPrimitiveToObjectArray(arrayType, option);
-        }
-    }
-
-    private static Object[] convertPrimitiveToObjectArray(final Class<?> arrayType, final Object originalArray) {
-        Object[] convertedArray;
-        try {
-            final Class<?> wrapperClass = WrapperUtils.wrap(arrayType);
-            final Constructor<?> constructor = wrapperClass.getConstructor(new Class[] { String.class });
-            final int len = Array.getLength(originalArray);
-            convertedArray = (Object[]) Array.newInstance(wrapperClass, len);
-            for (int i = 0; i < len; i++) {
-                convertedArray[i] = constructor.newInstance(new Object[] { Array.get(originalArray, i).toString() });
-            }
-        } catch (final NoSuchMethodException e) {
-            throw new IsisException(e);
-        } catch (final ArrayIndexOutOfBoundsException e) {
-            throw new IsisException(e);
-        } catch (final IllegalArgumentException e) {
-            throw new IsisException(e);
-        } catch (final InstantiationException e) {
-            throw new IsisException(e);
-        } catch (final IllegalAccessException e) {
-            throw new IsisException(e);
-        } catch (final InvocationTargetException e) {
-            throw new IsisException(e);
-        }
-        return convertedArray;
-    }
-
-    public static Object[] convertCharToCharacterArray(final Object originalArray) {
-        final char[] original = (char[]) originalArray;
-        final int len = original.length;
-        final Character[] converted = new Character[len];
-        for (int i = 0; i < converted.length; i++) {
-            converted[i] = Character.valueOf(original[i]);
-        }
-        return converted;
-    }
-
-    public static <T> T[] combine(final T[]... arrays) {
-        final List<T> combinedList = new ArrayList<T>();
-        for (final T[] array : arrays) {
-            for (final T t : array) {
-                combinedList.add(t);
-            }
-        }
-        return combinedList.toArray(arrays[0]); // using 1st element of arrays
-                                                // to specify the type
-    }
-
-    public static String[] append(final String[] args, final String... moreArgs) {
-        final ArrayList<String> argList = new ArrayList<String>();
-        argList.addAll(Arrays.asList(args));
-        argList.addAll(Arrays.asList(moreArgs));
-        return argList.toArray(new String[] {});
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/91df9978/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/CastUtils.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/CastUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/CastUtils.java
deleted file mode 100644
index 0ea6996..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/CastUtils.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.commons.lang;
-
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.Vector;
-
-/**
- * Helpers to co-erce existing (Java 1.1 code) into type-safe generics without
- * having to suppress compiler warnings all over the place.
- * 
- */
-public final class CastUtils {
-
-    private CastUtils() {
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> T cast(final Object obj) {
-        return (T) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> Enumeration<T> enumerationOver(final Object obj, final Class<T> castTo) {
-        return (Enumeration<T>) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> Iterator<T> iteratorOver(final Object obj, final Class<T> castTo) {
-        return (Iterator<T>) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> Collection<T> collectionOf(final Object obj, final Class<T> castTo) {
-        return (Collection<T>) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> List<T> listOf(final Object obj, final Class<T> castTo) {
-        return (List<T>) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> Vector<T> vectorOf(final Object obj, final Class<T> castTo) {
-        return (Vector<T>) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> Set<T> setOf(final Object obj, final Class<T> castTo) {
-        return (Set<T>) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> SortedSet<T> sortedSetOf(final Object obj, final Class<T> castTo) {
-        return (SortedSet<T>) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <K, V> Map<K, V> mapOf(final Object obj, final Class<K> keyCastTo, final Class<V> valueCastTo) {
-        return (Map<K, V>) obj;
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <K, V> SortedMap<K, V> sortedMapOf(final Object obj, final Class<K> keyCastTo, final Class<V> valueCastTo) {
-        return (SortedMap<K, V>) obj;
-    }
-
-}