You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/01/22 16:13:20 UTC

[isis] branch ISIS-1846_internal_utils updated (44af17e -> 47790a6)

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

ahuber pushed a change to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 44af17e  ISIS-1846 deprecate StringPredicates and StringFunctions, refactoring any references to use the new $String utility class
     new 0622780  ISIS-1846 use mixin naming convention for package private support classes
     new bc59167  ISIS-1846 add missing license header
     new b6f8293  ISIS-1846 StringOperator: improved name for composing method
     new debea9f  ISIS-1846 consolidate comparator algorithms into $Comparators
     new 47790a6  ISIS-1846 refactoring: less heap pollution on sequence compare

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/isis/applib/internal/base/$Strings.java | 10 ++---
 ...aturalNames.java => $Strings_NaturalNames.java} |  7 ++-
 .../isis/applib/internal/base/package-info.java    | 18 ++++++++
 .../$Casts.java => compare/$Comparators.java}      | 24 +++++++---
 .../compare/$Comparators_SequenceCompare.java}     | 48 ++++++++++++--------
 .../{types => internal/compare}/package-info.java  |  6 ++-
 .../apache/isis/applib/internal/package-info.java  | 18 ++++++++
 .../domainservice/DomainServiceMenuOrder.java      |  5 +--
 .../MemberOrderFacetComparator.java                |  4 +-
 .../core/metamodel/util/DeweyOrderComparator.java  | 51 ++--------------------
 10 files changed, 104 insertions(+), 87 deletions(-)
 rename core/applib/src/main/java/org/apache/isis/applib/internal/base/{NaturalNames.java => $Strings_NaturalNames.java} (97%)
 copy core/applib/src/main/java/org/apache/isis/applib/internal/{base/$Casts.java => compare/$Comparators.java} (64%)
 rename core/{metamodel/src/main/java/org/apache/isis/core/commons/compare/SequenceCompare.java => applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators_SequenceCompare.java} (63%)
 copy core/applib/src/main/java/org/apache/isis/applib/{types => internal/compare}/package-info.java (76%)

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

[isis] 03/05: ISIS-1846 StringOperator: improved name for composing method

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit b6f8293577347e0cb00a1735d97abaa84fc8c5b0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 16:21:53 2018 +0100

    ISIS-1846 StringOperator: improved name for composing method
---
 .../java/org/apache/isis/applib/internal/base/$Strings.java    | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
index e2bd86e..c7be64f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
@@ -159,7 +159,7 @@ public final class $Strings {
 			return operator.apply(input);
 		}
 		
