You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2017/10/13 14:29:21 UTC
[2/5] jena git commit: Convert OperationName to an extensible enum.
Convert OperationName to an extensible enum.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/fc7beb02
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/fc7beb02
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/fc7beb02
Branch: refs/heads/master
Commit: fc7beb02c3399f58f00b8d3f9f4a6ce5645338e3
Parents: 0475f63
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Oct 12 10:08:29 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Oct 12 10:08:29 2017 +0100
----------------------------------------------------------------------
.../org/apache/jena/fuseki/mgt/ActionStats.java | 4 +-
.../apache/jena/fuseki/mgt/JsonDescription.java | 4 +-
.../jena/fuseki/server/OperationName.java | 76 ++++++++++++++++----
3 files changed, 66 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/fc7beb02/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java
index fc95331..bc8d2cb 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionStats.java
@@ -108,8 +108,8 @@ public class ActionStats extends ActionContainerItem
builder.startObject() ;
operationCounters(builder, endpoint);
- builder.key(JsonConst.operation).value(operName.name()) ;
- builder.key(JsonConst.description).value(operName.getDescription()) ;
+ builder.key(JsonConst.operation).value(operName.getName()) ;
+ builder.key(JsonConst.description).value(operName.getName()) ;
builder.finishObject() ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/fc7beb02/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java
index 8f0d939..6113a10 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java
@@ -58,8 +58,8 @@ public class JsonDescription {
private static void describe(JsonBuilder builder, OperationName opName, List<Endpoint> endpoints) {
builder.startObject() ;
- builder.key(JsonConst.srvType).value(opName.name()) ;
- builder.key(JsonConst.srvDescription).value(opName.getDescription()) ;
+ builder.key(JsonConst.srvType).value(opName.getName()) ;
+ builder.key(JsonConst.srvDescription).value(opName.getName()) ;
builder.key(JsonConst.srvEndpoints) ;
builder.startArray() ;
http://git-wip-us.apache.org/repos/asf/jena/blob/fc7beb02/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/OperationName.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/OperationName.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/OperationName.java
index 8cf2c9c..23be8dc 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/OperationName.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/OperationName.java
@@ -18,20 +18,68 @@
package org.apache.jena.fuseki.server;
-public enum OperationName {
- // Fixed names give the codebase some resilience.
- Query("SPARQL Query"),
- Update("SPARQL Update"),
- Upload("File Upload"),
- GSP_RW("Graph Store Protocol"),
- GSP_R("Graph Store Protocol (Read)"),
- Quads_RW("HTTP Quads"),
- Quads_R("HTTP Quads (Read)")
- ;
-
- private final String description ;
- private OperationName(String description) { this.description = description ; }
- public String getDescription() { return description ; }
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Names (symbols) for operations.
+ * An {@code OperationName} is not related to the service name used to invoke the operation.
+ * That is determined by the {@link Endpoint}.
+ */
+public class OperationName {
+
+ // Create intern'ed symbols.
+ static private Map<String, OperationName> registered = new HashMap<>();
+
+ /**
+ * Create an intern'ed {@code OperationName}. That is, if the object has already been
+ * created, return the original. There is only ever one object for a given name.
+ * (It is an extensible enum without subclassing).
+ */
+ static public OperationName register(String name) {
+ return registered.computeIfAbsent(name, (n)->new OperationName(n));
+ }
+
+ public static OperationName Query = register("SPARQL Query");
+ public static OperationName Update = register("SPARQL Update");
+ public static OperationName Upload = register("File Upload");
+ public static OperationName GSP_RW = register("Graph Store Protocol");
+ public static OperationName GSP_R = register("Graph Store Protocol (Read)");
+ public static OperationName Quads_RW = register("HTTP Quads");
+ public static OperationName Quads_R = register("HTTP Quads (Read)");
+
+ private final String name ;
+ private OperationName(String name) { this.name = name ; }
+
+ public String getName() { return name ; }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ // Could be this == obj
+ // because we intern'ed the object
+
+ @Override
+ public boolean equals(Object obj) {
+ if ( this == obj )
+ return true;
+ if ( obj == null )
+ return false;
+ if ( getClass() != obj.getClass() )
+ return false;
+ OperationName other = (OperationName)obj;
+ if ( name == null ) {
+ if ( other.name != null )
+ return false;
+ } else if ( !name.equals(other.name) )
+ return false;
+ return true;
+ }
}