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 2020/12/14 17:01:54 UTC
[isis] branch master updated: ISIS-2473: tooling: bit of house
keeping
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
The following commit(s) were added to refs/heads/master by this push:
new f9b0722 ISIS-2473: tooling: bit of house keeping
f9b0722 is described below
commit f9b07221becfccfbf00210a55bae3dfa2e670f8e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Dec 14 18:01:32 2020 +0100
ISIS-2473: tooling: bit of house keeping
also adds ProjectResourceCoordinates, immutable comparable value type
---
.../internal/resources/_ResourceCoordinates.java | 67 +++++++++++++++++
.../cli/adocfix/OrphanedIncludeStatementFixer.java | 4 +-
.../test/adocfix/IncludeStatementFixerTest.java | 2 +-
.../model4adoc/include/IncludeStatement.java | 60 ++++++++++++++++
.../model4adoc/include}/IncludeStatements.java | 41 +----------
.../test/ast}/AbstractAsciiDocWriterTest.java | 2 +-
.../test/ast}/AdmonitionTest.java | 2 +-
.../test/ast}/AttributedTableTest.java | 2 +-
.../test/ast}/DocumentHeaderTest.java | 2 +-
.../test => model4adoc/test/ast}/FootnoteTest.java | 2 +-
.../test/ast}/NestedListTest.java | 2 +-
.../test/ast}/OpenBlockTest.java | 2 +-
.../test/ast}/SimpleListTest.java | 2 +-
.../test/ast}/SimpleTableTest.java | 2 +-
.../test => model4adoc/test/ast}/_Debug.java | 2 +-
.../projectmodel/ProjectResourceCoordinates.java | 84 ++++++++++++++++++++++
16 files changed, 225 insertions(+), 53 deletions(-)
diff --git a/commons/src/main/java/org/apache/isis/commons/internal/resources/_ResourceCoordinates.java b/commons/src/main/java/org/apache/isis/commons/internal/resources/_ResourceCoordinates.java
new file mode 100644
index 0000000..ae1b6d9
--- /dev/null
+++ b/commons/src/main/java/org/apache/isis/commons/internal/resources/_ResourceCoordinates.java
@@ -0,0 +1,67 @@
+/*
+ * 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.commons.internal.resources;
+
+import org.apache.isis.commons.collections.Can;
+
+import lombok.NonNull;
+import lombok.Value;
+import lombok.val;
+
+/**
+ * <h1>- internal use only -</h1>
+ * <p>
+ * Utilities for locating resources.
+ * </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
+ */
+@Value
+public final class _ResourceCoordinates implements Comparable<_ResourceCoordinates> {
+
+ private final @NonNull Can<String> components;
+
+ @Override
+ public int compareTo(final @NonNull _ResourceCoordinates o) {
+
+ val compa = this.getComponents();
+ val compb = o.getComponents();
+
+ val a = compa.iterator();
+ val b = compb.iterator();
+
+ while(a.hasNext() || b.hasNext()) {
+
+ val left = a.hasNext() ? a.next() : "";
+ val right = b.hasNext() ? b.next() : "";
+
+ int c = left.compareTo(right);
+ if(c!=0) {
+ return c;
+ }
+
+ }
+ return 0;
+ }
+
+
+}
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/OrphanedIncludeStatementFixer.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/OrphanedIncludeStatementFixer.java
index 9fba68a..b9fc99f 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/OrphanedIncludeStatementFixer.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/OrphanedIncludeStatementFixer.java
@@ -24,10 +24,10 @@ import java.util.SortedSet;
import org.apache.isis.commons.internal.base._Refs;
import org.apache.isis.commons.internal.base._Text;
-import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.tooling.cli.CliConfig;
-import org.apache.isis.tooling.cli.adocfix.IncludeStatements.IncludeStatement;
import org.apache.isis.tooling.j2adoc.J2AdocContext;
+import org.apache.isis.tooling.model4adoc.include.IncludeStatement;
+import org.apache.isis.tooling.model4adoc.include.IncludeStatements;
import lombok.NonNull;
import lombok.val;
diff --git a/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/adocfix/IncludeStatementFixerTest.java b/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/adocfix/IncludeStatementFixerTest.java
index b4fe499..33935ae 100644
--- a/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/adocfix/IncludeStatementFixerTest.java
+++ b/tooling/cli/src/test/java/org/apache/isis/tooling/cli/test/adocfix/IncludeStatementFixerTest.java
@@ -28,7 +28,7 @@ import org.junit.jupiter.api.Test;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Text;
import org.apache.isis.commons.internal.collections._Sets;
-import org.apache.isis.tooling.cli.adocfix.IncludeStatements;
+import org.apache.isis.tooling.model4adoc.include.IncludeStatements;
import lombok.NonNull;
import lombok.val;
diff --git a/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/include/IncludeStatement.java b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/include/IncludeStatement.java
new file mode 100644
index 0000000..41cb998
--- /dev/null
+++ b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/include/IncludeStatement.java
@@ -0,0 +1,60 @@
+/*
+ * 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.tooling.model4adoc.include;
+
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+
+import lombok.Builder;
+import lombok.Value;
+
+@Value @Builder
+public final class IncludeStatement {
+ int zeroBasedLineIndex;
+ String matchingLine;
+ String referencePath;
+ String referenceShortName;
+
+ String version;
+ String component;
+ String module;
+ String type; // usually 'page'
+ String ext;
+ String options;
+
+ public boolean isLocal() {
+ return _Strings.isNullOrEmpty(component);
+ }
+
+ public String toAdocAsString() {
+ //TODO if local might look slightly different
+ if(isLocal()) {
+ throw _Exceptions.notImplemented();
+ }
+
+ return String.format("include::%s%s:%s:%s$%s%s",
+ _Strings.nullToEmpty(version).isEmpty() ? "" : version + "@",
+ _Strings.nullToEmpty(component),
+ _Strings.nullToEmpty(module),
+ type,
+ referencePath,
+ _Strings.nullToEmpty(options));
+ }
+
+}
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/IncludeStatements.java b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/include/IncludeStatements.java
similarity index 76%
rename from tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/IncludeStatements.java
rename to tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/include/IncludeStatements.java
index 4df60ed..64becc3 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/adocfix/IncludeStatements.java
+++ b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/include/IncludeStatements.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.cli.adocfix;
+package org.apache.isis.tooling.model4adoc.include;
import java.util.Optional;
import java.util.function.BiConsumer;
@@ -24,52 +24,13 @@ import java.util.function.UnaryOperator;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Refs;
-import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.commons.internal.exceptions._Exceptions;
-import lombok.Builder;
import lombok.NonNull;
-import lombok.Value;
import lombok.val;
public final class IncludeStatements {
- @Value @Builder
- public static class IncludeStatement {
- int zeroBasedLineIndex;
- String matchingLine;
- String referencePath;
- String referenceShortName;
-
- String version;
- String component;
- String module;
- String type; // usually 'page'
- String ext;
- String options;
-
- public boolean isLocal() {
- return _Strings.isNullOrEmpty(component);
- }
-
- public String toAdocAsString() {
- //TODO if local might look slightly different
- if(isLocal()) {
- throw _Exceptions.notImplemented();
- }
-
- return String.format("include::%s%s:%s:%s$%s%s",
- _Strings.nullToEmpty(version).isEmpty() ? "" : version + "@",
- _Strings.nullToEmpty(component),
- _Strings.nullToEmpty(module),
- type,
- referencePath,
- _Strings.nullToEmpty(options));
- }
-
- }
-
// -- UTILITIES
public static Can<IncludeStatement> find(
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AbstractAsciiDocWriterTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AbstractAsciiDocWriterTest.java
similarity index 98%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AbstractAsciiDocWriterTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AbstractAsciiDocWriterTest.java
index d2187e0..403fde2 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AbstractAsciiDocWriterTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AbstractAsciiDocWriterTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AdmonitionTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AdmonitionTest.java
similarity index 97%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AdmonitionTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AdmonitionTest.java
index 7071d39..5f949d6 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AdmonitionTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AdmonitionTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AttributedTableTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AttributedTableTest.java
similarity index 97%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AttributedTableTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AttributedTableTest.java
index 8e9bba1..c9bbfba 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/AttributedTableTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/AttributedTableTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/DocumentHeaderTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/DocumentHeaderTest.java
similarity index 97%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/DocumentHeaderTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/DocumentHeaderTest.java
index ca08df0..a718df5 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/DocumentHeaderTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/DocumentHeaderTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/FootnoteTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/FootnoteTest.java
similarity index 97%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/FootnoteTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/FootnoteTest.java
index 952f788..b203cf9 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/FootnoteTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/FootnoteTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/NestedListTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/NestedListTest.java
similarity index 97%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/NestedListTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/NestedListTest.java
index 1940d1c..e761dfa 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/NestedListTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/NestedListTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/OpenBlockTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/OpenBlockTest.java
similarity index 98%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/OpenBlockTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/OpenBlockTest.java
index acaab07..f77f823 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/OpenBlockTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/OpenBlockTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/SimpleListTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/SimpleListTest.java
similarity index 97%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/SimpleListTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/SimpleListTest.java
index b68a4ca..8d6dcdb 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/SimpleListTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/SimpleListTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/SimpleTableTest.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/SimpleTableTest.java
similarity index 97%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/SimpleTableTest.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/SimpleTableTest.java
index 9cc568a..abcffa7 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/SimpleTableTest.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/SimpleTableTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.io.IOException;
diff --git a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/_Debug.java b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/_Debug.java
similarity index 98%
rename from tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/_Debug.java
rename to tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/_Debug.java
index 386cc84..c14ed76 100644
--- a/tooling/model4adoc/src/test/java/org/apache/isis/tooling/adocmodel/test/_Debug.java
+++ b/tooling/model4adoc/src/test/java/org/apache/isis/tooling/model4adoc/test/ast/_Debug.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.tooling.adocmodel.test;
+package org.apache.isis.tooling.model4adoc.test.ast;
import java.util.Optional;
diff --git a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ProjectResourceCoordinates.java b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ProjectResourceCoordinates.java
new file mode 100644
index 0000000..ff5a6c2
--- /dev/null
+++ b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ProjectResourceCoordinates.java
@@ -0,0 +1,84 @@
+/*
+ * 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.tooling.projectmodel;
+
+import java.util.Comparator;
+
+import javax.annotation.Nullable;
+
+import org.apache.isis.commons.collections.Can;
+
+import lombok.Builder;
+import lombok.NonNull;
+import lombok.Value;
+
+@Value @Builder
+public class ProjectResourceCoordinates
+implements Comparable<ProjectResourceCoordinates> {
+
+ /**
+ * multi-part top level location specifier
+ * like eg. adoc include {@code component:module:page$}
+ * or a file-system location {@code ~/my-projects/my-project},
+ * (whether relative or absolute is not specified)
+ */
+ private final @NonNull Can<String> location;
+
+ /**
+ * multi-part (location relative) path like eg. {@code org.apache.isis}
+ */
+ private final @NonNull Can<String> namespace;
+
+ /**
+ * multi-part name like eg. a filename {@code docs.adoc},
+ * or a nested class name {@code A$B},
+ */
+ private final @NonNull Can<String> name;
+
+ /**
+ * usually part of the multi-part name;
+ * eg. a filename without extension,
+ * or a java class simple name when nested
+ */
+ private final @NonNull String simpleName;
+
+ /**
+ * ever only used for display, presumably human readable;
+ * other than that not specified
+ */
+ private final @NonNull String friendlyName;
+
+ private final static Comparator<ProjectResourceCoordinates> comparator =
+ Comparator.comparing(ProjectResourceCoordinates::getLocation)
+ .thenComparing(ProjectResourceCoordinates::getNamespace)
+ .thenComparing(ProjectResourceCoordinates::getName);
+
+ @Override
+ public int compareTo(final @Nullable ProjectResourceCoordinates other) {
+ // when returning
+ // -1 ... this is before other
+ // +1 ... this is after other
+ if(other==null) {
+ return 1; // nulls first
+ }
+ return comparator.compare(this, other);
+ }
+
+
+}