-		public StringOperator compose(UnaryOperator<String> andThen) {
+		public StringOperator andThen(UnaryOperator<String> andThen) {
 			if(operator==null)
 				return new StringOperator(andThen::apply);
 			return new StringOperator(s->andThen.apply(operator.apply(s)));
@@ -180,14 +180,14 @@ public final class $Strings {
     // using naming convention asXxx...
     
     public final static StringOperator asLowerDashed = operator()
-        	.compose($Strings::lower)
-        	.compose(s->$Strings.condenseWhitespaces(s, "-"));
+        	.andThen($Strings::lower)
+        	.andThen(s->$Strings.condenseWhitespaces(s, "-"));
 
  	public final static StringOperator asNormalized = operator()
- 			.compose(s->$Strings.condenseWhitespaces(s, " "));
+ 			.andThen(s->$Strings.condenseWhitespaces(s, " "));
     
  	public final static StringOperator asNaturalName2 = operator()
- 			.compose(s->$Strings_NaturalNames.naturalName2(s, true));
+ 			.andThen(s->$Strings_NaturalNames.naturalName2(s, true));
 
     
 }

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

[isis] 05/05: ISIS-1846 refactoring: less heap pollution on sequence compare

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 47790a6d47fe9d9d7cea84ac7710251ee1f3abb9
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 17:13:18 2018 +0100

    ISIS-1846 refactoring: less heap pollution on sequence compare
---
 .../isis/applib/internal/compare/$Comparators.java |  4 ++-
 .../compare/$Comparators_SequenceCompare.java      | 29 +++++++++++-----------
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators.java b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators.java
index d8f74b0..13908f6 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators.java
@@ -37,10 +37,12 @@ public final class $Comparators {
 
 	private $Comparators(){}
 	
+	private static final String DEWEY_SEPERATOR = ".";
+	
 	public static int deweyOrderCompare(
     		@Nullable final String sequence1, 
     		@Nullable final String sequence2) {
-		return $Comparators_SequenceCompare.compareNullLast(sequence1, sequence2, ".");
+		return $Comparators_SequenceCompare.compareNullLast(sequence1, sequence2, DEWEY_SEPERATOR);
 	}
 	
 	public static final Comparator<String> deweyOrderComparator = $Comparators::deweyOrderCompare;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators_SequenceCompare.java b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators_SequenceCompare.java
index d8d01c8..2ebf914 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators_SequenceCompare.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators_SequenceCompare.java
@@ -47,11 +47,11 @@ final class $Comparators_SequenceCompare {
             return -1; // non-null before null
         }
 
-        final String[] components1 = componentsFor(sequence1, separator);
-        final String[] components2 = componentsFor(sequence2, separator);
+        final StringTokenizer components1 = tokenizerFor(sequence1, separator);
+        final StringTokenizer components2 = tokenizerFor(sequence2, separator);
 
-        final int length1 = components1.length;
-        final int length2 = components2.length;
+        final int length1 = components1.countTokens();
+        final int length2 = components2.countTokens();
 
         // shouldn't happen but just in case.
         if (length1 == 0 && length2 == 0) {
@@ -74,15 +74,18 @@ final class $Comparators_SequenceCompare {
                 return 0;
             }
             // we have this component on each side
+            
+            final String token1 = components1.nextToken();
+            final String token2 = components2.nextToken();
 
             int componentCompare = 0;
             try {
-                final Integer c1 = Integer.valueOf(components1[n]);
-                final Integer c2 = Integer.valueOf(components2[n]);
-                componentCompare = c1.compareTo(c2);
+                final int c1 = Integer.parseInt(token1);
+                final int c2 = Integer.parseInt(token2);
+                componentCompare = Integer.compare(c1, c2);
             } catch (final NumberFormatException nfe) {
                 // not integers compare as strings
-                componentCompare = components1[n].compareTo(components2[n]);
+                componentCompare = token1.compareTo(token2);
             }
 
             if (componentCompare != 0) {
@@ -93,13 +96,9 @@ final class $Comparators_SequenceCompare {
         }
     }
 
-    private static String[] componentsFor(final String sequence, final String separator) {
-        final StringTokenizer tokens = new StringTokenizer(sequence, separator, false);
-        final String[] components = new String[tokens.countTokens()];
-        for (int i = 0; tokens.hasMoreTokens(); i++) {
-            components[i] = tokens.nextToken();
-        }
-        return components;
+    private static StringTokenizer tokenizerFor(final String sequence, final String separator) {
+        return new StringTokenizer(sequence, separator, false);
     }
+    
 	
 }

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

[isis] 02/05: ISIS-1846 add missing license header

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit bc59167676f6e49fc79422945ed229b428db35ff
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 16:06:33 2018 +0100

    ISIS-1846 add missing license header
---
 .../apache/isis/applib/internal/base/package-info.java | 18 ++++++++++++++++++
 .../org/apache/isis/applib/internal/package-info.java  | 18 ++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/package-info.java
index f2b7763..527aa62 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/package-info.java
@@ -1,3 +1,21 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
 /**
  * Internal classes, not intended as being part of the public API.
  * 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/internal/package-info.java
index 1275ffe..8851009 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/package-info.java
@@ -1,3 +1,21 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
 /**
  * Internal classes, not intended as being part of the public API.
  * 

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

[isis] 01/05: ISIS-1846 use mixin naming convention for package private support classes

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 06227805a6576daa315fa3c294d6834c4a6d69ad
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 16:04:37 2018 +0100

    ISIS-1846 use mixin naming convention for package private support
    classes
---
 .../main/java/org/apache/isis/applib/internal/base/$Strings.java   | 2 +-
 .../base/{NaturalNames.java => $Strings_NaturalNames.java}         | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
index 990319d..e2bd86e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings.java
@@ -187,7 +187,7 @@ public final class $Strings {
  			.compose(s->$Strings.condenseWhitespaces(s, " "));
     
  	public final static StringOperator asNaturalName2 = operator()
- 			.compose(s->NaturalNames.naturalName2(s, true));
+ 			.compose(s->$Strings_NaturalNames.naturalName2(s, true));
 
     
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/base/NaturalNames.java b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings_NaturalNames.java
similarity index 97%
rename from core/applib/src/main/java/org/apache/isis/applib/internal/base/NaturalNames.java
rename to core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings_NaturalNames.java
index 42f4e1d..4a9ec68 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/internal/base/NaturalNames.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/base/$Strings_NaturalNames.java
@@ -21,7 +21,12 @@ package org.apache.isis.applib.internal.base;
 
 import javax.annotation.Nullable;
 
-class NaturalNames {
+/**
+ * 
+ * package private mixin for utility class {@link $Strings}
+ *
+ */
+class $Strings_NaturalNames {
 	
 	private static final char SPACE = ' ';
  	/**

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

[isis] 04/05: ISIS-1846 consolidate comparator algorithms into $Comparators

Posted by ah...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch ISIS-1846_internal_utils
in repository https://gitbox.apache.org/repos/asf/isis.git

commit debea9f762335abe9dad24e183401314f8512037
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 22 17:00:20 2018 +0100

    ISIS-1846 consolidate comparator algorithms into $Comparators
---
 .../isis/applib/internal/compare/$Comparators.java | 49 +++++++++++++++++++++
 .../compare/$Comparators_SequenceCompare.java}     | 27 ++++++++----
 .../isis/applib/internal/compare/package-info.java | 25 +++++++++++
 .../domainservice/DomainServiceMenuOrder.java      |  5 +--
 .../MemberOrderFacetComparator.java                |  4 +-
 .../core/metamodel/util/DeweyOrderComparator.java  | 51 ++--------------------
 6 files changed, 100 insertions(+), 61 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators.java b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators.java
new file mode 100644
index 0000000..d8f74b0
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators.java
@@ -0,0 +1,49 @@
+/*
+ *  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.compare;
+
+import java.util.Comparator;
+
+import javax.annotation.Nullable;
+
+/**
+ * <h1>- internal use only -</h1>
+ * <p>
+ * Provides some ordering algorithms.
+ * <p>
+ * WARNING: Do <b>NOT</b> use any of the classes provided by this package! <br/> 
+ * Public access will be removed once we migrate to Java 9+ modules.
+ * 
+ * @since 2.0.0
+ */
+public final class $Comparators {
+
+	private $Comparators(){}
+	
+	public static int deweyOrderCompare(
+    		@Nullable final String sequence1, 
+    		@Nullable final String sequence2) {
+		return $Comparators_SequenceCompare.compareNullLast(sequence1, sequence2, ".");
+	}
+	
+	public static final Comparator<String> deweyOrderComparator = $Comparators::deweyOrderCompare;
+
+	
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/compare/SequenceCompare.java b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators_SequenceCompare.java
similarity index 79%
rename from core/metamodel/src/main/java/org/apache/isis/core/commons/compare/SequenceCompare.java
rename to core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators_SequenceCompare.java
index a041c43..d8d01c8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/compare/SequenceCompare.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/$Comparators_SequenceCompare.java
@@ -16,15 +16,26 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.commons.compare;
+package org.apache.isis.applib.internal.compare;
 
 import java.util.StringTokenizer;
 
-public class SequenceCompare {
+import javax.annotation.Nullable;
 
-    private SequenceCompare(){}
+import org.apache.isis.applib.internal.base.$Strings;
 
-    public static int compareNullLast(String sequence1, String sequence2) {
+final class $Comparators_SequenceCompare {
+
+    private $Comparators_SequenceCompare(){}
+
+    public static int compareNullLast(
+    		@Nullable final String sequence1, 
+    		@Nullable final String sequence2, 
+    		final String separator) {
+    	
+    	if($Strings.isEmpty(separator))
+			throw new IllegalArgumentException("a non empty separator is required");
+    	
         if (sequence1 == null && sequence2 == null) {
             return 0;
         }
@@ -36,8 +47,8 @@ public class SequenceCompare {
             return -1; // non-null before null
         }
 
-        final String[] components1 = componentsFor(sequence1);
-        final String[] components2 = componentsFor(sequence2);
+        final String[] components1 = componentsFor(sequence1, separator);
+        final String[] components2 = componentsFor(sequence2, separator);
 
         final int length1 = components1.length;
         final int length2 = components2.length;
@@ -82,8 +93,8 @@ public class SequenceCompare {
         }
     }
 
-    private static String[] componentsFor(final String sequence) {
-        final StringTokenizer tokens = new StringTokenizer(sequence, ".", false);
+    private static String[] componentsFor(final String sequence, final String separator) {
+        final StringTokenizer tokens = new StringTokenizer(sequence, separator, false);
         final String[] components = new String[tokens.countTokens()];
         for (int i = 0; tokens.hasMoreTokens(); i++) {
             components[i] = tokens.nextToken();
diff --git a/core/applib/src/main/java/org/apache/isis/applib/internal/compare/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/package-info.java
new file mode 100644
index 0000000..4eed78e
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/internal/compare/package-info.java
@@ -0,0 +1,25 @@
+/*
+ *  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.
+ */
+/**
+ * Internal classes, not intended as being part of the public API.
+ * 
+ * WARNING: Do NOT use any of the classes provided by this package! <br/> 
+ * Public access will be removed once we migrate to Java 9+ modules.
+ */
+package org.apache.isis.applib.internal.compare;
\ No newline at end of file
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceMenuOrder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceMenuOrder.java
index b18fab3..8d04164 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceMenuOrder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceMenuOrder.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.metamodel.facets.object.domainservice;
 import org.apache.isis.applib.annotation.Constants;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.core.commons.compare.SequenceCompare;
+import org.apache.isis.applib.internal.compare.$Comparators;
 
 public class DomainServiceMenuOrder {
 
@@ -47,8 +47,7 @@ public class DomainServiceMenuOrder {
         if(isUndefined(dsOrder))
             return dslayoutOrder;
         
-        //XXX ISIS-1715 honor member order (use Dewey Decimal format)
-        return SequenceCompare.compareNullLast(dslayoutOrder, dsOrder) < 0
+        return $Comparators.deweyOrderCompare(dslayoutOrder, dsOrder) < 0
         		? dslayoutOrder 
         		: dsOrder;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderFacetComparator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderFacetComparator.java
index 05474af..8bcb613 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderFacetComparator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberOrderFacetComparator.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.metamodel.layout.memberorderfacet;
 
 import java.util.Comparator;
 
-import org.apache.isis.core.commons.compare.SequenceCompare;
+import org.apache.isis.applib.internal.compare.$Comparators;
 import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 
 public class MemberOrderFacetComparator implements Comparator<MemberOrderFacet> {
@@ -48,7 +48,7 @@ public class MemberOrderFacetComparator implements Comparator<MemberOrderFacet>
             throw new IllegalArgumentException("Not in same group");
         }
         
-        return SequenceCompare.compareNullLast(m1.sequence(), m2.sequence());
+        return $Comparators.deweyOrderCompare(m1.sequence(), m2.sequence());
 
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/DeweyOrderComparator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/DeweyOrderComparator.java
index 0845838..ecf8c49 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/DeweyOrderComparator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/DeweyOrderComparator.java
@@ -20,11 +20,8 @@
 package org.apache.isis.core.metamodel.util;
 
 import java.util.Comparator;
-import java.util.List;
-import com.google.common.base.Function;
-import com.google.common.base.Splitter;
-import com.google.common.collect.Iterators;
-import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.internal.compare.$Comparators;
 
 public class DeweyOrderComparator implements Comparator<String> {
 
@@ -32,51 +29,9 @@ public class DeweyOrderComparator implements Comparator<String> {
 
     @Override
     public int compare(String o1, String o2) {
-        final Parsed<String> p1 = new Parsed<String>(o1);
-        final Parsed<String> p2 = new Parsed<String>(o2);
-        return p1.compareTo(p2);
+    	return $Comparators.deweyOrderCompare(o1, o2);
     }
 
-    private static class Parsed<V> implements Comparable<Parsed<V>> {
-        private static final Function<String, Integer> PARSE = new Function<String, Integer>() {
-            @Override
-            public Integer apply(String input) {
-                try {
-                    return Integer.parseInt(input);
-                } catch (NumberFormatException e) {
-                    return Integer.MAX_VALUE;
-                }
-            }
-        };
-        private final List<Integer> parts;
-        private final String key;
-        Parsed(String key) {
-            this.key = key;
-            final Iterable<String> iter = Splitter.on(".").split(key);
-            parts = Lists.newArrayList(Iterators.transform(iter.iterator(), PARSE));
-        }
-
-        @Override
-        public int compareTo(Parsed<V> other) {
-            for (int i = 0; i < parts.size(); i++) {
-                Integer p = parts.get(i);
-                if (other.parts.size() == i) {
-                    // run out of parts for other, put it before us
-                    return +1;
-                }
-                final Integer q = other.parts.get(i);
-                final int comparison = p.compareTo(q);
-                if(comparison != 0) {
-                    return +comparison;
-                }
-            }
-            if(other.parts.size() > parts.size()) {
-                // run out of parts on our side, still more on others; put us before it
-                return -1;
-            }
-            return 0;
-        }
-    }
 }
 
 

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