This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 22732dbd1c67b025665862047f3e342517d06321
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Fri Apr 13 12:21:19 2018 +0200

    ISIS-1742 moving deprecated MementoService to -legacy
    
    Introduces _Mementos for Internal API.
---
 .../applib/services/memento/MementoService.java    |   3 +-
 .../isis/applib/services/memento/package-info.java |   0
 ...aseEncodingWithSupportForLargeUrlsAbstract.java |   8 +-
 .../isis/applib/fixturescripts/FixtureScripts.java |  24 +++--
 .../apache/isis/applib/internal/base/_Casts.java   |  26 ++++-
 .../isis/applib/internal/memento/_Mementos.java    |  85 +++++++++++++++
 .../internal/memento/_Mementos_MementoDefault.java | 107 +++++++++++++++++++
 .../_Casts.java => memento/package-info.java}      |  27 ++---
 .../services/urlencoding/UrlEncodingService.java   |  17 ++-
 .../UrlEncodingServiceUsingBaseEncoding.java       |  13 ++-
 .../UrlEncodingServiceWithCompressionAbstract.java |  23 +++-
 .../isis/applib/internal/memento/MementosTest.java | 117 +++++++++++++++++++++
 .../urlencoding/UrlEncodingServiceTest.java        |  48 +++++++++
 ...codingServiceWithCompression_Abstract_Test.java |  35 ------
 ...ObjectFacetDeclarativeInitializingAbstract.java |  77 +++++++++-----
 ...ableObjectFacetForXmlRootElementAnnotation.java |   4 +-
 .../command/CommandDtoServiceInternal.java         |   1 -
 .../core/runtime/services/memento/Dom4jUtil.java   |   0
 .../services/memento/MementoServiceDefault.java    |  22 ++--
 .../memento/MementoServiceDefaultTest.java         |   0
 .../command/CommandDtoServiceInternalDefault.java  |  54 +++++-----
 21 files changed, 538 insertions(+), 153 deletions(-)

diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/services/memento/MementoService.java
 
b/core/applib-legacy/src/main/java/org/apache/isis/applib/services/memento/MementoService.java
similarity index 97%
rename from 
core/applib/src/main/java/org/apache/isis/applib/services/memento/MementoService.java
rename to 
core/applib-legacy/src/main/java/org/apache/isis/applib/services/memento/MementoService.java
index aa604cf..76de626 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/services/memento/MementoService.java
+++ 
b/core/applib-legacy/src/main/java/org/apache/isis/applib/services/memento/MementoService.java
@@ -33,7 +33,8 @@ import org.apache.isis.applib.services.jaxb.JaxbService;
  * registered and available for use; no configuration is required.
  * </p>
  *
