gauge) {
+ return REGISTRY.register(MetricRegistry.name(clazz, name), gauge);
+ }
+
+ public static Counter registerCounter(Class> clazz, String name) {
+ return REGISTRY.counter(MetricRegistry.name(clazz, name));
+ }
+
+ public static Counter registerCounter(String name) {
+ return REGISTRY.counter(MetricRegistry.name(name));
+ }
+
+ public static Histogram registerHistogram(Class> clazz, String name) {
+ return REGISTRY.histogram(MetricRegistry.name(clazz, name));
+ }
+
+ public static Histogram registerHistogram(String name) {
+ return REGISTRY.histogram(name);
+ }
+
+ public static Meter registerMeter(Class> clazz, String name) {
+ return REGISTRY.meter(MetricRegistry.name(clazz, name));
+ }
+
+ public static Timer registerTimer(Class> clazz, String name) {
+ return REGISTRY.timer(MetricRegistry.name(clazz, name));
+ }
+
+ public static String replaceDotDashInKey(String orgKey) {
+ return orgKey.replace(".", "_").replace("-", "_");
+ }
+
+ public static String replaceSlashInKey(String orgKey) {
+ return orgKey.replace("/", "_");
+ }
+
+ public static void writePrometheusFormat(StringBuilder promeMetrics, MetricRegistry registry) {
+ // gauges
+ registry.getGauges().forEach((key, gauge) -> {
+ if (gauge != null) {
+ String helpName = replaceDotDashInKey(key);
+ promeMetrics.append(STR_HELP)
+ .append(helpName).append(END_LSTR);
+ promeMetrics.append(STR_TYPE)
+ .append(helpName).append(SPACE_STR + GAUGE_TYPE + END_LSTR);
+ promeMetrics.append(helpName).append(SPACE_STR).append(gauge.getValue())
+ .append(END_LSTR);
+ }
+ });
+
+ // histograms
+ registry.getHistograms().forEach((key, histogram) -> {
+ if (histogram != null) {
+ String helpName = replaceDotDashInKey(key);
+ promeMetrics.append(STR_HELP)
+ .append(helpName).append(END_LSTR);
+ promeMetrics.append(STR_TYPE)
+ .append(helpName)
+ .append(SPACE_STR + HISTOGRAM_TYPE + END_LSTR);
+
+ promeMetrics.append(helpName)
+ .append(COUNT_ATTR).append(histogram.getCount()).append(END_LSTR);
+ promeMetrics.append(
+ exportSnapshot(helpName, histogram.getSnapshot()));
+ }
+ });
+
+ // meters
+ registry.getMeters().forEach((key, metric) -> {
+ if (metric != null) {
+ String helpName = replaceDotDashInKey(key);
+ promeMetrics.append(STR_HELP)
+ .append(helpName).append(END_LSTR);
+ promeMetrics.append(STR_TYPE)
+ .append(helpName)
+ .append(SPACE_STR + HISTOGRAM_TYPE + END_LSTR);
+
+ promeMetrics.append(helpName)
+ .append(COUNT_ATTR).append(metric.getCount()).append(END_LSTR);
+ promeMetrics.append(helpName)
+ .append(MEAN_RATE_ATRR).append(metric.getMeanRate()).append(END_LSTR);
+ promeMetrics.append(helpName)
+ .append(ONE_MIN_RATE_ATRR).append(metric.getOneMinuteRate())
+ .append(END_LSTR);
+ promeMetrics.append(helpName)
+ .append(FIVE_MIN_RATE_ATRR).append(metric.getFiveMinuteRate())
+ .append(END_LSTR);
+ promeMetrics.append(helpName)
+ .append(FIFT_MIN_RATE_ATRR).append(metric.getFifteenMinuteRate())
+ .append(END_LSTR);
+ }
+ });
+
+ // timer
+ registry.getTimers().forEach((key, timer) -> {
+ if (timer != null) {
+ String helpName = replaceDotDashInKey(key);
+ promeMetrics.append(STR_HELP)
+ .append(helpName).append(END_LSTR);
+ promeMetrics.append(STR_TYPE)
+ .append(helpName)
+ .append(SPACE_STR + HISTOGRAM_TYPE + END_LSTR);
+
+ promeMetrics.append(helpName)
+ .append(COUNT_ATTR).append(timer.getCount()).append(END_LSTR);
+ promeMetrics.append(helpName)
+ .append(ONE_MIN_RATE_ATRR).append(timer.getOneMinuteRate())
+ .append(END_LSTR);
+ promeMetrics.append(helpName)
+ .append(FIVE_MIN_RATE_ATRR).append(timer.getFiveMinuteRate())
+ .append(END_LSTR);
+ promeMetrics.append(helpName)
+ .append(FIFT_MIN_RATE_ATRR).append(timer.getFifteenMinuteRate())
+ .append(END_LSTR);
+ promeMetrics.append(
+ exportSnapshot(helpName, timer.getSnapshot()));
+ }
+ });
+ }
+
+ public static String exportSnapshot(final String helpName, final Snapshot snapshot) {
+ if (snapshot == null) {
+ return "";
+ }
+ StringBuilder snapMetrics = new StringBuilder();
+ snapMetrics.append(helpName)
+ .append(MIN_ATTR).append(snapshot.getMin()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(MAX_ATTR).append(snapshot.getMax()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(MEAN_ATTR).append(snapshot.getMean()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(STDDEV_ATTR).append(snapshot.getStdDev()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(P50_ATTR).append(snapshot.getMedian()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(P75_ATTR).append(snapshot.get75thPercentile()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(P95_ATTR).append(snapshot.get95thPercentile()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(P98_ATTR).append(snapshot.get98thPercentile()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(P99_ATTR).append(snapshot.get99thPercentile()).append(END_LSTR);
+ snapMetrics.append(helpName)
+ .append(P999_ATTR).append(snapshot.get999thPercentile()).append(END_LSTR);
+ return snapMetrics.toString();
+ }
+}
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/ServerReporter.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/ServerReporter.java
similarity index 100%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/metrics/ServerReporter.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/ServerReporter.java
diff --git a/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/SlowQueryLog.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/SlowQueryLog.java
new file mode 100644
index 0000000000..e55316c39e
--- /dev/null
+++ b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/SlowQueryLog.java
@@ -0,0 +1,53 @@
+/*
+ * 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.hugegraph.metrics;
+
+public class SlowQueryLog {
+
+ public String rawQuery;
+
+ public String method;
+
+ public String path;
+
+ public long executeTime;
+
+ public long startTime;
+
+ public long thresholdTime;
+
+ public SlowQueryLog(String rawQuery, String method, String path,
+ long executeTime, long startTime, long thresholdTime) {
+ this.rawQuery = rawQuery;
+ this.method = method;
+ this.path = path;
+ this.executeTime = executeTime;
+ this.startTime = startTime;
+ this.thresholdTime = thresholdTime;
+ }
+
+ @Override
+ public String toString() {
+ return "SlowQueryLog{executeTime=" + executeTime +
+ ", startTime=" + startTime +
+ ", rawQuery='" + rawQuery + '\'' +
+ ", method='" + method + '\'' +
+ ", threshold=" + thresholdTime +
+ ", path='" + path + '\'' +
+ '}';
+ }
+}
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/SystemMetrics.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/SystemMetrics.java
similarity index 100%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/metrics/SystemMetrics.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/metrics/SystemMetrics.java
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java
similarity index 100%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherOpProcessor.java
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherPlugin.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherPlugin.java
similarity index 100%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherPlugin.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/opencypher/CypherPlugin.java
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/rpc/RpcClientProviderWithAuth.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/rpc/RpcClientProviderWithAuth.java
similarity index 100%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/rpc/RpcClientProviderWithAuth.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/rpc/RpcClientProviderWithAuth.java
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/serializer/JsonSerializer.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/serializer/JsonSerializer.java
similarity index 100%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/serializer/JsonSerializer.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/serializer/JsonSerializer.java
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/serializer/Serializer.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/serializer/Serializer.java
similarity index 100%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/serializer/Serializer.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/serializer/Serializer.java
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/server/ApplicationConfig.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/server/ApplicationConfig.java
similarity index 93%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/server/ApplicationConfig.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/server/ApplicationConfig.java
index d70e6e0b29..a60510178c 100644
--- a/hugegraph-api/src/main/java/org/apache/hugegraph/server/ApplicationConfig.java
+++ b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/server/ApplicationConfig.java
@@ -44,8 +44,21 @@
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Contact;
import io.swagger.v3.oas.annotations.info.Info;
+import io.swagger.v3.oas.annotations.enums.SecuritySchemeType;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.security.SecurityScheme;
import jakarta.ws.rs.ApplicationPath;
+@SecurityScheme(
+ name = "basic",
+ type = SecuritySchemeType.HTTP,
+ scheme = "basic"
+)
+@SecurityScheme(
+ name = "bearer",
+ type = SecuritySchemeType.HTTP,
+ scheme = "bearer"
+)
@ApplicationPath("/")
@OpenAPIDefinition(
info = @Info(
@@ -53,7 +66,8 @@
version = CoreVersion.DEFAULT_VERSION,
description = "All management API for HugeGraph",
contact = @Contact(url = "https://github.com/apache/hugegraph", name = "HugeGraph")
- )
+ ),
+ security = {@SecurityRequirement(name = "basic"), @SecurityRequirement(name = "bearer")}
)
public class ApplicationConfig extends ResourceConfig {
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/server/RestServer.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/server/RestServer.java
similarity index 100%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/server/RestServer.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/server/RestServer.java
diff --git a/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java
similarity index 89%
rename from hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java
rename to hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java
index 117795c8d6..c75f65ab82 100644
--- a/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java
+++ b/hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/version/ApiVersion.java
@@ -20,6 +20,11 @@
import org.apache.hugegraph.util.VersionUtil;
import org.apache.hugegraph.util.VersionUtil.Version;
+/**
+ * This class represents the API version of the HugeGraph system.
+ * It contains a version number and a method to check the compatibility
+ * with the core version of the system.
+ */
public final class ApiVersion {
/*
@@ -29,7 +34,7 @@ public final class ApiVersion {
* [0.2] HugeGraph-527: First add the version to the hugegraph module
* [0.3] HugeGraph-525: Add versions check of components and api
* [0.4] HugeGraph-162: Add schema builder to separate client and inner interface.
- * [0.5] HugeGraph-498: Support three kind of id strategy
+ * [0.5] HugeGraph-498: Support three kinds of id strategy
*
* version 0.3:
*
@@ -41,12 +46,12 @@ public final class ApiVersion {
*
* version 0.4:
* [0.11] HugeGraph-938: Remove useless index-names field in VL/EL API
- * [0.12] HugeGraph-589: Add schema id for all schema element
+ * [0.12] HugeGraph-589: Add schema id for all schema elements
* [0.13] HugeGraph-956: Support customize string/number id strategy
*
* version 0.5:
* [0.14] HugeGraph-1085: Add enable_label_index to VL/EL
- * [0.15] HugeGraph-1105: Support paging for large amounts of records
+ * [0.15] HugeGraph-1105: Support paging for large numbers of records
* [0.16] HugeGraph-944: Support rest shortest path, k-out, k-neighbor
* [0.17] HugeGraph-944: Support rest shortest path, k-out, k-neighbor
* [0.18] HugeGraph-81: Change argument "checkVertex" to "check_vertex"
@@ -75,7 +80,7 @@ public final class ApiVersion {
* [0.34] Issue-307: Let VertexAPI use simplified property serializer
* [0.35] Issue-287: Support pagination when do index query
* [0.36] Issue-360: Support paging for scan api
- * [0.37] Issue-391: Add skip_super_node for shortest path
+ * [0.37] Issue-391: Add skip_super_node for the shortest path
* [0.38] Issue-274: Add personal-rank and neighbor-rank RESTful API
*
* version 0.10:
@@ -114,15 +119,18 @@ public final class ApiVersion {
* [0.67] Issue-1065: Support dynamically add/remove graph
* [0.68] Issue-1763: Support adamic-adar & resource-allocation API
* [0.69] Issue-1748: Support Cypher query RESTful API
+ * [0.70] PR-2242: Add edge-existence RESTful API
+ * [0.71] PR-2286: Support Arthas API & Metric API prometheus format
*/
/**
* The second parameter of Version.of() is for IDE running without JAR
+ * Note: Also update the version number in hugegraph-api/pom.xml
*/
- public static final Version VERSION = Version.of(ApiVersion.class, "0.69");
+ public static final Version VERSION = Version.of(ApiVersion.class, "0.71");
public static void check() {
- // Check version of hugegraph-core. Firstly do check from version 0.3
- VersionUtil.check(CoreVersion.VERSION, "1.0", "1.1", CoreVersion.NAME);
+ // Check the version of hugegraph-core. Do first check from version 0.3
+ VersionUtil.check(CoreVersion.VERSION, "1.0", "1.6", CoreVersion.NAME);
}
}
diff --git a/hugegraph-api/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin b/hugegraph-server/hugegraph-api/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin
similarity index 100%
rename from hugegraph-api/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin
rename to hugegraph-server/hugegraph-api/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.jsr223.GremlinPlugin
diff --git a/hugegraph-api/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.server.OpProcessor b/hugegraph-server/hugegraph-api/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.server.OpProcessor
similarity index 100%
rename from hugegraph-api/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.server.OpProcessor
rename to hugegraph-server/hugegraph-api/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.server.OpProcessor
diff --git a/hugegraph-cassandra/pom.xml b/hugegraph-server/hugegraph-cassandra/pom.xml
similarity index 97%
rename from hugegraph-cassandra/pom.xml
rename to hugegraph-server/hugegraph-cassandra/pom.xml
index 92ad5f6f56..888f6dd7f8 100644
--- a/hugegraph-cassandra/pom.xml
+++ b/hugegraph-server/hugegraph-cassandra/pom.xml
@@ -20,7 +20,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
org.apache.hugegraph
- hugegraph
+ hugegraph-server
${revision}
../pom.xml
@@ -37,7 +37,7 @@
org.apache.cassandra
cassandra-all
- 3.11.12
+ 4.0.10
org.slf4j
diff --git a/hugegraph-cassandra/src/main/java/com/datastax/driver/core/querybuilder/Clauses.java b/hugegraph-server/hugegraph-cassandra/src/main/java/com/datastax/driver/core/querybuilder/Clauses.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/com/datastax/driver/core/querybuilder/Clauses.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/com/datastax/driver/core/querybuilder/Clauses.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraBackendEntry.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraBackendEntry.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraBackendEntry.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraBackendEntry.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraEntryIterator.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraEntryIterator.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraEntryIterator.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraEntryIterator.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraFeatures.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraFeatures.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraFeatures.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraFeatures.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraMetrics.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraMetrics.java
similarity index 97%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraMetrics.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraMetrics.java
index 8759346764..f2f2931c62 100644
--- a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraMetrics.java
+++ b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraMetrics.java
@@ -112,7 +112,7 @@ protected Map getMetricsByHost(String host) {
metrics.put(DISK_USAGE, UnitUtil.bytesToGB(diskSize));
metrics.put(DISK_USAGE + READABLE,
UnitUtil.bytesToReadableString(diskSize));
- metrics.put(DISK_USAGE + "_details", probe.getLoadMap());
+ metrics.put(DISK_USAGE + "_details", probe.getLoadMap(false));
metrics.put(DISK_UNIT, "GB");
// Uptime Metrics
@@ -125,11 +125,11 @@ protected Map getMetricsByHost(String host) {
this.appendExtraMetrics(metrics, probe);
// Nodes Metrics
- metrics.put("live_nodes", probe.getLiveNodes());
- metrics.put("joining_nodes", probe.getJoiningNodes());
- metrics.put("moving_nodes", probe.getMovingNodes());
- metrics.put("leaving_nodes", probe.getLeavingNodes());
- metrics.put("unreachable_nodes", probe.getUnreachableNodes());
+ metrics.put("live_nodes", probe.getLiveNodes(false));
+ metrics.put("joining_nodes", probe.getJoiningNodes(false));
+ metrics.put("moving_nodes", probe.getMovingNodes(false));
+ metrics.put("leaving_nodes", probe.getLeavingNodes(false));
+ metrics.put("unreachable_nodes", probe.getUnreachableNodes(false));
// Others
metrics.put("keyspaces", probe.getKeyspaces());
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraOptions.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraOptions.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraOptions.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraOptions.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraSerializer.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraSerializer.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraSerializer.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraSerializer.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraSessionPool.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraSessionPool.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraSessionPool.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraSessionPool.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraShard.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraShard.java
similarity index 99%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraShard.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraShard.java
index c5734f62e7..9bcefb6aa4 100644
--- a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraShard.java
+++ b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraShard.java
@@ -32,7 +32,7 @@
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
-import org.apache.cassandra.config.SchemaConstants;
+import org.apache.cassandra.schema.SchemaConstants;
import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.dht.ByteOrderedPartitioner;
import org.apache.cassandra.dht.IPartitioner;
@@ -222,7 +222,7 @@ private static Map describeSplits(
"WHERE keyspace_name = ? AND table_name = ? AND " +
"range_start = ? AND range_end = ?",
SchemaConstants.SYSTEM_KEYSPACE_NAME,
- SystemKeyspace.SIZE_ESTIMATES);
+ SystemKeyspace.LEGACY_SIZE_ESTIMATES);
ResultSet resultSet = session.execute(query, keyspace, table,
tokenRange.getStart().toString(),
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraStore.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraStore.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraStore.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraStore.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraStoreProvider.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraStoreProvider.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraStoreProvider.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraStoreProvider.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraTable.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraTable.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraTable.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraTable.java
diff --git a/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraTables.java b/hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraTables.java
similarity index 100%
rename from hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraTables.java
rename to hugegraph-server/hugegraph-cassandra/src/main/java/org/apache/hugegraph/backend/store/cassandra/CassandraTables.java
diff --git a/hugegraph-core/pom.xml b/hugegraph-server/hugegraph-core/pom.xml
similarity index 92%
rename from hugegraph-core/pom.xml
rename to hugegraph-server/hugegraph-core/pom.xml
index 8a0cb6b210..bdbb2ace43 100644
--- a/hugegraph-core/pom.xml
+++ b/hugegraph-server/hugegraph-core/pom.xml
@@ -14,13 +14,13 @@
License for the specific language governing permissions and limitations
under the License.
-->
-
4.0.0
org.apache.hugegraph
- hugegraph
+ hugegraph-server
${revision}
../pom.xml
@@ -52,6 +52,23 @@
hugegraph-common
+
+
+ org.glassfish.jersey.core
+ jersey-client
+ ${jersey.version}
+
+
+ org.glassfish.jersey.connectors
+ jersey-apache-connector
+ ${jersey.version}
+
+
+ org.glassfish.jersey.inject
+ jersey-hk2
+ ${jersey.version}
+
+
org.apache.tinkerpop
@@ -287,10 +304,13 @@
protobuf-maven-plugin
0.6.1
- com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
+
+ com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}
+
protoc-java
${project.basedir}/src/main/resources/proto
- ${basedir}/target/generated-sources/protobuf/java
+ ${basedir}/target/generated-sources/protobuf/java
+
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/HugeException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/HugeException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/HugeFactory.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeFactory.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/HugeFactory.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeFactory.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraph.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraph.java
similarity index 98%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraph.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraph.java
index cd287c47be..85c093e59e 100644
--- a/hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraph.java
+++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraph.java
@@ -30,6 +30,7 @@
import org.apache.hugegraph.backend.store.raft.RaftGroupManager;
import org.apache.hugegraph.config.HugeConfig;
import org.apache.hugegraph.config.TypedOption;
+import org.apache.hugegraph.masterelection.GlobalMasterInfo;
import org.apache.hugegraph.masterelection.RoleElectionStateMachine;
import org.apache.hugegraph.rpc.RpcServiceConfig4Client;
import org.apache.hugegraph.rpc.RpcServiceConfig4Server;
@@ -44,12 +45,11 @@
import org.apache.hugegraph.task.TaskScheduler;
import org.apache.hugegraph.traversal.optimize.HugeCountStepStrategy;
import org.apache.hugegraph.traversal.optimize.HugeGraphStepStrategy;
-import org.apache.hugegraph.traversal.optimize.HugeVertexStepStrategy;
import org.apache.hugegraph.traversal.optimize.HugePrimaryKeyStrategy;
+import org.apache.hugegraph.traversal.optimize.HugeVertexStepStrategy;
import org.apache.hugegraph.type.HugeType;
import org.apache.hugegraph.type.define.GraphMode;
import org.apache.hugegraph.type.define.GraphReadMode;
-import org.apache.hugegraph.type.define.NodeRole;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -201,7 +201,7 @@ public interface HugeGraph extends Graph {
void waitReady(RpcServer rpcServer);
- void serverStarted(Id serverId, NodeRole serverRole);
+ void serverStarted(GlobalMasterInfo nodeInfo);
boolean started();
@@ -221,7 +221,7 @@ public interface HugeGraph extends Graph {
void resumeSnapshot();
- void create(String configPath, Id server, NodeRole role);
+ void create(String configPath, GlobalMasterInfo nodeInfo);
void drop();
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraphParams.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraphParams.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraphParams.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/HugeGraphParams.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/StandardHugeGraph.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/StandardHugeGraph.java
similarity index 96%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/StandardHugeGraph.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/StandardHugeGraph.java
index db37d0a4bd..c671056e04 100644
--- a/hugegraph-core/src/main/java/org/apache/hugegraph/StandardHugeGraph.java
+++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/StandardHugeGraph.java
@@ -51,7 +51,6 @@
import org.apache.hugegraph.backend.store.raft.RaftBackendStoreProvider;
import org.apache.hugegraph.backend.store.raft.RaftGroupManager;
import org.apache.hugegraph.backend.store.ram.RamTable;
-import org.apache.hugegraph.task.EphemeralJobQueue;
import org.apache.hugegraph.backend.tx.GraphTransaction;
import org.apache.hugegraph.backend.tx.SchemaTransaction;
import org.apache.hugegraph.config.CoreOptions;
@@ -64,6 +63,7 @@
import org.apache.hugegraph.job.EphemeralJob;
import org.apache.hugegraph.masterelection.ClusterRoleStore;
import org.apache.hugegraph.masterelection.Config;
+import org.apache.hugegraph.masterelection.GlobalMasterInfo;
import org.apache.hugegraph.masterelection.RoleElectionConfig;
import org.apache.hugegraph.masterelection.RoleElectionOptions;
import org.apache.hugegraph.masterelection.RoleElectionStateMachine;
@@ -84,13 +84,13 @@
import org.apache.hugegraph.structure.HugeFeatures;
import org.apache.hugegraph.structure.HugeVertex;
import org.apache.hugegraph.structure.HugeVertexProperty;
+import org.apache.hugegraph.task.EphemeralJobQueue;
import org.apache.hugegraph.task.ServerInfoManager;
import org.apache.hugegraph.task.TaskManager;
import org.apache.hugegraph.task.TaskScheduler;
import org.apache.hugegraph.type.HugeType;
import org.apache.hugegraph.type.define.GraphMode;
import org.apache.hugegraph.type.define.GraphReadMode;
-import org.apache.hugegraph.type.define.NodeRole;
import org.apache.hugegraph.util.ConfigUtil;
import org.apache.hugegraph.util.DateUtil;
import org.apache.hugegraph.util.E;
@@ -267,15 +267,15 @@ public BackendFeatures backendStoreFeatures() {
}
@Override
- public void serverStarted(Id serverId, NodeRole serverRole) {
+ public void serverStarted(GlobalMasterInfo nodeInfo) {
LOG.info("Init system info for graph '{}'", this.name);
this.initSystemInfo();
LOG.info("Init server info [{}-{}] for graph '{}'...",
- serverId, serverRole, this.name);
- this.serverInfoManager().initServerInfo(serverId, serverRole);
+ nodeInfo.nodeId(), nodeInfo.nodeRole(), this.name);
+ this.serverInfoManager().initServerInfo(nodeInfo);
- this.initRoleStateWorker(serverId);
+ this.initRoleStateMachine(nodeInfo.nodeId());
// TODO: check necessary?
LOG.info("Check olap property-key tables for graph '{}'", this.name);
@@ -291,16 +291,18 @@ public void serverStarted(Id serverId, NodeRole serverRole) {
this.started = true;
}
- private void initRoleStateWorker(Id serverId) {
- Config roleStateMachineConfig = new RoleElectionConfig(serverId.toString(),
- this.configuration.get(RoleElectionOptions.NODE_EXTERNAL_URL),
- this.configuration.get(RoleElectionOptions.EXCEEDS_FAIL_COUNT),
- this.configuration.get(RoleElectionOptions.RANDOM_TIMEOUT_MILLISECOND),
- this.configuration.get(RoleElectionOptions.HEARTBEAT_INTERVAL_SECOND),
- this.configuration.get(RoleElectionOptions.MASTER_DEAD_TIMES),
- this.configuration.get(RoleElectionOptions.BASE_TIMEOUT_MILLISECOND));
- ClusterRoleStore clusterRoleStore = new StandardClusterRoleStore(this.params);
- this.roleElectionStateMachine = new StandardRoleElectionStateMachine(roleStateMachineConfig, clusterRoleStore);
+ private void initRoleStateMachine(Id serverId) {
+ HugeConfig conf = this.configuration;
+ Config roleConfig = new RoleElectionConfig(serverId.toString(),
+ conf.get(RoleElectionOptions.NODE_EXTERNAL_URL),
+ conf.get(RoleElectionOptions.EXCEEDS_FAIL_COUNT),
+ conf.get(RoleElectionOptions.RANDOM_TIMEOUT_MILLISECOND),
+ conf.get(RoleElectionOptions.HEARTBEAT_INTERVAL_SECOND),
+ conf.get(RoleElectionOptions.MASTER_DEAD_TIMES),
+ conf.get(RoleElectionOptions.BASE_TIMEOUT_MILLISECOND));
+ ClusterRoleStore roleStore = new StandardClusterRoleStore(this.params);
+ this.roleElectionStateMachine = new StandardRoleElectionStateMachine(roleConfig,
+ roleStore);
}
@Override
@@ -399,8 +401,7 @@ public void truncateBackend() {
try {
this.storeProvider.truncate();
// TODO: remove this after serverinfo saved in etcd
- this.serverStarted(this.serverInfoManager().selfServerId(),
- this.serverInfoManager().selfServerRole());
+ this.serverStarted(this.serverInfoManager().globalNodeRoleInfo());
} finally {
LockUtil.unlock(this.name, LockUtil.GRAPH_LOCK);
}
@@ -974,9 +975,9 @@ public synchronized void close() throws Exception {
}
@Override
- public void create(String configPath, Id server, NodeRole role) {
+ public void create(String configPath, GlobalMasterInfo nodeInfo) {
this.initBackend();
- this.serverStarted(server, role);
+ this.serverStarted(nodeInfo);
// Write config to disk file
String confPath = ConfigUtil.writeToFile(configPath, this.name(),
@@ -1052,8 +1053,7 @@ public TaskScheduler taskScheduler() {
}
private ServerInfoManager serverInfoManager() {
- ServerInfoManager manager = this.taskManager
- .getServerInfoManager(this.params);
+ ServerInfoManager manager = this.taskManager.getServerInfoManager(this.params);
E.checkState(manager != null,
"Can't find server info manager for graph '%s'", this);
return manager;
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/Analyzer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/Analyzer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/Analyzer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/Analyzer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/AnalyzerFactory.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/AnalyzerFactory.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/AnalyzerFactory.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/AnalyzerFactory.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/AnsjAnalyzer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/AnsjAnalyzer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/AnsjAnalyzer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/AnsjAnalyzer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/HanLPAnalyzer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/HanLPAnalyzer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/HanLPAnalyzer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/HanLPAnalyzer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/IKAnalyzer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/IKAnalyzer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/IKAnalyzer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/IKAnalyzer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/JcsegAnalyzer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/JcsegAnalyzer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/JcsegAnalyzer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/JcsegAnalyzer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/JiebaAnalyzer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/JiebaAnalyzer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/JiebaAnalyzer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/JiebaAnalyzer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/MMSeg4JAnalyzer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/MMSeg4JAnalyzer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/MMSeg4JAnalyzer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/MMSeg4JAnalyzer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/SmartCNAnalyzer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/SmartCNAnalyzer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/SmartCNAnalyzer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/analyzer/SmartCNAnalyzer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthConstant.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthConstant.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthConstant.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthConstant.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthManager.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthManager.java
similarity index 95%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthManager.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthManager.java
index 2dba7c7a15..908eed01f1 100644
--- a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthManager.java
+++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/AuthManager.java
@@ -126,4 +126,12 @@ public interface AuthManager {
UserWithRole validateUser(String username, String password);
UserWithRole validateUser(String token);
+
+ Set listWhiteIPs();
+
+ void setWhiteIPs(Set whiteIpList);
+
+ boolean getWhiteIpStatus();
+
+ void enabledWhiteIpList(boolean status);
}
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/EntityManager.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/EntityManager.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/EntityManager.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/EntityManager.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeAccess.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeAccess.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeAccess.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeAccess.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeBelong.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeBelong.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeBelong.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeBelong.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeGroup.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeGroup.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeGroup.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeGroup.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugePermission.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugePermission.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugePermission.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugePermission.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeProject.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeProject.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeProject.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeProject.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeResource.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeResource.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeResource.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeResource.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeTarget.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeTarget.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeTarget.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeTarget.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeUser.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeUser.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeUser.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/HugeUser.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/RelationshipManager.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/RelationshipManager.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/RelationshipManager.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/RelationshipManager.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/ResourceObject.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/ResourceObject.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/ResourceObject.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/ResourceObject.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/ResourceType.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/ResourceType.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/ResourceType.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/ResourceType.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/RolePermission.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/RolePermission.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/RolePermission.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/RolePermission.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/SchemaDefine.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/SchemaDefine.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/SchemaDefine.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/SchemaDefine.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/StandardAuthManager.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/StandardAuthManager.java
similarity index 97%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/StandardAuthManager.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/StandardAuthManager.java
index 910f19cdc5..123c8e9ffd 100644
--- a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/StandardAuthManager.java
+++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/StandardAuthManager.java
@@ -27,31 +27,30 @@
import javax.security.sasl.AuthenticationException;
-import jakarta.ws.rs.ForbiddenException;
-
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.hugegraph.HugeException;
+import org.apache.hugegraph.HugeGraphParams;
+import org.apache.hugegraph.auth.HugeUser.P;
+import org.apache.hugegraph.auth.SchemaDefine.AuthElement;
import org.apache.hugegraph.backend.cache.Cache;
import org.apache.hugegraph.backend.cache.CacheManager;
import org.apache.hugegraph.backend.id.Id;
import org.apache.hugegraph.backend.id.IdGenerator;
import org.apache.hugegraph.config.AuthOptions;
+import org.apache.hugegraph.config.HugeConfig;
import org.apache.hugegraph.type.define.Directions;
+import org.apache.hugegraph.util.E;
import org.apache.hugegraph.util.LockUtil;
+import org.apache.hugegraph.util.Log;
import org.apache.hugegraph.util.StringEncoding;
import org.slf4j.Logger;
-import org.apache.hugegraph.HugeException;
-import org.apache.hugegraph.HugeGraphParams;
-import org.apache.hugegraph.auth.HugeUser.P;
-import org.apache.hugegraph.auth.SchemaDefine.AuthElement;
-import org.apache.hugegraph.config.HugeConfig;
-import org.apache.hugegraph.util.E;
-import org.apache.hugegraph.util.Log;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import io.jsonwebtoken.Claims;
+import jakarta.ws.rs.ForbiddenException;
public class StandardAuthManager implements AuthManager {
@@ -77,6 +76,10 @@ public class StandardAuthManager implements AuthManager {
private final TokenGenerator tokenGenerator;
private final long tokenExpire;
+ private Set ipWhiteList;
+
+ private Boolean ipWhiteListEnabled;
+
public StandardAuthManager(HugeGraphParams graph) {
E.checkNotNull(graph, "graph");
HugeConfig config = graph.configuration();
@@ -104,6 +107,10 @@ public StandardAuthManager(HugeGraphParams graph) {
HugeAccess::fromEdge);
this.tokenGenerator = new TokenGenerator(config);
+
+ this.ipWhiteList = new HashSet<>();
+
+ this.ipWhiteListEnabled = false;
}
private Cache cache(String prefix, long capacity,
@@ -689,6 +696,26 @@ public UserWithRole validateUser(String token) {
return new UserWithRole(user.id(), username, this.rolePermission(user));
}
+ @Override
+ public Set listWhiteIPs() {
+ return ipWhiteList;
+ }
+
+ @Override
+ public void setWhiteIPs(Set ipWhiteList) {
+ this.ipWhiteList = ipWhiteList;
+ }
+
+ @Override
+ public boolean getWhiteIpStatus() {
+ return this.ipWhiteListEnabled;
+ }
+
+ @Override
+ public void enabledWhiteIpList(boolean status) {
+ this.ipWhiteListEnabled = status;
+ }
+
/**
* Maybe can define an proxy class to choose forward or call local
*/
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/TokenGenerator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/TokenGenerator.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/TokenGenerator.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/TokenGenerator.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/auth/UserWithRole.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/UserWithRole.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/auth/UserWithRole.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/auth/UserWithRole.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/BackendException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/BackendException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/BackendException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/BackendException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/LocalCounter.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/LocalCounter.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/LocalCounter.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/LocalCounter.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/Transaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/Transaction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/Transaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/Transaction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/AbstractCache.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/AbstractCache.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/AbstractCache.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/AbstractCache.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/Cache.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/Cache.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/Cache.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/Cache.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CacheManager.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CacheManager.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CacheManager.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CacheManager.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CacheNotifier.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CacheNotifier.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CacheNotifier.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CacheNotifier.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedBackendStore.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedBackendStore.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedBackendStore.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedBackendStore.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedGraphTransaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedGraphTransaction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedGraphTransaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedGraphTransaction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedSchemaTransaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedSchemaTransaction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedSchemaTransaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/CachedSchemaTransaction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/LevelCache.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/LevelCache.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/LevelCache.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/LevelCache.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/OffheapCache.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/OffheapCache.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/OffheapCache.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/OffheapCache.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/RamCache.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/RamCache.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/RamCache.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/cache/RamCache.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/EdgeId.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/EdgeId.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/EdgeId.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/EdgeId.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/Id.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/Id.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/Id.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/Id.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/IdGenerator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/IdGenerator.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/IdGenerator.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/IdGenerator.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/IdUtil.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/IdUtil.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/IdUtil.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/IdUtil.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SnowflakeIdGenerator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SnowflakeIdGenerator.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SnowflakeIdGenerator.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SnowflakeIdGenerator.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SplicingIdGenerator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SplicingIdGenerator.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SplicingIdGenerator.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/id/SplicingIdGenerator.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/IdHolder.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/IdHolder.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/IdHolder.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/IdHolder.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/IdHolderList.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/IdHolderList.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/IdHolderList.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/IdHolderList.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageEntryIterator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageEntryIterator.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageEntryIterator.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageEntryIterator.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageIds.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageIds.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageIds.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageIds.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageInfo.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageInfo.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageInfo.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageInfo.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageState.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageState.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageState.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/PageState.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/QueryList.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/QueryList.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/QueryList.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/QueryList.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/SortByCountIdHolderList.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/SortByCountIdHolderList.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/SortByCountIdHolderList.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/page/SortByCountIdHolderList.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Aggregate.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Aggregate.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Aggregate.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Aggregate.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/BatchConditionQuery.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/BatchConditionQuery.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/BatchConditionQuery.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/BatchConditionQuery.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Condition.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Condition.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Condition.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Condition.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/ConditionQuery.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/ConditionQuery.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/ConditionQuery.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/ConditionQuery.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/ConditionQueryFlatten.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/ConditionQueryFlatten.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/ConditionQueryFlatten.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/ConditionQueryFlatten.java
diff --git a/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/EdgesQueryIterator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/EdgesQueryIterator.java
new file mode 100644
index 0000000000..4ab9a8859a
--- /dev/null
+++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/EdgesQueryIterator.java
@@ -0,0 +1,64 @@
+/*
+ * 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.hugegraph.backend.query;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.hugegraph.backend.id.Id;
+import org.apache.hugegraph.backend.tx.GraphTransaction;
+import org.apache.hugegraph.type.define.Directions;
+
+public class EdgesQueryIterator implements Iterator {
+
+ private final List labels;
+ private final Directions directions;
+ private final long limit;
+ private final Iterator sources;
+
+ public EdgesQueryIterator(Iterator sources,
+ Directions directions,
+ List labels,
+ long limit) {
+ this.sources = sources;
+ this.labels = labels;
+ this.directions = directions;
+ // Traverse NO_LIMIT 和 Query.NO_LIMIT 不同
+ this.limit = limit < 0 ? Query.NO_LIMIT : limit;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return sources.hasNext();
+ }
+
+ @Override
+ public Query next() {
+ Id sourceId = this.sources.next();
+ ConditionQuery query = GraphTransaction.constructEdgesQuery(sourceId,
+ this.directions,
+ this.labels);
+ if (this.limit != Query.NO_LIMIT) {
+ query.limit(this.limit);
+ query.capacity(this.limit);
+ } else {
+ query.capacity(Query.NO_CAPACITY);
+ }
+ return query;
+ }
+}
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdPrefixQuery.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdPrefixQuery.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdPrefixQuery.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdPrefixQuery.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdQuery.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdQuery.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdQuery.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdQuery.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdRangeQuery.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdRangeQuery.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdRangeQuery.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/IdRangeQuery.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Query.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Query.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Query.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/Query.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/QueryResults.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/QueryResults.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/QueryResults.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/query/QueryResults.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/AbstractSerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/AbstractSerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/AbstractSerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/AbstractSerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryBackendEntry.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryBackendEntry.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryBackendEntry.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryBackendEntry.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryEntryIterator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryEntryIterator.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryEntryIterator.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryEntryIterator.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryScatterSerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryScatterSerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryScatterSerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinaryScatterSerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinarySerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinarySerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinarySerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BinarySerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BytesBuffer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BytesBuffer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BytesBuffer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/BytesBuffer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/GraphSerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/GraphSerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/GraphSerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/GraphSerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/MergeIterator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/MergeIterator.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/MergeIterator.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/MergeIterator.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/SchemaSerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/SchemaSerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/SchemaSerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/SchemaSerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/SerializerFactory.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/SerializerFactory.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/SerializerFactory.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/SerializerFactory.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TableBackendEntry.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TableBackendEntry.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TableBackendEntry.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TableBackendEntry.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TableSerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TableSerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TableSerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TableSerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TextBackendEntry.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TextBackendEntry.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TextBackendEntry.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TextBackendEntry.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TextSerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TextSerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TextSerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/serializer/TextSerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/AbstractBackendStore.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/AbstractBackendStore.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/AbstractBackendStore.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/AbstractBackendStore.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/AbstractBackendStoreProvider.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/AbstractBackendStoreProvider.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/AbstractBackendStoreProvider.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/AbstractBackendStoreProvider.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendAction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendAction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendAction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendAction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendEntry.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendEntry.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendEntry.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendEntry.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendEntryIterator.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendEntryIterator.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendEntryIterator.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendEntryIterator.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendFeatures.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendFeatures.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendFeatures.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendFeatures.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendMetrics.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendMetrics.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendMetrics.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendMetrics.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendMutation.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendMutation.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendMutation.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendMutation.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendProviderFactory.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendProviderFactory.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendProviderFactory.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendProviderFactory.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendSession.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendSession.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendSession.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendSession.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendSessionPool.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendSessionPool.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendSessionPool.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendSessionPool.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStore.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStore.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStore.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStore.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStoreInfo.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStoreInfo.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStoreInfo.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStoreInfo.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStoreProvider.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStoreProvider.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStoreProvider.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendStoreProvider.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendTable.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendTable.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendTable.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/BackendTable.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/MetaDispatcher.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/MetaDispatcher.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/MetaDispatcher.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/MetaDispatcher.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/MetaHandler.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/MetaHandler.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/MetaHandler.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/MetaHandler.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/Shard.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/Shard.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/Shard.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/Shard.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/SystemSchemaStore.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/SystemSchemaStore.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/SystemSchemaStore.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/SystemSchemaStore.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/TableDefine.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/TableDefine.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/TableDefine.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/TableDefine.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBStore.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBStore.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBStore.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBStore.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBStoreProvider.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBStoreProvider.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBStoreProvider.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBStoreProvider.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTable.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTable.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTable.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTable.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTables.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTables.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTables.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryDBTables.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryMetrics.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryMetrics.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryMetrics.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/memory/InMemoryMetrics.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftAddPeerJob.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftAddPeerJob.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftAddPeerJob.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftAddPeerJob.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftBackendStore.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftBackendStore.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftBackendStore.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftBackendStore.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftBackendStoreProvider.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftBackendStoreProvider.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftBackendStoreProvider.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftBackendStoreProvider.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftClosure.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftClosure.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftClosure.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftClosure.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftContext.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftContext.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftContext.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftContext.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftGroupManager.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftGroupManager.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftGroupManager.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftGroupManager.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftGroupManagerImpl.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftGroupManagerImpl.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftGroupManagerImpl.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftGroupManagerImpl.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftNode.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftNode.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftNode.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftNode.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftRemovePeerJob.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftRemovePeerJob.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftRemovePeerJob.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftRemovePeerJob.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftResult.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftResult.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftResult.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftResult.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftStoreClosure.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftStoreClosure.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftStoreClosure.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/RaftStoreClosure.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreCommand.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreCommand.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreCommand.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreCommand.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreSerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreSerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreSerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreSerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreSnapshotFile.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreSnapshotFile.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreSnapshotFile.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreSnapshotFile.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreStateMachine.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreStateMachine.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreStateMachine.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/StoreStateMachine.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/CompressStrategy.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/CompressStrategy.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/CompressStrategy.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/CompressStrategy.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/CompressStrategyManager.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/CompressStrategyManager.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/CompressStrategyManager.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/CompressStrategyManager.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/ParallelCompressStrategy.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/ParallelCompressStrategy.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/ParallelCompressStrategy.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/ParallelCompressStrategy.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/SerialCompressStrategy.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/SerialCompressStrategy.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/SerialCompressStrategy.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/compress/SerialCompressStrategy.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/AddPeerProcessor.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/AddPeerProcessor.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/AddPeerProcessor.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/AddPeerProcessor.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/ListPeersProcessor.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/ListPeersProcessor.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/ListPeersProcessor.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/ListPeersProcessor.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/RemovePeerProcessor.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/RemovePeerProcessor.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/RemovePeerProcessor.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/RemovePeerProcessor.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/RpcForwarder.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/RpcForwarder.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/RpcForwarder.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/RpcForwarder.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/SetLeaderProcessor.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/SetLeaderProcessor.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/SetLeaderProcessor.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/SetLeaderProcessor.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/StoreCommandProcessor.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/StoreCommandProcessor.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/StoreCommandProcessor.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/raft/rpc/StoreCommandProcessor.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntIntMap.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntIntMap.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntIntMap.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntIntMap.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntLongMap.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntLongMap.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntLongMap.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntLongMap.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntObjectMap.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntObjectMap.java
similarity index 91%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntObjectMap.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntObjectMap.java
index 78af531a07..735f423ce8 100644
--- a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntObjectMap.java
+++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/IntObjectMap.java
@@ -29,8 +29,8 @@ public final class IntObjectMap implements RamMap {
private static final float DEFAULT_INITIAL_FACTOR = 0.25f;
private final int maxSize;
- private int currentSize;
- private Object[] array;
+ private volatile int currentSize;
+ private volatile Object[] array;
public IntObjectMap(int size) {
this.maxSize = size;
@@ -79,10 +79,11 @@ private synchronized void expandCapacity() {
if (this.currentSize == this.maxSize) {
return;
}
- this.currentSize = Math.min(this.currentSize * 2, this.maxSize);
- Object[] newArray = new Object[this.currentSize];
+ int newSize = Math.min(this.currentSize * 2, this.maxSize);
+ Object[] newArray = new Object[newSize];
System.arraycopy(this.array, 0, newArray, 0, this.array.length);
this.clear();
this.array = newArray;
+ this.currentSize = newSize;
}
}
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/RamMap.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/RamMap.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/RamMap.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/RamMap.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/RamTable.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/RamTable.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/RamTable.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/store/ram/RamTable.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/AbstractTransaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/AbstractTransaction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/AbstractTransaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/AbstractTransaction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphIndexTransaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphIndexTransaction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphIndexTransaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphIndexTransaction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphTransaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphTransaction.java
similarity index 99%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphTransaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphTransaction.java
index 0574318d74..3607129a6c 100644
--- a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphTransaction.java
+++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/GraphTransaction.java
@@ -1712,7 +1712,7 @@ private Iterator filterUnmatchedRecords(
Iterator results,
Query query) {
// Filter unused or incorrect records
- return new FilterIterator(results, elem -> {
+ return new FilterIterator<>(results, elem -> {
// TODO: Left vertex/edge should to be auto removed via async task
if (elem.schemaLabel().undefined()) {
LOG.warn("Left record is found: id={}, label={}, properties={}",
@@ -1861,7 +1861,7 @@ private Iterator> joinTxEdges(Query query, Iterator edges,
return edges;
}
// Filter edges that belong to deleted vertex
- return new FilterIterator(edges, edge -> {
+ return new FilterIterator<>(edges, edge -> {
for (HugeVertex v : removingVertices.values()) {
if (edge.belongToVertex(v)) {
return false;
@@ -1917,7 +1917,7 @@ private Iterator joinTxRecords(
!removedTxRecords.containsKey(id);
});
- return new ExtendableIterator(txResults.iterator(), backendResults);
+ return new ExtendableIterator<>(txResults.iterator(), backendResults);
}
private void checkTxVerticesCapacity() throws LimitExceedException {
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/IndexableTransaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/IndexableTransaction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/IndexableTransaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/IndexableTransaction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/SchemaIndexTransaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/SchemaIndexTransaction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/SchemaIndexTransaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/SchemaIndexTransaction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/SchemaTransaction.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/SchemaTransaction.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/SchemaTransaction.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/backend/tx/SchemaTransaction.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/config/AuthOptions.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/config/AuthOptions.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/config/AuthOptions.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/config/AuthOptions.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/config/CoreOptions.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/config/CoreOptions.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/config/CoreOptions.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/config/CoreOptions.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/exception/ConnectionException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/ConnectionException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/exception/ConnectionException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/ConnectionException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/exception/ExistedException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/ExistedException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/exception/ExistedException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/ExistedException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/exception/HugeGremlinException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/HugeGremlinException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/exception/HugeGremlinException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/HugeGremlinException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/exception/LimitExceedException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/LimitExceedException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/exception/LimitExceedException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/LimitExceedException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NoIndexException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NoIndexException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/exception/NoIndexException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NoIndexException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotAllowException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotAllowException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotAllowException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotAllowException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotFoundException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotFoundException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotFoundException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotFoundException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotSupportException.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotSupportException.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotSupportException.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/exception/NotSupportException.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/io/GraphSONSchemaSerializer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/io/GraphSONSchemaSerializer.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/io/GraphSONSchemaSerializer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/io/GraphSONSchemaSerializer.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGraphIoRegistry.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGraphIoRegistry.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGraphIoRegistry.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGraphIoRegistry.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGraphSONModule.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGraphSONModule.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGraphSONModule.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGraphSONModule.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGryoModule.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGryoModule.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGryoModule.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/io/HugeGryoModule.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/AlgorithmJob.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/AlgorithmJob.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/AlgorithmJob.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/AlgorithmJob.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/ComputerJob.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/ComputerJob.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/ComputerJob.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/ComputerJob.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/EphemeralJob.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/EphemeralJob.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/EphemeralJob.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/EphemeralJob.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/EphemeralJobBuilder.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/EphemeralJobBuilder.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/EphemeralJobBuilder.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/EphemeralJobBuilder.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/GremlinJob.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/GremlinJob.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/GremlinJob.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/GremlinJob.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/Job.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/Job.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/Job.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/Job.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/JobBuilder.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/JobBuilder.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/JobBuilder.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/JobBuilder.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/SysJob.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/SysJob.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/SysJob.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/SysJob.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/UserJob.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/UserJob.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/UserJob.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/UserJob.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/AbstractAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/AbstractAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/AbstractAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/AbstractAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/Algorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/Algorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/Algorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/Algorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/AlgorithmPool.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/AlgorithmPool.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/AlgorithmPool.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/AlgorithmPool.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/BfsTraverser.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/BfsTraverser.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/BfsTraverser.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/BfsTraverser.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/Consumers.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/Consumers.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/Consumers.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/Consumers.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/CountEdgeAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/CountEdgeAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/CountEdgeAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/CountEdgeAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/CountVertexAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/CountVertexAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/CountVertexAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/CountVertexAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/SubgraphStatAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/SubgraphStatAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/SubgraphStatAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/SubgraphStatAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/AbstractCentAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/AbstractCentAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/AbstractCentAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/AbstractCentAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/BetweennessCentralityAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/BetweennessCentralityAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/BetweennessCentralityAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/BetweennessCentralityAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/BetweennessCentralityAlgorithmV2.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/BetweennessCentralityAlgorithmV2.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/BetweennessCentralityAlgorithmV2.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/BetweennessCentralityAlgorithmV2.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithmV2.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithmV2.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithmV2.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithmV2.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/DegreeCentralityAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/DegreeCentralityAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/DegreeCentralityAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/DegreeCentralityAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/EigenvectorCentralityAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/EigenvectorCentralityAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/EigenvectorCentralityAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/EigenvectorCentralityAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/StressCentralityAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/StressCentralityAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/StressCentralityAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/StressCentralityAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/StressCentralityAlgorithmV2.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/StressCentralityAlgorithmV2.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/StressCentralityAlgorithmV2.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/cent/StressCentralityAlgorithmV2.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/AbstractCommAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/AbstractCommAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/AbstractCommAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/AbstractCommAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/ClusterCoefficientAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/ClusterCoefficientAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/ClusterCoefficientAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/ClusterCoefficientAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/KCoreAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LouvainAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LouvainAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LouvainAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LouvainAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LouvainTraverser.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LouvainTraverser.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LouvainTraverser.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LouvainTraverser.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LpaAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LpaAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LpaAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/LpaAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/TriangleCountAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/TriangleCountAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/TriangleCountAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/TriangleCountAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/WeakConnectedComponent.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/WeakConnectedComponent.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/WeakConnectedComponent.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/comm/WeakConnectedComponent.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/rank/PageRankAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/rank/PageRankAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/rank/PageRankAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/rank/PageRankAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/similarity/FusiformSimilarityAlgorithm.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/similarity/FusiformSimilarityAlgorithm.java
similarity index 100%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/similarity/FusiformSimilarityAlgorithm.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/algorithm/similarity/FusiformSimilarityAlgorithm.java
diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/job/computer/AbstractComputer.java b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/computer/AbstractComputer.java
similarity index 99%
rename from hugegraph-core/src/main/java/org/apache/hugegraph/job/computer/AbstractComputer.java
rename to hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/computer/AbstractComputer.java
index a40d0001b4..11207ebae5 100644
--- a/hugegraph-core/src/main/java/org/apache/hugegraph/job/computer/AbstractComputer.java
+++ b/hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/job/computer/AbstractComputer.java
@@ -32,16 +32,15 @@
import org.apache.commons.configuration2.tree.ImmutableNode;
import org.apache.commons.configuration2.tree.NodeHandler;
import org.apache.commons.configuration2.tree.NodeModel;
-import org.apache.hugegraph.type.define.Directions;
-import org.apache.hugegraph.util.ParameterUtil;
-import org.slf4j.Logger;
-
import org.apache.hugegraph.HugeException;
import org.apache.hugegraph.job.ComputerJob;
import org.apache.hugegraph.job.Job;
import org.apache.hugegraph.traversal.algorithm.HugeTraverser;
+import org.apache.hugegraph.type.define.Directions;
import org.apache.hugegraph.util.E;
import org.apache.hugegraph.util.Log;
+import org.apache.hugegraph.util.ParameterUtil;
+import org.slf4j.Logger;
public abstract class AbstractComputer implements Computer {
@@ -85,7 +84,6 @@ public void checkParameters(Map parameters) {
@Override
public Object call(Job