- * @deprecated - for view models, use JAXB annotations and the {@link 
JaxbService}; for action invocations and such like, use {@link 
InteractionContext} and {@link CommandContext}.
+ * @deprecated - for view models, use JAXB annotations and the {@link 
JaxbService}; 
+ * for action invocations and such like, use {@link InteractionContext} and 
{@link CommandContext}.
  */
 @Deprecated
 public interface MementoService {
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/services/memento/package-info.java
 
b/core/applib-legacy/src/main/java/org/apache/isis/applib/services/memento/package-info.java
similarity index 100%
rename from 
core/applib/src/main/java/org/apache/isis/applib/services/memento/package-info.java
rename to 
core/applib-legacy/src/main/java/org/apache/isis/applib/services/memento/package-info.java
diff --git 
a/core/applib-legacy/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingWithSupportForLargeUrlsAbstract.java
 
b/core/applib-legacy/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingWithSupportForLargeUrlsAbstract.java
index 739ec60..e8e4aa1 100644
--- 
a/core/applib-legacy/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingWithSupportForLargeUrlsAbstract.java
+++ 
b/core/applib-legacy/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingWithSupportForLargeUrlsAbstract.java
@@ -31,9 +31,9 @@ public abstract class 
UrlEncodingServiceUsingBaseEncodingWithSupportForLargeUrls
             Maps.synchronizedBiMap(HashBiMap.<String, 
String>create(EXPECTED_SIZE));
 
     @Override
-    public String encode(final String value) {
+    public String encodeString(final String value) {
         if(!canCache(value)) {
-            return super.encode(value);
+            return super.encodeString(value);
         }
 
         synchronized (cachedValueByKey) {
@@ -47,9 +47,9 @@ public abstract class 
UrlEncodingServiceUsingBaseEncodingWithSupportForLargeUrls
     }
 
     @Override
-    public String decode(final String key) {
+    public String decodeToString(final String key) {
         if(key == null || !key.startsWith(KEY_PREFIX)) {
-            return super.decode(key);
+            return super.decodeToString(key);
         }
         String keySuffix = key.substring(KEY_PREFIX.length());
         return cachedValueByKey.get(keySuffix);
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
 
b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
index 1b8549c..4593ec9 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
@@ -28,6 +28,7 @@ import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import javax.annotation.PostConstruct;
+import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.isis.applib.AbstractService;
 import org.apache.isis.applib.DomainObjectContainer;
@@ -47,8 +48,7 @@ import 
org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.classdiscovery.ClassDiscoveryService;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault;
 import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecification;
-import org.apache.isis.applib.services.memento.MementoService;
-import org.apache.isis.applib.services.memento.MementoService.Memento;
+import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
@@ -413,15 +413,21 @@ public abstract class FixtureScripts extends 
AbstractService {
 
     // -- memento support for FixtureScript
 
+    @XmlRootElement(name = "fixtureScript")
+    public static class FixtureScriptMemento {
+       private String path;
+               public String getPath() { return path; }
+               public void setPath(String path) { this.path = path; }
+    }
 
     String mementoFor(final FixtureScript fs) {
-        return mementoService.create()
-                .set("path", fs.getParentPath())
-                .asString();
+       final FixtureScriptMemento memento = new FixtureScriptMemento();
+       memento.setPath(fs.getParentPath());
+       return jaxbService.toXml(memento);
     }
-    void initOf(final String mementoStr, final FixtureScript fs) {
-        final Memento memento = mementoService.parse(mementoStr);
-        fs.setParentPath(memento.get("path", String.class));
+    void initOf(final String xml, final FixtureScript fs) {
+       final FixtureScriptMemento memento = 
jaxbService.fromXml(FixtureScriptMemento.class, xml);
+        fs.setParentPath(memento.getPath());
     }
 
     // -- helpers (package level)
@@ -467,7 +473,7 @@ public abstract class FixtureScripts extends 
AbstractService {
     TitleService titleService;
 
     @javax.inject.Inject
-    MementoService mementoService;
+    JaxbService jaxbService;
 
     @javax.inject.Inject
     BookmarkService bookmarkService;
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Casts.java 
b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Casts.java
index 30713a9..d201ff6 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Casts.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Casts.java
@@ -19,6 +19,11 @@
 
 package org.apache.isis.applib.internal.base;
 
+import java.util.Objects;
+import java.util.function.Supplier;
+
+import javax.annotation.Nullable;
+
 /**
  * <h1>- internal use only -</h1>
  * <p>
@@ -36,8 +41,27 @@ public final class _Casts {
        private _Casts(){}
        
        @SuppressWarnings("unchecked")
-       public static <T> T uncheckedCast(Object obj) {
+       public static <T> T uncheckedCast(@Nullable Object obj) {
                return (T) obj;
        }
+
+       /**
+        * Returns the casts of {@code value} to {@code cls}, or if this fails 
returns the result of {@code orElse}
+        * @param value
+        * @param cls
+        * @param orElse
+        * @return
+        */
+       public static <T> T castToOrElse(@Nullable Object value, Class<T> cls, 
Supplier<T> orElse) {
+               Objects.requireNonNull(cls);
+               Objects.requireNonNull(orElse);
+
+               try {
+                       return cls.cast(value);
+               } catch (Exception e) {
+                       return orElse.get();    
+               }
+               
+       }
        
 }
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos.java
 
b/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos.java
new file mode 100644
index 0000000..291df6f
--- /dev/null
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos.java
@@ -0,0 +1,85 @@
+/*
+ *  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.applib.internal.memento;
+
+import java.util.Set;
+
+import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
+
+/**
+ * <h1>- internal use only -</h1>
+ * <p>
+ * Provides framework internal memento support.
+ * </p>
+ * <p>
+ * <b>WARNING</b>: Do <b>NOT</b> use any of the classes provided by this 
package! <br/> 
+ * These may be changed or removed without notice!
+ * </p>
+ * 
+ * @since 2.0.0
+ */
+public final class _Mementos {
+
+       private _Mementos(){}
+       
+       // -- MEMENTO INTERFACE
+       
+    public static interface Memento {
+
+        public Memento set(String name, Object value);
+
+        public <T> T get(String name, Class<T> cls);
+
+        /**
+         * @return To-String serialization of this Memento. 
+         */
+        public String asString();
+        
+        public Set<String> keySet();
+    }
+    
+    // -- CONSTRUCTION
+    
+    /**
+     * Creates an empty {@link Memento}.
+     * 
+     * <p>
+     * Typically followed by {@link Memento#set(String, Object)} for each of 
the data values to
+     * add to the {@link Memento}, then {@link Memento#asString()} to convert 
to a string format.
+     *
+     */
+    public static Memento create(UrlEncodingService codec) {
+       return new _Mementos_MementoDefault(codec);
+    }
+
+    /**
+     * Parse string returned from {@link Memento#asString()}
+     * 
+     * <p>
+     * Typically followed by {@link Memento#get(String, Class)} for each of 
the data values held
+     * in the {@link Memento}. 
+     *
+     */
+    public static Memento parse(UrlEncodingService codec, final String str) {
+               return _Mementos_MementoDefault.parse(codec, str);
+       
+    }
+       
+}
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos_MementoDefault.java
 
b/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos_MementoDefault.java
new file mode 100644
index 0000000..d69e5f2
--- /dev/null
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/memento/_Mementos_MementoDefault.java
@@ -0,0 +1,107 @@
+/*
+ *  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.applib.internal.memento;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+import javax.annotation.Nullable;
+
+import org.apache.isis.applib.internal.base._Casts;
+import org.apache.isis.applib.internal.base._NullSafe;
+import org.apache.isis.applib.internal.collections._Maps;
+import org.apache.isis.applib.internal.collections._Sets;
+import org.apache.isis.applib.internal.memento._Mementos.Memento;
+import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
+
+/**
+ * 
+ * package private mixin for utility class {@link _Mementos}
+ * 
+ * Memento default implementation.
+ *
+ */
+class _Mementos_MementoDefault implements _Mementos.Memento {
+       
+       private final UrlEncodingService codec;
+       private final Map<String, Object> valuesByKey;
+       
+       _Mementos_MementoDefault(UrlEncodingService codec) {
+               this(codec, _Maps.newHashMap());
+       }
+       
+       private _Mementos_MementoDefault(UrlEncodingService codec, Map<String, 
Object> valuesByKey) {
+               Objects.requireNonNull(codec);
+               this.codec = codec;
+               this.valuesByKey = valuesByKey;
+       }
+
+       @Override
+       public Memento set(String name, Object value) {
+               valuesByKey.put(name, value);
+               return this;
+       }
+
+       @Override
+       public <T> T get(String name, Class<T> cls) {
+               final Object value = valuesByKey.get(name);
+               return _Casts.castToOrElse(value, cls, ()->null);               
+       }
+
+       @Override
+       public Set<String> keySet() {
+               return _Sets.unmodifiable(valuesByKey.keySet());
+       }
+       
+       @Override
+       public String asString() {
+               
+               final ByteArrayOutputStream os = new 
ByteArrayOutputStream(16*1024); // 16k initial size
+               
+               try(ObjectOutputStream oos = new ObjectOutputStream(os)){
+                       oos.writeObject(valuesByKey);
+               } catch (Exception e) {
+                       throw new IllegalArgumentException("failed to serialize 
memento", e);
+               }
+
+               return codec.encode(os.toByteArray());
+       }
+
+       // -- PARSER
+       
+       static Memento parse(UrlEncodingService codec, @Nullable String str) {
+               Objects.requireNonNull(codec);
+               if(_NullSafe.isEmpty(str)) {
+                       return null;
+               }
+               try(ObjectInputStream ois = new ObjectInputStream(new 
ByteArrayInputStream(codec.decode(str)))) {
+                       final Map<String, Object> valuesByKey = 
_Casts.uncheckedCast(ois.readObject());
+                       return new _Mementos_MementoDefault(codec, valuesByKey);
+               } catch (Exception e) {
+                       throw new IllegalArgumentException("failed to parse 
memento from serialized string", e);
+               } 
+       }
+               
+}
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Casts.java 
b/core/applib/src/main/java/org/apache/isis/applib/internal/memento/package-info.java
similarity index 70%
copy from 
core/applib/src/main/java/org/apache/isis/applib/internal/base/_Casts.java
copy to 
core/applib/src/main/java/org/apache/isis/applib/internal/memento/package-info.java
index 30713a9..098b24b 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/_Casts.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/internal/memento/package-info.java
@@ -16,28 +16,13 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-
-package org.apache.isis.applib.internal.base;
-
 /**
- * <h1>- internal use only -</h1>
- * <p>
- * Casting Utilities
- * </p>
- * <p>
- * <b>WARNING</b>: Do <b>NOT</b> use any of the classes provided by this 
package! <br/> 
+ * <h1>Internal API</h1>
+ * Internal classes, contributing to the internal proprietary API. 
  * These may be changed or removed without notice!
+ * <p>
+ * <b>WARNING</b>: 
+ * Do NOT use any of the classes provided by this package!
  * </p>
- * 
- * @since 2.0.0
  */
-public final class _Casts {
-
-       private _Casts(){}
-       
-       @SuppressWarnings("unchecked")
-       public static <T> T uncheckedCast(Object obj) {
-               return (T) obj;
-       }
-       
-}
+package org.apache.isis.applib.internal.memento;
\ No newline at end of file
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
 
b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
index 9f02e84..6754532 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingService.java
@@ -16,14 +16,27 @@
  */
 package org.apache.isis.applib.services.urlencoding;
 
+import java.nio.charset.StandardCharsets;
+
 import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.internal.base._Strings;
 
 public interface UrlEncodingService {
 
     @Programmatic
-    public String encode(final String str);
+    public String encode(final byte[] bytes);
+
+    @Programmatic
+    public byte[] decode(String str);
 
     @Programmatic
-    public String decode(String str);
+    public default String encodeString(final String str) {
+       return encode(_Strings.toBytes(str, StandardCharsets.UTF_8));
+    }
 
+    @Programmatic
+    public default String decodeToString(final String str) {
+       return _Strings.ofBytes(decode(str), StandardCharsets.UTF_8);
+    }
+    
 }
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncoding.java
 
b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncoding.java
index 82b8086..1090d0a 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncoding.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncoding.java
@@ -20,7 +20,6 @@ import java.nio.charset.StandardCharsets;
 
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.internal.base._Bytes;
 import org.apache.isis.applib.internal.base._Strings;
 
@@ -30,14 +29,14 @@ import org.apache.isis.applib.internal.base._Strings;
 )
 public class UrlEncodingServiceUsingBaseEncoding implements UrlEncodingService 
{
 
-       @Override @Programmatic
-    public String encode(final String str) {
-       return _Strings.convert(str, _Bytes.asUrlBase64, 
StandardCharsets.UTF_8);
+    @Override
+    public String encode(final byte[] bytes) {
+       return _Strings.ofBytes(_Bytes.asUrlBase64.apply(bytes), 
StandardCharsets.UTF_8);
     }
 
-    @Override @Programmatic
-    public String decode(final String str) {
-       return _Strings.convert(str, _Bytes.ofUrlBase64, 
StandardCharsets.UTF_8);
+    @Override
+    public byte[] decode(final String str) {
+       return _Bytes.ofUrlBase64.apply(_Strings.toBytes(str, 
StandardCharsets.UTF_8));
     }
 
 }
diff --git 
a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompressionAbstract.java
 
b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompressionAbstract.java
index ebbc455..cebc1fd 100644
--- 
a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompressionAbstract.java
+++ 
b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompressionAbstract.java
@@ -14,13 +14,28 @@ import org.apache.isis.applib.internal.base._Strings;
 public abstract class UrlEncodingServiceWithCompressionAbstract implements 
UrlEncodingService {
 
     @Override
-    public String encode(final String str) {
-       return _Strings.convert(str, _Bytes.asCompressedUrlBase64, 
StandardCharsets.UTF_8);
+    public String encode(final byte[] bytes) {
+       return _Strings.ofBytes(_Bytes.asCompressedUrlBase64.apply(bytes), 
StandardCharsets.UTF_8);
     }
 
     @Override
-    public String decode(final String str) {
-       return _Strings.convert(str, _Bytes.ofCompressedUrlBase64, 
StandardCharsets.UTF_8);
+    public byte[] decode(final String str) {
+       return _Bytes.ofCompressedUrlBase64.apply(_Strings.toBytes(str, 
StandardCharsets.UTF_8));
     }
 
+    // -- OVERRIDING DEFAULTS FOR STRING UNARY OPERATORS 
+    
+//    @Override
+//    public String encodeString(final String str) {
+//     return _Strings.convert(str, _Bytes.asCompressedUrlBase64, 
StandardCharsets.UTF_8);
+//    }
+//
+//    @Override
+//    public String decodeToString(final String str) {
+//     return _Strings.convert(str, _Bytes.ofCompressedUrlBase64, 
StandardCharsets.UTF_8);
+//    }
+    
+    // -- 
+
+    
 }
diff --git 
a/core/applib/src/test/java/org/apache/isis/applib/internal/memento/MementosTest.java
 
b/core/applib/src/test/java/org/apache/isis/applib/internal/memento/MementosTest.java
new file mode 100644
index 0000000..a919c2c
--- /dev/null
+++ 
b/core/applib/src/test/java/org/apache/isis/applib/internal/memento/MementosTest.java
@@ -0,0 +1,117 @@
+/*
+ *  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.applib.internal.memento;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Date;
+
+import org.apache.isis.applib.internal.memento._Mementos.Memento;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
+import 
org.apache.isis.applib.services.urlencoding.UrlEncodingServiceUsingBaseEncoding;
+import 
org.apache.isis.applib.services.urlencoding.UrlEncodingServiceWithCompressionAbstract;
+import org.joda.time.LocalDate;
+import org.junit.Before;
+import org.junit.Test;
+
+public class MementosTest {
+
+       static enum DOW {
+               Mon,Tue,Wed,Thu,Fri
+       }
+
+    UrlEncodingServiceWithCompressionAbstract serviceWithCompression;
+    UrlEncodingServiceUsingBaseEncoding serviceBaseEncoding;
+
+    @Before
+    public void setUp() throws Exception {
+       serviceWithCompression = new 
UrlEncodingServiceWithCompressionAbstract(){};
+       serviceBaseEncoding = new UrlEncodingServiceUsingBaseEncoding(){};
+    }
+       
+       @Test
+       public void roundtrip() {
+               roundtrip(serviceBaseEncoding);
+       }
+       
+       @Test
+       public void roundtrip_with_compression() {
+               roundtrip(serviceWithCompression);
+       }
+       
+       private void roundtrip(UrlEncodingService codec) {
+               final Memento memento = _Mementos.create(codec);
+
+               memento.set("someString", "a string");
+               memento.set("someStringWithDoubleSpaces", "a  string");
+               memento.set("someByte", (byte)123);
+               memento.set("someShort", (short)12345);
+               memento.set("someInt", 123456789);
+               memento.set("someLong", 1234567890123456789L);
+               memento.set("someFloat", 123.45F);
+               memento.set("someDouble", 1234567890.123456);
+               memento.set("someBooleanTrue", Boolean.TRUE);
+               memento.set("someBooleanFalse", Boolean.FALSE);
+               memento.set("someBigInteger", new 
BigInteger("123456789012345678901234567890"));
+               memento.set("someBigDecimal", new 
BigDecimal("123456789012345678901234567890.123456789"));
+               memento.set("someLocalDate", new LocalDate(2013,9,3));
+               memento.set("someJavaUtilDate", new Date(300_000_000));
+
+               memento.set("someBookmark", new Bookmark("CUS", "12345"));
+               memento.set("someNullValue", null);
+
+               memento.set("someEnum", DOW.Wed);
+
+               final String str = memento.asString();
+
+               final Memento memento2 = _Mementos.parse(codec, str);
+
+               assertThat(memento2.get("someString", String.class), is("a 
string"));
+               assertThat(memento2.get("someStringWithDoubleSpaces", 
String.class), is("a  string"));
+               assertThat(memento2.get("someByte", Byte.class), is((byte)123));
+               assertThat(memento2.get("someShort", Short.class), 
is((short)12345));
+               assertThat(memento2.get("someInt", Integer.class), 
is(123456789));
+               assertThat(memento2.get("someLong", Long.class), 
is(1234567890123456789L));
+               assertThat(memento2.get("someFloat", Float.class), is(123.45F));
+               assertThat(memento2.get("someDouble", Double.class), 
is(1234567890.123456));
+               assertThat(memento2.get("someBooleanTrue", Boolean.class), 
is(Boolean.TRUE));
+               assertThat(memento2.get("someBooleanFalse", Boolean.class), 
is(Boolean.FALSE));
+               assertThat(memento2.get("someBigInteger", BigInteger.class), 
is(new BigInteger("123456789012345678901234567890")));
+               assertThat(memento2.get("someBigDecimal", BigDecimal.class), 
is(new BigDecimal("123456789012345678901234567890.123456789")));
+               assertThat(memento2.get("someLocalDate", LocalDate.class), 
is(new LocalDate(2013,9,3)));
+               assertThat(memento2.get("someJavaUtilDate", Date.class), is(new 
Date(300_000_000)));
+               assertThat(memento2.get("someBookmark", Bookmark.class), is(new 
Bookmark("CUS", "12345")));
+
+               // a nullValue can be grabbed as any type, will always succeed
+               assertThat(memento2.get("someNullValue", Integer.class), 
is(nullValue()));
+               assertThat(memento2.get("someNullValue", Bookmark.class), 
is(nullValue()));
+               assertThat(memento2.get("someNullValue", LocalDate.class), 
is(nullValue()));
+
+               assertThat(memento2.get("someEnum", DOW.class), is(DOW.Wed));
+
+       }
+
+
+}
diff --git 
a/core/applib/src/test/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceTest.java
 
b/core/applib/src/test/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceTest.java
new file mode 100644
index 0000000..8ad36cc
--- /dev/null
+++ 
b/core/applib/src/test/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceTest.java
@@ -0,0 +1,48 @@
+package org.apache.isis.applib.services.urlencoding;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.greaterThan;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class UrlEncodingServiceTest {
+
+    UrlEncodingServiceWithCompressionAbstract serviceWithCompression;
+    UrlEncodingServiceUsingBaseEncoding serviceBaseEncoding;
+
+    @Before
+    public void setUp() throws Exception {
+       serviceWithCompression = new 
UrlEncodingServiceWithCompressionAbstract(){};
+       serviceBaseEncoding = new UrlEncodingServiceUsingBaseEncoding(){};
+    }
+
+    @Test
+    public void roundtrip() throws Exception {
+       roundtrip(serviceBaseEncoding, false);
+    }
+    
+    @Test
+    public void roundtrip_with_compression() throws Exception {
+       roundtrip(serviceWithCompression, true);
+    }
+    
+    private void roundtrip(UrlEncodingService service, boolean 
testIsCompressing) throws Exception {
+
+        final String original = 
"0-theme-entityPageContainer-entity-rows-2-rowContents-1-col-tabGroups-1-panel-tabPanel-rows-1-rowContents-1-col-fieldSets-1-memberGroup-properties-1-property-scalarTypeContainer-scalarIfRegular-associatedActionLinksBelow-additionalLinkList-additionalLinkItem-0-additionalLink";
+
+        final String encoded = service.encodeString(original);
+        final String decoded = service.decodeToString(encoded);
+
+        Assert.assertThat(decoded, is(equalTo(original)));
+
+        if(testIsCompressing) {
+               Assert.assertThat(original.length(), 
is(greaterThan(encoded.length())));        
+        }
+        
+    }
+
+
+}
\ No newline at end of file
diff --git 
a/core/applib/src/test/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompression_Abstract_Test.java
 
b/core/applib/src/test/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompression_Abstract_Test.java
deleted file mode 100644
index 3ff0ee6..0000000
--- 
a/core/applib/src/test/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompression_Abstract_Test.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.apache.isis.applib.services.urlencoding;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.Matchers.greaterThan;
-
-public class UrlEncodingServiceWithCompression_Abstract_Test {
-
-    UrlEncodingServiceWithCompressionAbstract service;
-
-    @Before
-    public void setUp() throws Exception {
-        service = new UrlEncodingServiceWithCompressionAbstract(){};
-//        service.base64Encoder = new UrlEncodingServiceUsingBaseEncoding();
-    }
-
-    @Test
-    public void roundtrip() throws Exception {
-
-        final String original = 
"0-theme-entityPageContainer-entity-rows-2-rowContents-1-col-tabGroups-1-panel-tabPanel-rows-1-rowContents-1-col-fieldSets-1-memberGroup-properties-1-property-scalarTypeContainer-scalarIfRegular-associatedActionLinksBelow-additionalLinkList-additionalLinkItem-0-additionalLink";
-
-        final String encoded = service.encode(original);
-        final String decoded = service.decode(encoded);
-
-        Assert.assertThat(decoded, is(equalTo(original)));
-
-        Assert.assertThat(original.length(), 
is(greaterThan(encoded.length())));
-    }
-
-
-}
\ No newline at end of file
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 1d3a4d2..70a4de4 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -23,9 +23,8 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.memento.MementoService;
+import org.apache.isis.applib.internal.memento._Mementos;
+import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
 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;
@@ -37,9 +36,9 @@ import 
org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySe
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class RecreatableObjectFacetDeclarativeInitializingAbstract 
extends RecreatableObjectFacetAbstract {
 
@@ -63,10 +62,15 @@ public abstract class 
RecreatableObjectFacetDeclarativeInitializingAbstract exte
             final Object viewModelPojo,
             final String mementoStr) {
 
-        final MementoService mementoService = 
servicesInjector.lookupService(MementoService.class);
-        final BookmarkService bookmarkService = 
servicesInjector.lookupService(BookmarkService.class);
-
-        final MementoService.Memento memento = 
mementoService.parse(mementoStr);
+       final UrlEncodingService codec = 
servicesInjector.lookupService(UrlEncodingService.class);
+       
+       final _Mementos.Memento memento = _Mementos.parse(codec, mementoStr);
+       
+//TODO Legacy of ...
+//        final MementoService mementoService = 
servicesInjector.lookupService(MementoService.class);
+//        final BookmarkService bookmarkService = 
servicesInjector.lookupService(BookmarkService.class);
+//
+//        final MementoService.Memento memento = 
mementoService.parse(mementoStr);
 
         final Set<String> mementoKeys = memento.keySet();
 
@@ -84,15 +88,21 @@ public abstract class 
RecreatableObjectFacetDeclarativeInitializingAbstract exte
             final String propertyId = property.getId();
 
             Object propertyValue = null;
-
+            
             if(mementoKeys.contains(propertyId)) {
-                final Class<?> propertyType = 
property.getSpecification().getCorrespondingClass();
-                propertyValue = memento.get(propertyId, propertyType);
-            } else if(mementoKeys.contains(propertyId + ".bookmark")) {
-                final Bookmark propertyValueBookmark = memento.get(propertyId 
+ ".bookmark", Bookmark.class);
-                propertyValue = bookmarkService.lookup(propertyValueBookmark);
+               final Class<?> propertyType = 
property.getSpecification().getCorrespondingClass();
+               propertyValue = memento.get(propertyId, propertyType);
             }
 
+//TODO Legacy of ...            
+//            if(mementoKeys.contains(propertyId)) {
+//                final Class<?> propertyType = 
property.getSpecification().getCorrespondingClass();
+//                propertyValue = memento.get(propertyId, propertyType);
+//            } else if(mementoKeys.contains(propertyId + ".bookmark")) {
+//                final Bookmark propertyValueBookmark = 
memento.get(propertyId + ".bookmark", Bookmark.class);
+//                propertyValue = 
bookmarkService.lookup(propertyValueBookmark);
+//            }
+
             if(propertyValue != null) {
                 property.set(viewModelAdapter, 
adapterManager.adapterFor(propertyValue), InteractionInitiatedBy.FRAMEWORK);
             }
@@ -101,11 +111,16 @@ public abstract class 
RecreatableObjectFacetDeclarativeInitializingAbstract exte
     
     @Override
     public String memento(Object viewModelPojo) {
+       
+       final UrlEncodingService codec = 
servicesInjector.lookupService(UrlEncodingService.class);
+       
+       final _Mementos.Memento memento = _Mementos.create(codec);
 
-        final MementoService mementoService = 
servicesInjector.lookupService(MementoService.class);
-        final BookmarkService bookmarkService = 
servicesInjector.lookupService(BookmarkService.class);
-
-        final MementoService.Memento memento = mementoService.create();
+//TODO Legacy of ...
+//        final MementoService mementoService = 
servicesInjector.lookupService(MementoService.class);
+//        final BookmarkService bookmarkService = 
servicesInjector.lookupService(BookmarkService.class);
+//
+//        final MementoService.Memento memento = mementoService.create();
 
         // this is horrible, but there's a catch-22 here...
         // we need an adapter in order to query the state of the object via 
the metamodel, on the other hand
@@ -115,9 +130,15 @@ public abstract class 
RecreatableObjectFacetDeclarativeInitializingAbstract exte
         boolean createdTemporaryAdapter = false;
         ObjectAdapter viewModelAdapter = 
adapterManager.getAdapterFor(viewModelPojo);
         if(viewModelAdapter == null) {
-            final ObjectSpecification objectSpecification = 
specificationLoader.loadSpecification(viewModelPojo.getClass());
+               
+            final ObjectSpecification objectSpecification = 
+                       
specificationLoader.loadSpecification(viewModelPojo.getClass());
+            
             final ObjectSpecId objectSpecId = objectSpecification.getSpecId();
-            viewModelAdapter = 
adapterManager.mapRecreatedPojo(RootOid.create(objectSpecId, 
UUID.randomUUID().toString()), viewModelPojo);
+            viewModelAdapter = 
+                       adapterManager.mapRecreatedPojo(
+                                       RootOid.create(objectSpecId, 
UUID.randomUUID().toString()), 
+                                       viewModelPojo);
 
             createdTemporaryAdapter = true;
         }
@@ -144,12 +165,16 @@ public abstract class 
RecreatableObjectFacetDeclarativeInitializingAbstract exte
                         InteractionInitiatedBy.FRAMEWORK);
                 if(propertyValueAdapter != null) {
                     final Object propertyValue = 
propertyValueAdapter.getObject();
-                    if(mementoService.canSet(propertyValue)) {
-                        memento.set(property.getId(), propertyValue);
-                    } else {
-                        final Bookmark propertyValueBookmark = 
bookmarkService.bookmarkFor(propertyValue);
-                        memento.set(property.getId() + ".bookmark", 
propertyValueBookmark);
-                    }
+                    
+                    memento.set(property.getId(), propertyValue);
+
+//TODO Legacy of ...                    
+//                    if(mementoService.canSet(propertyValue)) {
+//                        memento.set(property.getId(), propertyValue);
+//                    } else {
+//                        final Bookmark propertyValueBookmark = 
bookmarkService.bookmarkFor(propertyValue);
+//                        memento.set(property.getId() + ".bookmark", 
propertyValueBookmark);
+//                    }
                 }
             }
             return memento.asString();
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
index 3fa1dca..27c958e 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
@@ -39,7 +39,7 @@ public class 
RecreatableObjectFacetForXmlRootElementAnnotation extends Recreatab
     @Override
     protected Object doInstantiate(final Class<?> viewModelClass, final String 
mementoStr) {
 
-        final String xmlStr = getUrlEncodingService().decode(mementoStr);
+        final String xmlStr = 
getUrlEncodingService().decodeToString(mementoStr);
         final Object viewModelPojo = getJaxbService().fromXml(viewModelClass, 
xmlStr);
 
         return viewModelPojo;
@@ -49,7 +49,7 @@ public class 
RecreatableObjectFacetForXmlRootElementAnnotation extends Recreatab
     public String memento(final Object pojo) {
 
         final String xml = getJaxbService().toXml(pojo);
-        final String encoded = getUrlEncodingService().encode(xml);
+        final String encoded = getUrlEncodingService().encodeString(xml);
 
         return encoded;
     }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDtoServiceInternal.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDtoServiceInternal.java
index c1bb4a3..dbe77c2 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDtoServiceInternal.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/command/CommandDtoServiceInternal.java
@@ -16,7 +16,6 @@
  */
 package org.apache.isis.core.metamodel.services.command;
 
-import java.lang.reflect.Method;
 import java.util.List;
 
 import org.apache.isis.applib.annotation.Programmatic;
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java
 
b/core/runtime-legacy/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java
similarity index 100%
rename from 
core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java
rename to 
core/runtime-legacy/src/main/java/org/apache/isis/core/runtime/services/memento/Dom4jUtil.java
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefault.java
 
b/core/runtime-legacy/src/main/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefault.java
similarity index 97%
rename from 
core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefault.java
rename to 
core/runtime-legacy/src/main/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefault.java
index c3d56b2..52ecbc5 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefault.java
+++ 
b/core/runtime-legacy/src/main/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefault.java
@@ -19,19 +19,18 @@ package org.apache.isis.core.runtime.services.memento;
 import java.util.List;
 import java.util.Set;
 
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.memento.MementoService;
 import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
 
 /**
  * This service provides a mechanism by which a serializable memento of 
arbitrary state can be created.  Most
@@ -41,11 +40,14 @@ import 
org.apache.isis.applib.services.urlencoding.UrlEncodingService;
  * This implementation has no UI and there are no other implementations of the 
service API, and so it annotated
  * with {@link org.apache.isis.applib.annotation.DomainService}.  Because this 
class is implemented in core, this means
  * that it is automatically registered and available for use; no further 
configuration is required.
+ * 
+ * @deprecated - because {@link MementoService} is deprecated.
  */
 @DomainService(
         nature = NatureOfService.DOMAIN,
         menuOrder = "" + Integer.MAX_VALUE
 )
+@Deprecated
 public class MementoServiceDefault implements MementoService {
 
     static class MementoDefault implements Memento {
@@ -89,7 +91,7 @@ public class MementoServiceDefault implements MementoService {
         }
 
         protected String encode(final String xmlStr) {
-            return noEncoding ? xmlStr : urlEncodingService.encode(xmlStr);
+            return noEncoding ? xmlStr : 
urlEncodingService.encodeString(xmlStr);
         }
 
         private static final Function<Element, String> ELEMENT_NAME = new 
Function<Element, String>(){
@@ -149,7 +151,7 @@ public class MementoServiceDefault implements 
MementoService {
         if (noEncoding) {
             xmlStr = str;
         } else {
-            xmlStr = urlEncodingService.decode(str);
+            xmlStr = urlEncodingService.decodeToString(str);
         }
         final Document doc = Dom4jUtil.parse(xmlStr);
         return new MementoDefault(doc, noEncoding, urlEncodingService);
diff --git 
a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java
 
b/core/runtime-legacy/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java
similarity index 100%
rename from 
core/runtime/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java
rename to 
core/runtime-legacy/src/test/java/org/apache/isis/core/runtime/services/memento/MementoServiceDefaultTest.java
diff --git 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
index dc4ec41..8fb9c88 100644
--- 
a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
+++ 
b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
@@ -16,15 +16,12 @@
  */
 package org.apache.isis.core.runtime.services.command;
 
-import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
 import javax.annotation.PostConstruct;
 
-import com.google.common.collect.Lists;
-
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
@@ -40,11 +37,8 @@ import 
org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal
 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.ObjectMember;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import 
org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.schema.cmd.v1.ActionDto;
 import org.apache.isis.schema.cmd.v1.CommandDto;
@@ -63,15 +57,15 @@ import org.apache.isis.schema.utils.CommonDtoUtils;
 )
 public class CommandDtoServiceInternalDefault implements 
CommandDtoServiceInternal {
 
-    private final MementoServiceDefault mementoService;
-
-    public CommandDtoServiceInternalDefault() {
-        this(new MementoServiceDefault());
-    }
-
-    CommandDtoServiceInternalDefault(MementoServiceDefault mementoService) {
-        this.mementoService = mementoService.withNoEncoding();
-    }
+//    private final MementoServiceDefault mementoService;
+//
+//    public CommandDtoServiceInternalDefault() {
+//        this(new MementoServiceDefault());
+//    }
+//
+//    CommandDtoServiceInternalDefault(MementoServiceDefault mementoService) {
+//        this.mementoService = mementoService.withNoEncoding();
+//    }
     
     // //////////////////////////////////////
 
@@ -84,23 +78,23 @@ public class CommandDtoServiceInternalDefault implements 
CommandDtoServiceIntern
     // //////////////////////////////////////
 
 
-    private ObjectSpecificationDefault getJavaSpecificationOfOwningClass(final 
Method method) {
-        return getJavaSpecification(method.getDeclaringClass());
-    }
+//    private ObjectSpecificationDefault 
getJavaSpecificationOfOwningClass(final Method method) {
+//        return getJavaSpecification(method.getDeclaringClass());
+//    }
 
-    private ObjectSpecificationDefault getJavaSpecification(final Class<?> 
cls) {
-        final ObjectSpecification objectSpec = getSpecification(cls);
-        if (!(objectSpec instanceof ObjectSpecificationDefault)) {
-            throw new UnsupportedOperationException(
-                "Only Java is supported "
-                + "(specification is '" + 
objectSpec.getClass().getCanonicalName() + "')");
-        }
-        return (ObjectSpecificationDefault) objectSpec;
-    }
+//    private ObjectSpecificationDefault getJavaSpecification(final Class<?> 
cls) {
+//        final ObjectSpecification objectSpec = getSpecification(cls);
+//        if (!(objectSpec instanceof ObjectSpecificationDefault)) {
+//            throw new UnsupportedOperationException(
+//                "Only Java is supported "
+//                + "(specification is '" + 
objectSpec.getClass().getCanonicalName() + "')");
+//        }
+//        return (ObjectSpecificationDefault) objectSpec;
+//    }
 
-    private ObjectSpecification getSpecification(final Class<?> type) {
-        return specificationLoader.loadSpecification(type);
-    }
+//    private ObjectSpecification getSpecification(final Class<?> type) {
+//        return specificationLoader.loadSpecification(type);
+//    }
 
 
     // //////////////////////////////////////

-- 
To stop receiving notification emails like this one, please contact
ahu...@apache.org.

Reply via email to