From eaa49012bef1ada56f4714a95d7b403a2a62ffde Mon Sep 17 00:00:00 2001 From: michele Date: Wed, 4 Sep 2019 16:14:08 +0200 Subject: [PATCH] code analysis fixes --- .../java/com/arangodb/ArangoCollection.java | 9 +- src/main/java/com/arangodb/ArangoDB.java | 37 +- .../java/com/arangodb/ArangoDatabase.java | 9 +- .../com/arangodb/ArangoEdgeCollection.java | 1 + src/main/java/com/arangodb/ArangoView.java | 1 + .../com/arangodb/entity/BaseDocument.java | 35 +- .../com/arangodb/entity/BaseEdgeDocument.java | 41 +- .../com/arangodb/entity/DocumentField.java | 4 +- .../arangodb/entity/DocumentImportEntity.java | 2 +- .../com/arangodb/entity/LogLevelEntity.java | 2 +- .../java/com/arangodb/entity/MetaAware.java | 4 +- .../entity/QueryCachePropertiesEntity.java | 2 +- .../com/arangodb/entity/ShardingStrategy.java | 8 +- .../arangosearch/ArangoSearchProperties.java | 4 +- .../entity/arangosearch/CollectionLink.java | 4 +- .../entity/arangosearch/FieldLink.java | 4 +- .../entity/arangosearch/PrimarySort.java | 6 +- .../com/arangodb/internal/ArangoContext.java | 2 +- .../com/arangodb/internal/ArangoDBImpl.java | 31 +- .../arangodb/internal/ArangoDatabaseImpl.java | 21 +- .../com/arangodb/internal/ArangoExecutor.java | 30 +- .../arangodb/internal/ArangoExecutorSync.java | 19 +- .../arangodb/internal/ArangoRouteImpl.java | 13 +- .../com/arangodb/internal/DocumentCache.java | 26 +- .../internal/InternalArangoCollection.java | 563 ++++++++---------- .../arangodb/internal/InternalArangoDB.java | 72 +-- .../internal/InternalArangoDBBuilder.java | 85 ++- .../internal/InternalArangoDatabase.java | 216 +++---- .../InternalArangoEdgeCollection.java | 70 +-- .../internal/InternalArangoGraph.java | 45 +- .../internal/InternalArangoRoute.java | 10 +- .../InternalArangoVertexCollection.java | 70 +-- .../cursor/AbstractArangoIterable.java | 10 +- .../internal/cursor/ArangoCursorImpl.java | 12 +- .../internal/cursor/ArangoFilterIterable.java | 2 +- .../cursor/ArangoMappingIterable.java | 2 +- .../internal/http/HttpCommunication.java | 22 +- .../internal/http/HttpConnection.java | 144 ++--- .../arangodb/internal/http/HttpProtocol.java | 8 +- .../internal/net/ConnectionPoolImpl.java | 13 +- .../internal/net/DirtyReadHostHandler.java | 6 +- .../internal/net/ExtendedHostResolver.java | 53 +- .../internal/net/FallbackHostHandler.java | 3 +- .../internal/net/HostDescription.java | 5 +- .../com/arangodb/internal/net/HostImpl.java | 11 +- .../com/arangodb/internal/net/HostSet.java | 12 +- .../internal/net/RandomHostHandler.java | 8 +- .../internal/net/RoundRobinHostHandler.java | 4 +- .../internal/util/ArangoSerializerImpl.java | 8 +- .../arangodb/internal/util/CURLLogger.java | 11 +- .../arangodb/internal/util/DocumentUtil.java | 6 +- .../com/arangodb/internal/util/HostUtils.java | 8 +- .../com/arangodb/internal/util/IOUtils.java | 10 +- .../arangodb/internal/util/RequestUtils.java | 7 +- .../velocypack/VPackDeserializers.java | 380 ++++-------- .../velocypack/VPackDriverModule.java | 33 +- .../internal/velocypack/VPackSerializers.java | 344 ++++------- .../velocystream/VstCommunication.java | 31 +- .../velocystream/internal/ChunkStore.java | 2 +- .../velocystream/internal/MessageStore.java | 15 +- .../velocystream/internal/VstConnection.java | 101 ++-- .../internal/VstConnectionSync.java | 17 +- .../com/arangodb/model/AqlQueryOptions.java | 8 +- .../java/com/arangodb/model/IndexOptions.java | 2 - .../model/PersistentIndexOptions.java | 2 +- .../com/arangodb/model/TraversalOptions.java | 10 +- .../com/arangodb/util/ArangoSerializer.java | 8 +- .../java/com/arangodb/util/MapBuilder.java | 2 +- .../com/arangodb/velocystream/Request.java | 10 +- .../arangodb/velocystream/RequestType.java | 2 +- .../com/arangodb/velocystream/Response.java | 8 +- 71 files changed, 1073 insertions(+), 1713 deletions(-) diff --git a/src/main/java/com/arangodb/ArangoCollection.java b/src/main/java/com/arangodb/ArangoCollection.java index 8927d1e67..517cb8fc8 100644 --- a/src/main/java/com/arangodb/ArangoCollection.java +++ b/src/main/java/com/arangodb/ArangoCollection.java @@ -20,11 +20,11 @@ package com.arangodb; -import java.util.Collection; - import com.arangodb.entity.*; import com.arangodb.model.*; +import java.util.Collection; + /** * Interface for operations on ArangoDB collection level. * @@ -34,6 +34,7 @@ * @see Collection API Documentation * @see Documents API Documentation */ +@SuppressWarnings("UnusedReturnValue") public interface ArangoCollection extends ArangoSerializationAccessor { /** @@ -41,14 +42,14 @@ public interface ArangoCollection extends ArangoSerializationAccessor { * * @return database handler */ - public ArangoDatabase db(); + ArangoDatabase db(); /** * The name of the collection * * @return collection name */ - public String name(); + String name(); /** * Creates a new document from the given document, unless there is already a document with the _key given. If no diff --git a/src/main/java/com/arangodb/ArangoDB.java b/src/main/java/com/arangodb/ArangoDB.java index bd866ea49..7aa23584f 100644 --- a/src/main/java/com/arangodb/ArangoDB.java +++ b/src/main/java/com/arangodb/ArangoDB.java @@ -20,13 +20,6 @@ package com.arangodb; -import java.io.InputStream; -import java.lang.annotation.Annotation; -import java.util.Collection; -import java.util.Properties; - -import javax.net.ssl.SSLContext; - import com.arangodb.entity.*; import com.arangodb.internal.ArangoContext; import com.arangodb.internal.ArangoDBImpl; @@ -34,11 +27,7 @@ import com.arangodb.internal.InternalArangoDBBuilder; import com.arangodb.internal.http.HttpCommunication; import com.arangodb.internal.http.HttpConnectionFactory; -import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.internal.net.Host; -import com.arangodb.internal.net.HostHandle; -import com.arangodb.internal.net.HostHandler; -import com.arangodb.internal.net.HostResolver; +import com.arangodb.internal.net.*; import com.arangodb.internal.util.ArangoDeserializerImpl; import com.arangodb.internal.util.ArangoSerializationFactory; import com.arangodb.internal.util.ArangoSerializerImpl; @@ -52,21 +41,16 @@ import com.arangodb.util.ArangoDeserializer; import com.arangodb.util.ArangoSerialization; import com.arangodb.util.ArangoSerializer; -import com.arangodb.velocypack.VPack; -import com.arangodb.velocypack.VPackAnnotationFieldFilter; -import com.arangodb.velocypack.VPackAnnotationFieldNaming; -import com.arangodb.velocypack.VPackDeserializer; -import com.arangodb.velocypack.VPackInstanceCreator; -import com.arangodb.velocypack.VPackJsonDeserializer; -import com.arangodb.velocypack.VPackJsonSerializer; -import com.arangodb.velocypack.VPackModule; -import com.arangodb.velocypack.VPackParser; -import com.arangodb.velocypack.VPackParserModule; -import com.arangodb.velocypack.VPackSerializer; -import com.arangodb.velocypack.ValueType; +import com.arangodb.velocypack.*; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.Response; +import javax.net.ssl.SSLContext; +import java.io.InputStream; +import java.lang.annotation.Annotation; +import java.util.Collection; +import java.util.Properties; + /** * Central access point for applications to communicate with an ArangoDB server. * @@ -82,6 +66,7 @@ * @author Mark Vollmary * @author Michele Rastelli */ +@SuppressWarnings("UnusedReturnValue") public interface ArangoDB extends ArangoSerializationAccessor { /** @@ -89,9 +74,9 @@ public interface ArangoDB extends ArangoSerializationAccessor { * * @author Mark Vollmary */ - public static class Builder extends InternalArangoDBBuilder { + class Builder extends InternalArangoDBBuilder { - private static String PROPERTY_KEY_PROTOCOL = "arangodb.protocol"; + private static final String PROPERTY_KEY_PROTOCOL = "arangodb.protocol"; protected Protocol protocol; diff --git a/src/main/java/com/arangodb/ArangoDatabase.java b/src/main/java/com/arangodb/ArangoDatabase.java index a1e43f6d2..3b35f934d 100644 --- a/src/main/java/com/arangodb/ArangoDatabase.java +++ b/src/main/java/com/arangodb/ArangoDatabase.java @@ -20,15 +20,15 @@ package com.arangodb; -import java.util.Collection; -import java.util.Map; - import com.arangodb.entity.*; -import com.arangodb.model.*; import com.arangodb.entity.arangosearch.AnalyzerEntity; +import com.arangodb.model.*; import com.arangodb.model.arangosearch.AnalyzerDeleteOptions; import com.arangodb.model.arangosearch.ArangoSearchCreateOptions; +import java.util.Collection; +import java.util.Map; + /** * Interface for operations on ArangoDB database level. * @@ -37,6 +37,7 @@ * @see Databases API Documentation * @see Query API Documentation */ +@SuppressWarnings("UnusedReturnValue") public interface ArangoDatabase extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoEdgeCollection.java b/src/main/java/com/arangodb/ArangoEdgeCollection.java index 610403bf3..2a4905739 100644 --- a/src/main/java/com/arangodb/ArangoEdgeCollection.java +++ b/src/main/java/com/arangodb/ArangoEdgeCollection.java @@ -30,6 +30,7 @@ * @see API Documentation * @author Mark Vollmary */ +@SuppressWarnings("UnusedReturnValue") public interface ArangoEdgeCollection extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/ArangoView.java b/src/main/java/com/arangodb/ArangoView.java index c5ef0d059..db7811dd3 100644 --- a/src/main/java/com/arangodb/ArangoView.java +++ b/src/main/java/com/arangodb/ArangoView.java @@ -29,6 +29,7 @@ * @author Mark Vollmary * @since ArangoDB 3.4.0 */ +@SuppressWarnings("UnusedReturnValue") public interface ArangoView extends ArangoSerializationAccessor { /** diff --git a/src/main/java/com/arangodb/entity/BaseDocument.java b/src/main/java/com/arangodb/entity/BaseDocument.java index b3b4c0088..a1a92b81a 100644 --- a/src/main/java/com/arangodb/entity/BaseDocument.java +++ b/src/main/java/com/arangodb/entity/BaseDocument.java @@ -20,12 +20,12 @@ package com.arangodb.entity; +import com.arangodb.entity.DocumentField.Type; + import java.io.Serializable; import java.util.HashMap; import java.util.Map; -import com.arangodb.entity.DocumentField.Type; - /** * @author Mark Vollmary * @@ -44,7 +44,7 @@ public class BaseDocument implements Serializable { public BaseDocument() { super(); - properties = new HashMap(); + properties = new HashMap<>(); } public BaseDocument(final String key) { @@ -117,17 +117,15 @@ public Object getAttribute(final String key) { @Override public String toString() { - final StringBuilder sb = new StringBuilder(); - sb.append("BaseDocument [documentRevision="); - sb.append(revision); - sb.append(", documentHandle="); - sb.append(id); - sb.append(", documentKey="); - sb.append(key); - sb.append(", properties="); - sb.append(properties); - sb.append("]"); - return sb.toString(); + return "BaseDocument [documentRevision=" + + revision + + ", documentHandle=" + + id + + ", documentKey=" + + key + + ", properties=" + + properties + + "]"; } @Override @@ -175,13 +173,8 @@ public boolean equals(final Object obj) { return false; } if (revision == null) { - if (other.revision != null) { - return false; - } - } else if (!revision.equals(other.revision)) { - return false; - } - return true; + return other.revision == null; + } else return revision.equals(other.revision); } } diff --git a/src/main/java/com/arangodb/entity/BaseEdgeDocument.java b/src/main/java/com/arangodb/entity/BaseEdgeDocument.java index 362a98442..fb0b50371 100644 --- a/src/main/java/com/arangodb/entity/BaseEdgeDocument.java +++ b/src/main/java/com/arangodb/entity/BaseEdgeDocument.java @@ -20,10 +20,10 @@ package com.arangodb.entity; -import java.util.Map; - import com.arangodb.entity.DocumentField.Type; +import java.util.Map; + /** * @author Mark Vollmary * @@ -83,21 +83,19 @@ public void setTo(final String to) { @Override public String toString() { - final StringBuilder sb = new StringBuilder(); - sb.append("BaseDocument [documentRevision="); - sb.append(revision); - sb.append(", documentHandle="); - sb.append(id); - sb.append(", documentKey="); - sb.append(key); - sb.append(", from="); - sb.append(from); - sb.append(", to="); - sb.append(to); - sb.append(", properties="); - sb.append(properties); - sb.append("]"); - return sb.toString(); + return "BaseDocument [documentRevision=" + + revision + + ", documentHandle=" + + id + + ", documentKey=" + + key + + ", from=" + + from + + ", to=" + + to + + ", properties=" + + properties + + "]"; } @Override @@ -129,13 +127,8 @@ public boolean equals(final Object obj) { return false; } if (to == null) { - if (other.to != null) { - return false; - } - } else if (!to.equals(other.to)) { - return false; - } - return true; + return other.to == null; + } else return to.equals(other.to); } } diff --git a/src/main/java/com/arangodb/entity/DocumentField.java b/src/main/java/com/arangodb/entity/DocumentField.java index cf4b22f97..d6ff3d158 100644 --- a/src/main/java/com/arangodb/entity/DocumentField.java +++ b/src/main/java/com/arangodb/entity/DocumentField.java @@ -33,12 +33,12 @@ @Target({ ElementType.FIELD }) public @interface DocumentField { - public static enum Type { + enum Type { ID("_id"), KEY("_key"), REV("_rev"), FROM("_from"), TO("_to"); private final String serializeName; - private Type(final String serializeName) { + Type(final String serializeName) { this.serializeName = serializeName; } diff --git a/src/main/java/com/arangodb/entity/DocumentImportEntity.java b/src/main/java/com/arangodb/entity/DocumentImportEntity.java index 4af6f863d..50dc741b2 100644 --- a/src/main/java/com/arangodb/entity/DocumentImportEntity.java +++ b/src/main/java/com/arangodb/entity/DocumentImportEntity.java @@ -38,7 +38,7 @@ public class DocumentImportEntity implements Entity { public DocumentImportEntity() { super(); - details = new ArrayList(); + details = new ArrayList<>(); } /** diff --git a/src/main/java/com/arangodb/entity/LogLevelEntity.java b/src/main/java/com/arangodb/entity/LogLevelEntity.java index d6046c61f..192ed1d51 100644 --- a/src/main/java/com/arangodb/entity/LogLevelEntity.java +++ b/src/main/java/com/arangodb/entity/LogLevelEntity.java @@ -27,7 +27,7 @@ public class LogLevelEntity implements Entity { public enum LogLevel { - FATAL, ERROR, WARNING, INFO, DEBUG, TRACE, DEFAULT; + FATAL, ERROR, WARNING, INFO, DEBUG, TRACE, DEFAULT } private LogLevel agency; diff --git a/src/main/java/com/arangodb/entity/MetaAware.java b/src/main/java/com/arangodb/entity/MetaAware.java index fe22725d6..952f5697a 100644 --- a/src/main/java/com/arangodb/entity/MetaAware.java +++ b/src/main/java/com/arangodb/entity/MetaAware.java @@ -8,8 +8,8 @@ */ public interface MetaAware { - public Map getMeta(); + Map getMeta(); - public void setMeta(final Map meta); + void setMeta(final Map meta); } diff --git a/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java b/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java index b8e70ec77..38df32031 100644 --- a/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java +++ b/src/main/java/com/arangodb/entity/QueryCachePropertiesEntity.java @@ -30,7 +30,7 @@ public class QueryCachePropertiesEntity implements Entity { public enum CacheMode { - off, on, demand; + off, on, demand } private CacheMode mode; diff --git a/src/main/java/com/arangodb/entity/ShardingStrategy.java b/src/main/java/com/arangodb/entity/ShardingStrategy.java index 5252ec065..efc28a6ac 100644 --- a/src/main/java/com/arangodb/entity/ShardingStrategy.java +++ b/src/main/java/com/arangodb/entity/ShardingStrategy.java @@ -31,10 +31,10 @@ public enum ShardingStrategy { ENTERPRISE_SMART_EDGE_COMPAT("enterprise-smart-edge-compat"), HASH("hash"), ENTERPRISE_HASH_SMART_EDGE("enterprise-hash-smart-edge"); - - private String internalName; - - private ShardingStrategy(String internalName) { + + private final String internalName; + + ShardingStrategy(String internalName) { this.internalName = internalName; } diff --git a/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchProperties.java b/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchProperties.java index e2c5e8db6..e6ef631f0 100644 --- a/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchProperties.java +++ b/src/main/java/com/arangodb/entity/arangosearch/ArangoSearchProperties.java @@ -40,8 +40,8 @@ public class ArangoSearchProperties { public ArangoSearchProperties() { super(); - links = new ArrayList(); - primarySorts = new ArrayList(); + links = new ArrayList<>(); + primarySorts = new ArrayList<>(); } public Long getCommitIntervalMsec() { diff --git a/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java b/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java index 5ad712edb..78bcd5250 100644 --- a/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java +++ b/src/main/java/com/arangodb/entity/arangosearch/CollectionLink.java @@ -40,8 +40,8 @@ public class CollectionLink { private CollectionLink(final String name) { super(); this.name = name; - fields = new ArrayList(); - analyzers = new ArrayList(); + fields = new ArrayList<>(); + analyzers = new ArrayList<>(); } /** diff --git a/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java b/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java index 51467212b..de3acf967 100644 --- a/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java +++ b/src/main/java/com/arangodb/entity/arangosearch/FieldLink.java @@ -16,8 +16,8 @@ public class FieldLink { private FieldLink(final String name) { super(); this.name = name; - fields = new ArrayList(); - analyzers = new ArrayList(); + fields = new ArrayList<>(); + analyzers = new ArrayList<>(); } /** diff --git a/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java b/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java index 74884404f..60df3c67e 100644 --- a/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java +++ b/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java @@ -43,11 +43,7 @@ public static PrimarySort on(final String fieldName) { * @return primarySort */ public PrimarySort ascending(final Boolean ascending) { - if (ascending) { - this.ascending = true; - } else { - this.ascending = false; - } + this.ascending = ascending; return this; } diff --git a/src/main/java/com/arangodb/internal/ArangoContext.java b/src/main/java/com/arangodb/internal/ArangoContext.java index e52d8a17e..058bcb97f 100644 --- a/src/main/java/com/arangodb/internal/ArangoContext.java +++ b/src/main/java/com/arangodb/internal/ArangoContext.java @@ -33,7 +33,7 @@ public class ArangoContext { public ArangoContext() { super(); - headerParam = new HashMap(); + headerParam = new HashMap<>(); } public Map getHeaderParam() { diff --git a/src/main/java/com/arangodb/internal/ArangoDBImpl.java b/src/main/java/com/arangodb/internal/ArangoDBImpl.java index efdc34782..bb93b1ea6 100644 --- a/src/main/java/com/arangodb/internal/ArangoDBImpl.java +++ b/src/main/java/com/arangodb/internal/ArangoDBImpl.java @@ -20,18 +20,11 @@ package com.arangodb.internal; -import java.io.IOException; -import java.util.Collection; - -import com.arangodb.entity.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.arangodb.ArangoDB; import com.arangodb.ArangoDBException; import com.arangodb.ArangoDatabase; import com.arangodb.Protocol; -import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; +import com.arangodb.entity.*; import com.arangodb.internal.http.HttpCommunication; import com.arangodb.internal.http.HttpProtocol; import com.arangodb.internal.net.CommunicationProtocol; @@ -46,9 +39,13 @@ import com.arangodb.model.UserUpdateOptions; import com.arangodb.util.ArangoCursorInitializer; import com.arangodb.util.ArangoSerialization; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.Collection; /** * @author Mark Vollmary @@ -61,7 +58,7 @@ public class ArangoDBImpl extends InternalArangoDB implement private static final Logger LOGGER = LoggerFactory.getLogger(ArangoDBImpl.class); private ArangoCursorInitializer cursorInitializer; - private CommunicationProtocol cp; + private final CommunicationProtocol cp; public ArangoDBImpl(final VstCommunicationSync.Builder vstBuilder, final HttpCommunication.Builder httpBuilder, final ArangoSerializationFactory util, final Protocol protocol, final HostResolver hostResolver, @@ -219,22 +216,12 @@ public void grantDefaultCollectionAccess(final String user, final Permissions pe @Override public Response execute(final Request request) throws ArangoDBException { - return executor.execute(request, new ResponseDeserializer() { - @Override - public Response deserialize(final Response response) throws VPackException { - return response; - } - }); + return executor.execute(request, response -> response); } @Override public Response execute(final Request request, final HostHandle hostHandle) throws ArangoDBException { - return executor.execute(request, new ResponseDeserializer() { - @Override - public Response deserialize(final Response response) throws VPackException { - return response; - } - }, hostHandle); + return executor.execute(request, response -> response, hostHandle); } @Override diff --git a/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java b/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java index cc5880d82..174ebeb48 100644 --- a/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java +++ b/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java @@ -20,18 +20,7 @@ package com.arangodb.internal; -import java.util.Collection; -import java.util.Collections; -import java.util.Map; - -import com.arangodb.ArangoCollection; -import com.arangodb.ArangoCursor; -import com.arangodb.ArangoDBException; -import com.arangodb.ArangoDatabase; -import com.arangodb.ArangoGraph; -import com.arangodb.ArangoRoute; -import com.arangodb.ArangoSearch; -import com.arangodb.ArangoView; +import com.arangodb.*; import com.arangodb.entity.*; import com.arangodb.entity.arangosearch.AnalyzerEntity; import com.arangodb.internal.cursor.ArangoCursorImpl; @@ -44,6 +33,10 @@ import com.arangodb.velocypack.Type; import com.arangodb.velocystream.Request; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; + /** * @author Mark Vollmary * @author Michele Rastelli @@ -225,7 +218,7 @@ public void close(final String id, Map meta) { return cursorInitializer != null ? cursorInitializer.createInstance(this, execute, type, result) : - new ArangoCursorImpl(this, execute, type, result); + new ArangoCursorImpl<>(this, execute, type, result); } @Override @@ -401,7 +394,7 @@ protected ArangoDatabaseImpl setCursorInitializer(final ArangoCursorInitializer @Override public ArangoRoute route(final String... path) { - return new ArangoRouteImpl(this, createPath(path), Collections.emptyMap()); + return new ArangoRouteImpl(this, createPath(path), Collections.emptyMap()); } @Override diff --git a/src/main/java/com/arangodb/internal/ArangoExecutor.java b/src/main/java/com/arangodb/internal/ArangoExecutor.java index ff73e1803..ff311a1ef 100644 --- a/src/main/java/com/arangodb/internal/ArangoExecutor.java +++ b/src/main/java/com/arangodb/internal/ArangoExecutor.java @@ -20,21 +20,30 @@ package com.arangodb.internal; -import java.lang.reflect.Type; - import com.arangodb.entity.Entity; import com.arangodb.internal.util.ArangoSerializationFactory; import com.arangodb.internal.util.ArangoSerializationFactory.Serializer; import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Response; +import java.lang.reflect.Type; + /** * @author Mark Vollmary */ public abstract class ArangoExecutor { - public static interface ResponseDeserializer { - T deserialize(Response response) throws VPackException; + @SuppressWarnings("unchecked") + protected T createResult(final Type type, final Response response) { + if (type != Void.class && response.getBody() != null) { + if (type instanceof Class && Entity.class.isAssignableFrom((Class) type) ) { + return (T) util.get(Serializer.INTERNAL).deserialize(response.getBody(), type); + } else { + return (T) util.get(Serializer.CUSTOM).deserialize(response.getBody(), type); + } + } else { + return null; + } } private final DocumentCache documentCache; @@ -50,17 +59,8 @@ public DocumentCache documentCache() { return documentCache; } - @SuppressWarnings("unchecked") - protected T createResult(final Type type, final Response response) { - if (type != Void.class && response.getBody() != null) { - if (type instanceof Class && Entity.class.isAssignableFrom((Class) type) ) { - return (T) util.get(Serializer.INTERNAL).deserialize(response.getBody(), type); - } else { - return (T) util.get(Serializer.CUSTOM).deserialize(response.getBody(), type); - } - } else { - return (T) null; - } + public interface ResponseDeserializer { + T deserialize(Response response) throws VPackException; } } diff --git a/src/main/java/com/arangodb/internal/ArangoExecutorSync.java b/src/main/java/com/arangodb/internal/ArangoExecutorSync.java index b52562284..c9b0a5060 100644 --- a/src/main/java/com/arangodb/internal/ArangoExecutorSync.java +++ b/src/main/java/com/arangodb/internal/ArangoExecutorSync.java @@ -20,12 +20,6 @@ package com.arangodb.internal; -import java.io.IOException; -import java.lang.reflect.Type; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.arangodb.ArangoDBException; import com.arangodb.entity.MetaAware; import com.arangodb.internal.net.CommunicationProtocol; @@ -34,6 +28,11 @@ import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.lang.reflect.Type; /** * @author Mark Vollmary @@ -56,13 +55,7 @@ public T execute(final Request request, final Type type) throws ArangoDBExce } public T execute(final Request request, final Type type, final HostHandle hostHandle) throws ArangoDBException { - return execute(request, new ResponseDeserializer() { - @Override - public T deserialize(final Response response) throws VPackException { - T result = createResult(type, response); - return result; - } - }, hostHandle); + return execute(request, response -> createResult(type, response), hostHandle); } public T execute(final Request request, final ResponseDeserializer responseDeserializer) throws ArangoDBException { diff --git a/src/main/java/com/arangodb/internal/ArangoRouteImpl.java b/src/main/java/com/arangodb/internal/ArangoRouteImpl.java index 4583b68e1..fd6f86702 100644 --- a/src/main/java/com/arangodb/internal/ArangoRouteImpl.java +++ b/src/main/java/com/arangodb/internal/ArangoRouteImpl.java @@ -20,15 +20,13 @@ package com.arangodb.internal; -import java.util.Map; - import com.arangodb.ArangoDBException; import com.arangodb.ArangoRoute; -import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.RequestType; import com.arangodb.velocystream.Response; +import java.util.Map; + /** * @author Mark Vollmary * @@ -64,12 +62,7 @@ public ArangoRoute withBody(final Object body) { } private Response request(final RequestType requestType) { - return executor.execute(createRequest(requestType), new ResponseDeserializer() { - @Override - public Response deserialize(final Response response) throws VPackException { - return response; - } - }); + return executor.execute(createRequest(requestType), response -> response); } @Override diff --git a/src/main/java/com/arangodb/internal/DocumentCache.java b/src/main/java/com/arangodb/internal/DocumentCache.java index d0b1c1263..2ed95e532 100644 --- a/src/main/java/com/arangodb/internal/DocumentCache.java +++ b/src/main/java/com/arangodb/internal/DocumentCache.java @@ -20,19 +20,15 @@ package com.arangodb.internal; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - import com.arangodb.ArangoDBException; import com.arangodb.entity.DocumentField; import com.arangodb.entity.DocumentField.Type; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.*; +import java.util.Map.Entry; + /** * @author Mark Vollmary * @@ -43,7 +39,7 @@ public class DocumentCache { public DocumentCache() { super(); - cache = new HashMap, Map>(); + cache = new HashMap<>(); } public void setValues(final Object doc, final Map values) throws ArangoDBException { @@ -55,15 +51,13 @@ public void setValues(final Object doc, final Map va field.set(doc, value.getValue()); } } - } catch (final IllegalArgumentException e) { - throw new ArangoDBException(e); - } catch (final IllegalAccessException e) { + } catch (final IllegalArgumentException | IllegalAccessException e) { throw new ArangoDBException(e); } } private Map getFields(final Class clazz) { - Map fields = new HashMap(); + Map fields = new HashMap<>(); if (!isTypeRestricted(clazz)) { fields = cache.get(clazz); if (fields == null) { @@ -79,9 +73,9 @@ private boolean isTypeRestricted(final Class type) { } private Map createFields(final Class clazz) { - final Map fields = new HashMap(); + final Map fields = new HashMap<>(); Class tmp = clazz; - final Collection values = new ArrayList( + final Collection values = new ArrayList<>( Arrays.asList(DocumentField.Type.values())); while (tmp != null && tmp != Object.class && values.size() > 0) { final Field[] declaredFields = tmp.getDeclaredFields(); diff --git a/src/main/java/com/arangodb/internal/InternalArangoCollection.java b/src/main/java/com/arangodb/internal/InternalArangoCollection.java index d275a5e30..cc9677c65 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoCollection.java +++ b/src/main/java/com/arangodb/internal/InternalArangoCollection.java @@ -20,21 +20,8 @@ package com.arangodb.internal; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - import com.arangodb.ArangoDBException; -import com.arangodb.entity.DocumentCreateEntity; -import com.arangodb.entity.DocumentDeleteEntity; -import com.arangodb.entity.DocumentField; -import com.arangodb.entity.DocumentUpdateEntity; -import com.arangodb.entity.ErrorEntity; -import com.arangodb.entity.IndexEntity; -import com.arangodb.entity.MultiDocumentEntity; -import com.arangodb.entity.Permissions; +import com.arangodb.entity.*; import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; import com.arangodb.internal.util.ArangoSerializationFactory.Serializer; import com.arangodb.internal.util.DocumentUtil; @@ -43,10 +30,10 @@ import com.arangodb.util.ArangoSerializer; import com.arangodb.velocypack.Type; import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.RequestType; -import com.arangodb.velocystream.Response; + +import java.util.*; /** * @author Mark Vollmary @@ -106,30 +93,26 @@ protected Request insertDocumentRequest(final T value, final DocumentCreateO protected ResponseDeserializer> insertDocumentResponseDeserializer( final T value, final DocumentCreateOptions options) { - return new ResponseDeserializer>() { - @SuppressWarnings("unchecked") - @Override - public DocumentCreateEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody(); - final DocumentCreateEntity doc = util().deserialize(body, DocumentCreateEntity.class); - final VPackSlice newDoc = body.get(NEW); - if (newDoc.isObject()) { - doc.setNew((T) util(Serializer.CUSTOM).deserialize(newDoc, value.getClass())); - } - final VPackSlice oldDoc = body.get(OLD); - if (oldDoc.isObject()) { - doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, value.getClass())); - } - if (options == null || Boolean.TRUE != options.getSilent()) { - final Map values = new HashMap(); - values.put(DocumentField.Type.ID, doc.getId()); - values.put(DocumentField.Type.KEY, doc.getKey()); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - } - return doc; - } - }; + return response -> { + final VPackSlice body = response.getBody(); + final DocumentCreateEntity doc = util().deserialize(body, DocumentCreateEntity.class); + final VPackSlice newDoc = body.get(NEW); + if (newDoc.isObject()) { + doc.setNew(util(Serializer.CUSTOM).deserialize(newDoc, value.getClass())); + } + final VPackSlice oldDoc = body.get(OLD); + if (oldDoc.isObject()) { + doc.setOld(util(Serializer.CUSTOM).deserialize(oldDoc, value.getClass())); + } + if (options == null || Boolean.TRUE != options.getSilent()) { + final Map values = new HashMap<>(); + values.put(DocumentField.Type.ID, doc.getId()); + values.put(DocumentField.Type.KEY, doc.getKey()); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + } + return doc; + }; } protected Request insertDocumentsRequest(final Collection values, final DocumentCreateOptions params) { @@ -148,49 +131,45 @@ protected Request insertDocumentsRequest(final Collection values, final D @SuppressWarnings("unchecked") protected ResponseDeserializer>> insertDocumentsResponseDeserializer( final Collection values, final DocumentCreateOptions params) { - return new ResponseDeserializer>>() { - @Override - public MultiDocumentEntity> deserialize(final Response response) - throws VPackException { - Class type = null; - if (Boolean.TRUE == params.getReturnNew()) { - if (!values.isEmpty()) { - type = (Class) values.iterator().next().getClass(); - } - } - final MultiDocumentEntity> multiDocument = new MultiDocumentEntity>(); - final Collection> docs = new ArrayList>(); - final Collection errors = new ArrayList(); - final Collection documentsAndErrors = new ArrayList(); - final VPackSlice body = response.getBody(); - if (body.isArray()) { - for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { - final VPackSlice next = iterator.next(); - if (next.get(ArangoResponseField.ERROR).isTrue()) { - final ErrorEntity error = (ErrorEntity) util().deserialize(next, ErrorEntity.class); - errors.add(error); - documentsAndErrors.add(error); - } else { - final DocumentCreateEntity doc = util().deserialize(next, DocumentCreateEntity.class); - final VPackSlice newDoc = next.get(NEW); - if (newDoc.isObject()) { - doc.setNew((T) util(Serializer.CUSTOM).deserialize(newDoc, type)); - } - final VPackSlice oldDoc = next.get(OLD); - if (oldDoc.isObject()) { - doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, type)); - } - docs.add(doc); - documentsAndErrors.add(doc); - } - } - } - multiDocument.setDocuments(docs); - multiDocument.setErrors(errors); - multiDocument.setDocumentsAndErrors(documentsAndErrors); - return multiDocument; - } - }; + return response -> { + Class type = null; + if (Boolean.TRUE == params.getReturnNew()) { + if (!values.isEmpty()) { + type = (Class) values.iterator().next().getClass(); + } + } + final MultiDocumentEntity> multiDocument = new MultiDocumentEntity<>(); + final Collection> docs = new ArrayList<>(); + final Collection errors = new ArrayList<>(); + final Collection documentsAndErrors = new ArrayList<>(); + final VPackSlice body = response.getBody(); + if (body.isArray()) { + for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { + final VPackSlice next = iterator.next(); + if (next.get(ArangoResponseField.ERROR).isTrue()) { + final ErrorEntity error = util().deserialize(next, ErrorEntity.class); + errors.add(error); + documentsAndErrors.add(error); + } else { + final DocumentCreateEntity doc = util().deserialize(next, DocumentCreateEntity.class); + final VPackSlice newDoc = next.get(NEW); + if (newDoc.isObject()) { + doc.setNew(util(Serializer.CUSTOM).deserialize(newDoc, type)); + } + final VPackSlice oldDoc = next.get(OLD); + if (oldDoc.isObject()) { + doc.setOld(util(Serializer.CUSTOM).deserialize(oldDoc, type)); + } + docs.add(doc); + documentsAndErrors.add(doc); + } + } + } + multiDocument.setDocuments(docs); + multiDocument.setErrors(errors); + multiDocument.setDocumentsAndErrors(documentsAndErrors); + return multiDocument; + }; } protected Request importDocumentsRequest(final String values, final DocumentImportOptions options) { @@ -239,33 +218,29 @@ protected Request getDocumentsRequest(final Collection keys, final Docum protected ResponseDeserializer> getDocumentsResponseDeserializer( final Class type, final DocumentReadOptions options) { - return new ResponseDeserializer>() { - @SuppressWarnings("unchecked") - @Override - public MultiDocumentEntity deserialize(final Response response) throws VPackException { - final MultiDocumentEntity multiDocument = new MultiDocumentEntity(); - final Collection docs = new ArrayList(); - final Collection errors = new ArrayList(); - final Collection documentsAndErrors = new ArrayList(); - final VPackSlice body = response.getBody(); - for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { - final VPackSlice next = iterator.next(); - if (next.get(ArangoResponseField.ERROR).isTrue()) { - final ErrorEntity error = (ErrorEntity) util().deserialize(next, ErrorEntity.class); - errors.add(error); - documentsAndErrors.add(error); - } else { - final T doc = (T) util(Serializer.CUSTOM).deserialize(next, type); - docs.add(doc); - documentsAndErrors.add(doc); - } - } - multiDocument.setDocuments(docs); - multiDocument.setErrors(errors); - multiDocument.setDocumentsAndErrors(documentsAndErrors); - return multiDocument; - } - }; + return response -> { + final MultiDocumentEntity multiDocument = new MultiDocumentEntity<>(); + final Collection docs = new ArrayList<>(); + final Collection errors = new ArrayList<>(); + final Collection documentsAndErrors = new ArrayList<>(); + final VPackSlice body = response.getBody(); + for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { + final VPackSlice next = iterator.next(); + if (next.get(ArangoResponseField.ERROR).isTrue()) { + final ErrorEntity error = util().deserialize(next, ErrorEntity.class); + errors.add(error); + documentsAndErrors.add(error); + } else { + final T doc = util(Serializer.CUSTOM).deserialize(next, type); + docs.add(doc); + documentsAndErrors.add(doc); + } + } + multiDocument.setDocuments(docs); + multiDocument.setErrors(errors); + multiDocument.setDocumentsAndErrors(documentsAndErrors); + return multiDocument; + }; } protected Request replaceDocumentRequest( @@ -286,28 +261,24 @@ protected Request replaceDocumentRequest( protected ResponseDeserializer> replaceDocumentResponseDeserializer( final T value, final DocumentReplaceOptions options) { - return new ResponseDeserializer>() { - @SuppressWarnings("unchecked") - @Override - public DocumentUpdateEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody(); - final DocumentUpdateEntity doc = util().deserialize(body, DocumentUpdateEntity.class); - final VPackSlice newDoc = body.get(NEW); - if (newDoc.isObject()) { - doc.setNew((T) util(Serializer.CUSTOM).deserialize(newDoc, value.getClass())); - } - final VPackSlice oldDoc = body.get(OLD); - if (oldDoc.isObject()) { - doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, value.getClass())); - } - if (options == null || Boolean.TRUE != options.getSilent()) { - final Map values = new HashMap(); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - } - return doc; - } - }; + return response -> { + final VPackSlice body = response.getBody(); + final DocumentUpdateEntity doc = util().deserialize(body, DocumentUpdateEntity.class); + final VPackSlice newDoc = body.get(NEW); + if (newDoc.isObject()) { + doc.setNew(util(Serializer.CUSTOM).deserialize(newDoc, value.getClass())); + } + final VPackSlice oldDoc = body.get(OLD); + if (oldDoc.isObject()) { + doc.setOld(util(Serializer.CUSTOM).deserialize(oldDoc, value.getClass())); + } + if (options == null || Boolean.TRUE != options.getSilent()) { + final Map values = new HashMap<>(); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + } + return doc; + }; } protected Request replaceDocumentsRequest(final Collection values, final DocumentReplaceOptions params) { @@ -327,49 +298,45 @@ protected Request replaceDocumentsRequest(final Collection values, final @SuppressWarnings("unchecked") protected ResponseDeserializer>> replaceDocumentsResponseDeserializer( final Collection values, final DocumentReplaceOptions params) { - return new ResponseDeserializer>>() { - @Override - public MultiDocumentEntity> deserialize(final Response response) - throws VPackException { - Class type = null; - if (Boolean.TRUE == params.getReturnNew() || Boolean.TRUE == params.getReturnOld()) { - if (!values.isEmpty()) { - type = (Class) values.iterator().next().getClass(); - } - } - final MultiDocumentEntity> multiDocument = new MultiDocumentEntity>(); - final Collection> docs = new ArrayList>(); - final Collection errors = new ArrayList(); - final Collection documentsAndErrors = new ArrayList(); - final VPackSlice body = response.getBody(); - if (body.isArray()) { - for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { - final VPackSlice next = iterator.next(); - if (next.get(ArangoResponseField.ERROR).isTrue()) { - final ErrorEntity error = (ErrorEntity) util().deserialize(next, ErrorEntity.class); - errors.add(error); - documentsAndErrors.add(error); - } else { - final DocumentUpdateEntity doc = util().deserialize(next, DocumentUpdateEntity.class); - final VPackSlice newDoc = next.get(NEW); - if (newDoc.isObject()) { - doc.setNew((T) util(Serializer.CUSTOM).deserialize(newDoc, type)); - } - final VPackSlice oldDoc = next.get(OLD); - if (oldDoc.isObject()) { - doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, type)); - } - docs.add(doc); - documentsAndErrors.add(doc); - } - } - } - multiDocument.setDocuments(docs); - multiDocument.setErrors(errors); - multiDocument.setDocumentsAndErrors(documentsAndErrors); - return multiDocument; - } - }; + return response -> { + Class type = null; + if (Boolean.TRUE == params.getReturnNew() || Boolean.TRUE == params.getReturnOld()) { + if (!values.isEmpty()) { + type = (Class) values.iterator().next().getClass(); + } + } + final MultiDocumentEntity> multiDocument = new MultiDocumentEntity<>(); + final Collection> docs = new ArrayList<>(); + final Collection errors = new ArrayList<>(); + final Collection documentsAndErrors = new ArrayList<>(); + final VPackSlice body = response.getBody(); + if (body.isArray()) { + for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { + final VPackSlice next = iterator.next(); + if (next.get(ArangoResponseField.ERROR).isTrue()) { + final ErrorEntity error = util().deserialize(next, ErrorEntity.class); + errors.add(error); + documentsAndErrors.add(error); + } else { + final DocumentUpdateEntity doc = util().deserialize(next, DocumentUpdateEntity.class); + final VPackSlice newDoc = next.get(NEW); + if (newDoc.isObject()) { + doc.setNew(util(Serializer.CUSTOM).deserialize(newDoc, type)); + } + final VPackSlice oldDoc = next.get(OLD); + if (oldDoc.isObject()) { + doc.setOld(util(Serializer.CUSTOM).deserialize(oldDoc, type)); + } + docs.add(doc); + documentsAndErrors.add(doc); + } + } + } + multiDocument.setDocuments(docs); + multiDocument.setErrors(errors); + multiDocument.setDocumentsAndErrors(documentsAndErrors); + return multiDocument; + }; } protected Request updateDocumentRequest(final String key, final T value, final DocumentUpdateOptions options) { @@ -392,28 +359,24 @@ protected Request updateDocumentRequest(final String key, final T value, fin protected ResponseDeserializer> updateDocumentResponseDeserializer( final T value, final DocumentUpdateOptions options) { - return new ResponseDeserializer>() { - @SuppressWarnings("unchecked") - @Override - public DocumentUpdateEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody(); - final DocumentUpdateEntity doc = util().deserialize(body, DocumentUpdateEntity.class); - final VPackSlice newDoc = body.get(NEW); - if (newDoc.isObject()) { - doc.setNew((T) util(Serializer.CUSTOM).deserialize(newDoc, value.getClass())); - } - final VPackSlice oldDoc = body.get(OLD); - if (oldDoc.isObject()) { - doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, value.getClass())); - } - if (options == null || Boolean.TRUE != options.getSilent()) { - final Map values = new HashMap(); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - } - return doc; - } - }; + return response -> { + final VPackSlice body = response.getBody(); + final DocumentUpdateEntity doc = util().deserialize(body, DocumentUpdateEntity.class); + final VPackSlice newDoc = body.get(NEW); + if (newDoc.isObject()) { + doc.setNew(util(Serializer.CUSTOM).deserialize(newDoc, value.getClass())); + } + final VPackSlice oldDoc = body.get(OLD); + if (oldDoc.isObject()) { + doc.setOld(util(Serializer.CUSTOM).deserialize(oldDoc, value.getClass())); + } + if (options == null || Boolean.TRUE != options.getSilent()) { + final Map values = new HashMap<>(); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + } + return doc; + }; } protected Request updateDocumentsRequest(final Collection values, final DocumentUpdateOptions params) { @@ -437,49 +400,45 @@ protected Request updateDocumentsRequest(final Collection values, final D @SuppressWarnings("unchecked") protected ResponseDeserializer>> updateDocumentsResponseDeserializer( final Collection values, final DocumentUpdateOptions params) { - return new ResponseDeserializer>>() { - @Override - public MultiDocumentEntity> deserialize(final Response response) - throws VPackException { - Class type = null; - if (Boolean.TRUE == params.getReturnNew() || Boolean.TRUE == params.getReturnOld()) { - if (!values.isEmpty()) { - type = (Class) values.iterator().next().getClass(); - } - } - final MultiDocumentEntity> multiDocument = new MultiDocumentEntity>(); - final Collection> docs = new ArrayList>(); - final Collection errors = new ArrayList(); - final Collection documentsAndErrors = new ArrayList(); - final VPackSlice body = response.getBody(); - if (body.isArray()) { - for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { - final VPackSlice next = iterator.next(); - if (next.get(ArangoResponseField.ERROR).isTrue()) { - final ErrorEntity error = (ErrorEntity) util().deserialize(next, ErrorEntity.class); - errors.add(error); - documentsAndErrors.add(error); - } else { - final DocumentUpdateEntity doc = util().deserialize(next, DocumentUpdateEntity.class); - final VPackSlice newDoc = next.get(NEW); - if (newDoc.isObject()) { - doc.setNew((T) util(Serializer.CUSTOM).deserialize(newDoc, type)); - } - final VPackSlice oldDoc = next.get(OLD); - if (oldDoc.isObject()) { - doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, type)); - } - docs.add(doc); - documentsAndErrors.add(doc); - } - } - } - multiDocument.setDocuments(docs); - multiDocument.setErrors(errors); - multiDocument.setDocumentsAndErrors(documentsAndErrors); - return multiDocument; - } - }; + return response -> { + Class type = null; + if (Boolean.TRUE == params.getReturnNew() || Boolean.TRUE == params.getReturnOld()) { + if (!values.isEmpty()) { + type = (Class) values.iterator().next().getClass(); + } + } + final MultiDocumentEntity> multiDocument = new MultiDocumentEntity<>(); + final Collection> docs = new ArrayList<>(); + final Collection errors = new ArrayList<>(); + final Collection documentsAndErrors = new ArrayList<>(); + final VPackSlice body = response.getBody(); + if (body.isArray()) { + for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { + final VPackSlice next = iterator.next(); + if (next.get(ArangoResponseField.ERROR).isTrue()) { + final ErrorEntity error = util().deserialize(next, ErrorEntity.class); + errors.add(error); + documentsAndErrors.add(error); + } else { + final DocumentUpdateEntity doc = util().deserialize(next, DocumentUpdateEntity.class); + final VPackSlice newDoc = next.get(NEW); + if (newDoc.isObject()) { + doc.setNew(util(Serializer.CUSTOM).deserialize(newDoc, type)); + } + final VPackSlice oldDoc = next.get(OLD); + if (oldDoc.isObject()) { + doc.setOld(util(Serializer.CUSTOM).deserialize(oldDoc, type)); + } + docs.add(doc); + documentsAndErrors.add(doc); + } + } + } + multiDocument.setDocuments(docs); + multiDocument.setErrors(errors); + multiDocument.setDocumentsAndErrors(documentsAndErrors); + return multiDocument; + }; } protected Request deleteDocumentRequest(final String key, final DocumentDeleteOptions options) { @@ -496,19 +455,15 @@ protected Request deleteDocumentRequest(final String key, final DocumentDeleteOp protected ResponseDeserializer> deleteDocumentResponseDeserializer( final Class type) { - return new ResponseDeserializer>() { - @SuppressWarnings("unchecked") - @Override - public DocumentDeleteEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody(); - final DocumentDeleteEntity doc = util().deserialize(body, DocumentDeleteEntity.class); - final VPackSlice oldDoc = body.get(OLD); - if (oldDoc.isObject()) { - doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, type)); - } - return doc; - } - }; + return response -> { + final VPackSlice body = response.getBody(); + final DocumentDeleteEntity doc = util().deserialize(body, DocumentDeleteEntity.class); + final VPackSlice oldDoc = body.get(OLD); + if (oldDoc.isObject()) { + doc.setOld(util(Serializer.CUSTOM).deserialize(oldDoc, type)); + } + return doc; + }; } protected Request deleteDocumentsRequest(final Collection keys, final DocumentDeleteOptions options) { @@ -524,40 +479,35 @@ protected Request deleteDocumentsRequest(final Collection keys, final Doc protected ResponseDeserializer>> deleteDocumentsResponseDeserializer( final Class type) { - return new ResponseDeserializer>>() { - @SuppressWarnings("unchecked") - @Override - public MultiDocumentEntity> deserialize(final Response response) - throws VPackException { - final MultiDocumentEntity> multiDocument = new MultiDocumentEntity>(); - final Collection> docs = new ArrayList>(); - final Collection errors = new ArrayList(); - final Collection documentsAndErrors = new ArrayList(); - final VPackSlice body = response.getBody(); - if (body.isArray()) { - for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { - final VPackSlice next = iterator.next(); - if (next.get(ArangoResponseField.ERROR).isTrue()) { - final ErrorEntity error = (ErrorEntity) util().deserialize(next, ErrorEntity.class); - errors.add(error); - documentsAndErrors.add(error); - } else { - final DocumentDeleteEntity doc = util().deserialize(next, DocumentDeleteEntity.class); - final VPackSlice oldDoc = next.get(OLD); - if (oldDoc.isObject()) { - doc.setOld((T) util(Serializer.CUSTOM).deserialize(oldDoc, type)); - } - docs.add(doc); - documentsAndErrors.add(doc); - } - } - } - multiDocument.setDocuments(docs); - multiDocument.setErrors(errors); - multiDocument.setDocumentsAndErrors(documentsAndErrors); - return multiDocument; - } - }; + return response -> { + final MultiDocumentEntity> multiDocument = new MultiDocumentEntity<>(); + final Collection> docs = new ArrayList<>(); + final Collection errors = new ArrayList<>(); + final Collection documentsAndErrors = new ArrayList<>(); + final VPackSlice body = response.getBody(); + if (body.isArray()) { + for (final Iterator iterator = body.arrayIterator(); iterator.hasNext(); ) { + final VPackSlice next = iterator.next(); + if (next.get(ArangoResponseField.ERROR).isTrue()) { + final ErrorEntity error = util().deserialize(next, ErrorEntity.class); + errors.add(error); + documentsAndErrors.add(error); + } else { + final DocumentDeleteEntity doc = util().deserialize(next, DocumentDeleteEntity.class); + final VPackSlice oldDoc = next.get(OLD); + if (oldDoc.isObject()) { + doc.setOld(util(Serializer.CUSTOM).deserialize(oldDoc, type)); + } + docs.add(doc); + documentsAndErrors.add(doc); + } + } + } + multiDocument.setDocuments(docs); + multiDocument.setErrors(errors); + multiDocument.setDocumentsAndErrors(documentsAndErrors); + return multiDocument; + }; } protected Request documentExistsRequest(final String key, final DocumentExistsOptions options) { @@ -579,12 +529,7 @@ protected Request deleteIndexRequest(final String id) { } protected ResponseDeserializer deleteIndexResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public String deserialize(final Response response) throws VPackException { - return response.getBody().get("id").getAsString(); - } - }; + return response -> response.getBody().get("id").getAsString(); } private String createIndexId(final String id) { @@ -655,13 +600,8 @@ protected Request getIndexesRequest() { } protected ResponseDeserializer> getIndexesResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get("indexes"), new Type>() { - }.getType()); - } - }; + return response -> util().deserialize(response.getBody().get("indexes"), new Type>() { + }.getType()); } protected Request truncateRequest(final CollectionTruncateOptions options) { @@ -736,19 +676,16 @@ protected Request getPermissionsRequest(final String user) { } protected ResponseDeserializer getPermissionsResponseDeserialzer() { - return new ResponseDeserializer() { - @Override - public Permissions deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody(); - if (body != null) { - final VPackSlice result = body.get(ArangoResponseField.RESULT); - if (!result.isNone()) { - return util().deserialize(result, Permissions.class); - } - } - return null; - } - }; + return response -> { + final VPackSlice body = response.getBody(); + if (body != null) { + final VPackSlice result = body.get(ArangoResponseField.RESULT); + if (!result.isNone()) { + return util().deserialize(result, Permissions.class); + } + } + return null; + }; } } diff --git a/src/main/java/com/arangodb/internal/InternalArangoDB.java b/src/main/java/com/arangodb/internal/InternalArangoDB.java index b04a5af7a..8a174aee4 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDB.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDB.java @@ -20,29 +20,22 @@ package com.arangodb.internal; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Map.Entry; - import com.arangodb.entity.LogLevelEntity; import com.arangodb.entity.Permissions; import com.arangodb.entity.ServerRole; import com.arangodb.entity.UserEntity; import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; import com.arangodb.internal.util.ArangoSerializationFactory; -import com.arangodb.model.DBCreateOptions; -import com.arangodb.model.LogOptions; -import com.arangodb.model.OptionsBuilder; -import com.arangodb.model.UserAccessOptions; -import com.arangodb.model.UserCreateOptions; -import com.arangodb.model.UserUpdateOptions; +import com.arangodb.model.*; import com.arangodb.velocypack.Type; import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.RequestType; -import com.arangodb.velocystream.Response; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map.Entry; /** * @author Mark Vollmary @@ -66,12 +59,7 @@ protected Request getRoleRequest() { } protected ResponseDeserializer getRoleResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public ServerRole deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get("role"), ServerRole.class); - } - }; + return response -> util().deserialize(response.getBody().get("role"), ServerRole.class); } protected Request createDatabaseRequest(final String name) { @@ -82,12 +70,7 @@ protected Request createDatabaseRequest(final String name) { } protected ResponseDeserializer createDatabaseResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public Boolean deserialize(final Response response) throws VPackException { - return response.getBody().get(ArangoResponseField.RESULT).getAsBoolean(); - } - }; + return response -> response.getBody().get(ArangoResponseField.RESULT).getAsBoolean(); } protected Request getDatabasesRequest(final String database) { @@ -95,13 +78,10 @@ protected Request getDatabasesRequest(final String database) { } protected ResponseDeserializer> getDatabaseResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); - return util().deserialize(result, new Type>() { - }.getType()); - } + return response -> { + final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); + return util().deserialize(result, new Type>() { + }.getType()); }; } @@ -110,17 +90,14 @@ protected Request getAccessibleDatabasesForRequest(final String database, final } protected ResponseDeserializer> getAccessibleDatabasesForResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); - final Collection dbs = new ArrayList(); - for (final Iterator> iterator = result.objectIterator(); iterator - .hasNext();) { - dbs.add(iterator.next().getKey()); - } - return dbs; + return response -> { + final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); + final Collection dbs = new ArrayList<>(); + for (final Iterator> iterator = result.objectIterator(); iterator + .hasNext(); ) { + dbs.add(iterator.next().getKey()); } + return dbs; }; } @@ -149,13 +126,10 @@ protected Request getUserRequest(final String database, final String user) { } protected ResponseDeserializer> getUsersResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); - return util().deserialize(result, new Type>() { - }.getType()); - } + return response -> { + final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); + return util().deserialize(result, new Type>() { + }.getType()); }; } diff --git a/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java b/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java index 91203cbef..6e84e0714 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDBBuilder.java @@ -20,33 +20,10 @@ package com.arangodb.internal; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Properties; - -import javax.net.ssl.SSLContext; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.arangodb.ArangoDB; import com.arangodb.ArangoDBException; import com.arangodb.entity.LoadBalancingStrategy; -import com.arangodb.internal.net.Connection; -import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.internal.net.DirtyReadHostHandler; -import com.arangodb.internal.net.ExtendedHostResolver; -import com.arangodb.internal.net.FallbackHostHandler; -import com.arangodb.internal.net.Host; -import com.arangodb.internal.net.HostDescription; -import com.arangodb.internal.net.HostHandler; -import com.arangodb.internal.net.HostResolver; -import com.arangodb.internal.net.RandomHostHandler; -import com.arangodb.internal.net.RoundRobinHostHandler; -import com.arangodb.internal.net.SimpleHostResolver; +import com.arangodb.internal.net.*; import com.arangodb.internal.util.HostUtils; import com.arangodb.internal.velocypack.VPackDriverModule; import com.arangodb.util.ArangoDeserializer; @@ -54,6 +31,16 @@ import com.arangodb.util.ArangoSerializer; import com.arangodb.velocypack.VPack; import com.arangodb.velocypack.VPackParser; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.net.ssl.SSLContext; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Properties; /** @@ -109,7 +96,7 @@ public InternalArangoDBBuilder() { vpackBuilder.registerModule(new VPackDriverModule()); vpackParserBuilder.registerModule(new VPackDriverModule()); host = new HostDescription(ArangoDefaults.DEFAULT_HOST, ArangoDefaults.DEFAULT_PORT); - hosts = new ArrayList(); + hosts = new ArrayList<>(); user = ArangoDefaults.DEFAULT_USER; loadProperties(ArangoDB.class.getResourceAsStream(DEFAULT_PROPERTY_FILE)); } @@ -211,16 +198,21 @@ protected void setSerializer(final ArangoSerialization serializer) { this.customSerializer = serializer; } - protected HostResolver createHostResolver(final Collection hosts, final int maxConnections,final ConnectionFactory connectionFactory) { - - if(acquireHostList != null && acquireHostList) { - LOG.debug("acquireHostList -> Use ExtendedHostResolver"); - return new ExtendedHostResolver(new ArrayList(hosts), maxConnections, connectionFactory, acquireHostListInterval); - } else { - LOG.debug("Use SimpleHostResolver"); - return new SimpleHostResolver(new ArrayList(hosts)); + private static void loadHosts(final Properties properties, final Collection hosts) { + final String hostsProp = properties.getProperty(PROPERTY_KEY_HOSTS); + if (hostsProp != null) { + final String[] hostsSplit = hostsProp.split(","); + for (final String host : hostsSplit) { + final String[] split = host.split(":"); + if (split.length != 2 || !split[1].matches("[0-9]+")) { + throw new ArangoDBException(String.format( + "Could not load property-value arangodb.hosts=%s. Expected format ip:port,ip:port,...", + hostsProp)); + } else { + hosts.add(new HostDescription(split[0], Integer.parseInt(split[1]))); + } + } } - } protected HostHandler createHostHandler(final HostResolver hostResolver) { @@ -249,21 +241,16 @@ protected HostHandler createHostHandler(final HostResolver hostResolver) { return new DirtyReadHostHandler(hostHandler, new RoundRobinHostHandler(hostResolver)); } - private static void loadHosts(final Properties properties, final Collection hosts) { - final String hostsProp = properties.getProperty(PROPERTY_KEY_HOSTS); - if (hostsProp != null) { - final String[] hostsSplit = hostsProp.split(","); - for (final String host : hostsSplit) { - final String[] split = host.split(":"); - if (split.length != 2 || !split[1].matches("[0-9]+")) { - throw new ArangoDBException(String.format( - "Could not load property-value arangodb.hosts=%s. Expected format ip:port,ip:port,...", - hostsProp)); - } else { - hosts.add(new HostDescription(split[0], Integer.valueOf(split[1]))); - } - } + protected HostResolver createHostResolver(final Collection hosts, final int maxConnections, final ConnectionFactory connectionFactory) { + + if (acquireHostList != null && acquireHostList) { + LOG.debug("acquireHostList -> Use ExtendedHostResolver"); + return new ExtendedHostResolver(new ArrayList<>(hosts), maxConnections, connectionFactory, acquireHostListInterval); + } else { + LOG.debug("Use SimpleHostResolver"); + return new SimpleHostResolver(new ArrayList<>(hosts)); } + } private static String loadHost(final Properties properties, final String currentValue) { @@ -355,7 +342,7 @@ protected static String getProperty( protected Collection createHostList( final int maxConnections, final ConnectionFactory connectionFactory) { - final Collection hostList = new ArrayList(); + final Collection hostList = new ArrayList<>(); for (final HostDescription host : hosts) { hostList.add(HostUtils.createHost(host, maxConnections, connectionFactory)); } diff --git a/src/main/java/com/arangodb/internal/InternalArangoDatabase.java b/src/main/java/com/arangodb/internal/InternalArangoDatabase.java index 2b9409f69..6b167267b 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDatabase.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDatabase.java @@ -20,11 +20,6 @@ package com.arangodb.internal; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; - import com.arangodb.entity.*; import com.arangodb.entity.arangosearch.AnalyzerEntity; import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; @@ -41,14 +36,18 @@ import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.RequestType; -import com.arangodb.velocystream.Response; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; /** * @author Mark Vollmary * @author Michele Rastelli */ -public abstract class InternalArangoDatabase, E extends ArangoExecutor> - extends ArangoExecuteable { +public abstract class InternalArangoDatabase, EXECUTOR extends ArangoExecutor> + extends ArangoExecuteable { protected static final String PATH_API_DATABASE = "/_api/database"; private static final String PATH_API_VERSION = "/_api/version"; @@ -120,13 +119,10 @@ protected Request getCollectionsRequest(final CollectionsReadOptions options) { } protected ResponseDeserializer> getCollectionsResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); - return util().deserialize(result, new Type>() { - }.getType()); - } + return response -> { + final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); + return util().deserialize(result, new Type>() { + }.getType()); }; } @@ -135,12 +131,7 @@ protected Request dropRequest() { } protected ResponseDeserializer createDropResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public Boolean deserialize(final Response response) throws VPackException { - return response.getBody().get(ArangoResponseField.RESULT).getAsBoolean(); - } - }; + return response -> response.getBody().get(ArangoResponseField.RESULT).getAsBoolean(); } protected Request grantAccessRequest(final String user, final Permissions permissions) { @@ -164,18 +155,15 @@ protected Request getPermissionsRequest(final String user) { } protected ResponseDeserializer getPermissionsResponseDeserialzer() { - return new ResponseDeserializer() { - @Override - public Permissions deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody(); - if (body != null) { - final VPackSlice result = body.get(ArangoResponseField.RESULT); - if (!result.isNone()) { - return util().deserialize(result, Permissions.class); - } + return response -> { + final VPackSlice body = response.getBody(); + if (body != null) { + final VPackSlice result = body.get(ArangoResponseField.RESULT); + if (!result.isNone()) { + return util().deserialize(result, Permissions.class); } - return null; } + return null; }; } @@ -300,23 +288,18 @@ protected Request deleteAqlFunctionRequest(final String name, final AqlFunctionD } protected ResponseDeserializer deleteAqlFunctionResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public Integer deserialize(final Response response) throws VPackException { - // compatibility with ArangoDB < 3.4 - // https://docs.arangodb.com/devel/Manual/ReleaseNotes/UpgradingChanges34.html - Integer count = null; - final VPackSlice body = response.getBody(); - if (body.isObject()) { - final VPackSlice deletedCount = body.get("deletedCount"); - if (deletedCount.isInteger()) { - count = deletedCount.getAsInt(); - } + return response -> { + // compatibility with ArangoDB < 3.4 + // https://docs.arangodb.com/devel/Manual/ReleaseNotes/UpgradingChanges34.html + Integer count = null; + final VPackSlice body = response.getBody(); + if (body.isObject()) { + final VPackSlice deletedCount = body.get("deletedCount"); + if (deletedCount.isInteger()) { + count = deletedCount.getAsInt(); } - return count; } - - ; + return count; }; } @@ -328,16 +311,13 @@ protected Request getAqlFunctionsRequest(final AqlFunctionGetOptions options) { } protected ResponseDeserializer> getAqlFunctionsResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody(); - // compatibility with ArangoDB < 3.4 - // https://docs.arangodb.com/devel/Manual/ReleaseNotes/UpgradingChanges34.html - final VPackSlice result = body.isArray() ? body : body.get(ArangoResponseField.RESULT); - return util().deserialize(result, new Type>() { - }.getType()); - } + return response -> { + final VPackSlice body = response.getBody(); + // compatibility with ArangoDB < 3.4 + // https://docs.arangodb.com/devel/Manual/ReleaseNotes/UpgradingChanges34.html + final VPackSlice result = body.isArray() ? body : body.get(ArangoResponseField.RESULT); + return util().deserialize(result, new Type>() { + }.getType()); }; } @@ -348,12 +328,7 @@ protected Request createGraphRequest( } protected ResponseDeserializer createGraphResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public GraphEntity deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get("graph"), GraphEntity.class); - } - }; + return response -> util().deserialize(response.getBody().get("graph"), GraphEntity.class); } protected Request getGraphsRequest() { @@ -361,13 +336,8 @@ protected Request getGraphsRequest() { } protected ResponseDeserializer> getGraphsResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get("graphs"), new Type>() { - }.getType()); - } - }; + return response -> util().deserialize(response.getBody().get("graphs"), new Type>() { + }.getType()); } protected Request transactionRequest(final String action, final TransactionOptions options) { @@ -376,18 +346,15 @@ protected Request transactionRequest(final String action, final TransactionOptio } protected ResponseDeserializer transactionResponseDeserializer(final Class type) { - return new ResponseDeserializer() { - @Override - public T deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody(); - if (body != null) { - final VPackSlice result = body.get(ArangoResponseField.RESULT); - if (!result.isNone() && !result.isNull()) { - return util(Serializer.CUSTOM).deserialize(result, type); - } + return response -> { + final VPackSlice body = response.getBody(); + if (body != null) { + final VPackSlice result = body.get(ArangoResponseField.RESULT); + if (!result.isNone() && !result.isNull()) { + return util(Serializer.CUSTOM).deserialize(result, type); } - return null; } + return null; }; } @@ -409,13 +376,10 @@ protected Request getStreamTransactionRequest(String id) { } protected ResponseDeserializer> transactionsResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice result = response.getBody().get("transactions"); - return util().deserialize(result, new Type>() { - }.getType()); - } + return response -> { + final VPackSlice result = response.getBody().get("transactions"); + return util().deserialize(result, new Type>() { + }.getType()); }; } @@ -424,13 +388,8 @@ protected Request commitStreamTransactionRequest(String id) { } protected ResponseDeserializer streamTransactionResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public StreamTransactionEntity deserialize(final Response response) throws VPackException { - return util() - .deserialize(response.getBody().get(ArangoResponseField.RESULT), StreamTransactionEntity.class); - } - }; + return response -> util() + .deserialize(response.getBody().get(ArangoResponseField.RESULT), StreamTransactionEntity.class); } protected Request getInfoRequest() { @@ -438,12 +397,7 @@ protected Request getInfoRequest() { } protected ResponseDeserializer getInfoResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public DatabaseEntity deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get(ArangoResponseField.RESULT), DatabaseEntity.class); - } - }; + return response -> util().deserialize(response.getBody().get(ArangoResponseField.RESULT), DatabaseEntity.class); } protected Request executeTraversalRequest(final TraversalOptions options) { @@ -451,46 +405,40 @@ protected Request executeTraversalRequest(final TraversalOptions options) { .setBody(util().serialize(options != null ? options : new TransactionOptions())); } - @SuppressWarnings("hiding") protected ResponseDeserializer> executeTraversalResponseDeserializer( final Class vertexClass, final Class edgeClass) { - return new ResponseDeserializer>() { - @Override - public TraversalEntity deserialize(final Response response) throws VPackException { - final TraversalEntity result = new TraversalEntity(); - final VPackSlice visited = response.getBody().get(ArangoResponseField.RESULT).get("visited"); - result.setVertices(deserializeVertices(vertexClass, visited)); - - final Collection> paths = new ArrayList>(); - for (final Iterator iterator = visited.get("paths").arrayIterator(); iterator.hasNext(); ) { - final PathEntity path = new PathEntity(); - final VPackSlice next = iterator.next(); - path.setEdges(deserializeEdges(edgeClass, next)); - path.setVertices(deserializeVertices(vertexClass, next)); - paths.add(path); - } - result.setPaths(paths); - return result; + return response -> { + final TraversalEntity result = new TraversalEntity<>(); + final VPackSlice visited = response.getBody().get(ArangoResponseField.RESULT).get("visited"); + result.setVertices(deserializeVertices(vertexClass, visited)); + + final Collection> paths = new ArrayList<>(); + for (final Iterator iterator = visited.get("paths").arrayIterator(); iterator.hasNext(); ) { + final PathEntity path = new PathEntity<>(); + final VPackSlice next = iterator.next(); + path.setEdges(deserializeEdges(edgeClass, next)); + path.setVertices(deserializeVertices(vertexClass, next)); + paths.add(path); } + result.setPaths(paths); + return result; }; } - @SuppressWarnings("unchecked") protected Collection deserializeVertices(final Class vertexClass, final VPackSlice vpack) throws VPackException { - final Collection vertices = new ArrayList(); + final Collection vertices = new ArrayList<>(); for (final Iterator iterator = vpack.get("vertices").arrayIterator(); iterator.hasNext(); ) { - vertices.add((V) util(Serializer.CUSTOM).deserialize(iterator.next(), vertexClass)); + vertices.add(util(Serializer.CUSTOM).deserialize(iterator.next(), vertexClass)); } return vertices; } - @SuppressWarnings({"hiding", "unchecked"}) protected Collection deserializeEdges(final Class edgeClass, final VPackSlice next) throws VPackException { - final Collection edges = new ArrayList(); + final Collection edges = new ArrayList<>(); for (final Iterator iteratorEdge = next.get("edges").arrayIterator(); iteratorEdge.hasNext(); ) { - edges.add((E) util(Serializer.CUSTOM).deserialize(iteratorEdge.next(), edgeClass)); + edges.add(util(Serializer.CUSTOM).deserialize(iteratorEdge.next(), edgeClass)); } return edges; } @@ -504,13 +452,10 @@ protected Request getViewsRequest() { } protected ResponseDeserializer> getViewsResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); - return util().deserialize(result, new Type>() { - }.getType()); - } + return response -> { + final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); + return util().deserialize(result, new Type>() { + }.getType()); }; } @@ -533,13 +478,10 @@ protected Request getAnalyzersRequest() { } protected ResponseDeserializer> getAnalyzersResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); - return util().deserialize(result, new Type>() { - }.getType()); - } + return response -> { + final VPackSlice result = response.getBody().get(ArangoResponseField.RESULT); + return util().deserialize(result, new Type>() { + }.getType()); }; } diff --git a/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java b/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java index 77c6fbc0a..fb227802b 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java +++ b/src/main/java/com/arangodb/internal/InternalArangoEdgeCollection.java @@ -20,9 +20,6 @@ package com.arangodb.internal; -import java.util.HashMap; -import java.util.Map; - import com.arangodb.entity.DocumentField; import com.arangodb.entity.EdgeEntity; import com.arangodb.entity.EdgeUpdateEntity; @@ -33,10 +30,11 @@ import com.arangodb.model.*; import com.arangodb.util.ArangoSerializer; import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.RequestType; -import com.arangodb.velocystream.Response; + +import java.util.HashMap; +import java.util.Map; /** * @author Mark Vollmary @@ -75,18 +73,15 @@ protected Request insertEdgeRequest(final T value, final EdgeCreateOptions o } protected ResponseDeserializer insertEdgeResponseDeserializer(final T value) { - return new ResponseDeserializer() { - @Override - public EdgeEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody().get(EDGE); - final EdgeEntity doc = util().deserialize(body, EdgeEntity.class); - final Map values = new HashMap(); - values.put(DocumentField.Type.ID, doc.getId()); - values.put(DocumentField.Type.KEY, doc.getKey()); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - return doc; - } + return response -> { + final VPackSlice body = response.getBody().get(EDGE); + final EdgeEntity doc = util().deserialize(body, EdgeEntity.class); + final Map values = new HashMap<>(); + values.put(DocumentField.Type.ID, doc.getId()); + values.put(DocumentField.Type.KEY, doc.getKey()); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + return doc; }; } @@ -103,12 +98,7 @@ protected Request getEdgeRequest(final String key, final GraphDocumentReadOption } protected ResponseDeserializer getEdgeResponseDeserializer(final Class type) { - return new ResponseDeserializer() { - @Override - public T deserialize(final Response response) throws VPackException { - return util(Serializer.CUSTOM).deserialize(response.getBody().get(EDGE), type); - } - }; + return response -> util(Serializer.CUSTOM).deserialize(response.getBody().get(EDGE), type); } protected Request replaceEdgeRequest(final String key, final T value, final EdgeReplaceOptions options) { @@ -122,16 +112,13 @@ protected Request replaceEdgeRequest(final String key, final T value, final } protected ResponseDeserializer replaceEdgeResponseDeserializer(final T value) { - return new ResponseDeserializer() { - @Override - public EdgeUpdateEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody().get(EDGE); - final EdgeUpdateEntity doc = util().deserialize(body, EdgeUpdateEntity.class); - final Map values = new HashMap(); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - return doc; - } + return response -> { + final VPackSlice body = response.getBody().get(EDGE); + final EdgeUpdateEntity doc = util().deserialize(body, EdgeUpdateEntity.class); + final Map values = new HashMap<>(); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + return doc; }; } @@ -149,16 +136,13 @@ protected Request updateEdgeRequest(final String key, final T value, final E } protected ResponseDeserializer updateEdgeResponseDeserializer(final T value) { - return new ResponseDeserializer() { - @Override - public EdgeUpdateEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody().get(EDGE); - final EdgeUpdateEntity doc = util().deserialize(body, EdgeUpdateEntity.class); - final Map values = new HashMap(); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - return doc; - } + return response -> { + final VPackSlice body = response.getBody().get(EDGE); + final EdgeUpdateEntity doc = util().deserialize(body, EdgeUpdateEntity.class); + final Map values = new HashMap<>(); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + return doc; }; } diff --git a/src/main/java/com/arangodb/internal/InternalArangoGraph.java b/src/main/java/com/arangodb/internal/InternalArangoGraph.java index 21748fb15..6226929d0 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoGraph.java +++ b/src/main/java/com/arangodb/internal/InternalArangoGraph.java @@ -20,18 +20,16 @@ package com.arangodb.internal; -import java.util.Collection; - import com.arangodb.entity.EdgeDefinition; import com.arangodb.entity.GraphEntity; import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; import com.arangodb.model.OptionsBuilder; import com.arangodb.model.VertexCollectionCreateOptions; import com.arangodb.velocypack.Type; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.RequestType; -import com.arangodb.velocystream.Response; + +import java.util.Collection; /** * @author Mark Vollmary @@ -87,13 +85,8 @@ protected Request getVertexCollectionsRequest() { } protected ResponseDeserializer> getVertexCollectionsResponseDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get("collections"), new Type>() { - }.getType()); - } - }; + return response -> util().deserialize(response.getBody().get("collections"), new Type>() { + }.getType()); } protected Request addVertexCollectionRequest(final String name) { @@ -111,13 +104,8 @@ protected Request getEdgeDefinitionsRequest() { } protected ResponseDeserializer> getEdgeDefinitionsDeserializer() { - return new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get("collections"), new Type>() { - }.getType()); - } - }; + return response -> util().deserialize(response.getBody().get("collections"), new Type>() { + }.getType()); } protected Request addEdgeDefinitionRequest(final EdgeDefinition definition) { @@ -127,12 +115,7 @@ protected Request addEdgeDefinitionRequest(final EdgeDefinition definition) { } protected ResponseDeserializer addEdgeDefinitionResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public GraphEntity deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get(GRAPH), GraphEntity.class); - } - }; + return response -> util().deserialize(response.getBody().get(GRAPH), GraphEntity.class); } protected Request replaceEdgeDefinitionRequest(final EdgeDefinition definition) { @@ -143,12 +126,7 @@ protected Request replaceEdgeDefinitionRequest(final EdgeDefinition definition) } protected ResponseDeserializer replaceEdgeDefinitionResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public GraphEntity deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get(GRAPH), GraphEntity.class); - } - }; + return response -> util().deserialize(response.getBody().get(GRAPH), GraphEntity.class); } protected Request removeEdgeDefinitionRequest(final String definitionName) { @@ -156,12 +134,7 @@ protected Request removeEdgeDefinitionRequest(final String definitionName) { } protected ResponseDeserializer removeEdgeDefinitionResponseDeserializer() { - return new ResponseDeserializer() { - @Override - public GraphEntity deserialize(final Response response) throws VPackException { - return util().deserialize(response.getBody().get(GRAPH), GraphEntity.class); - } - }; + return response -> util().deserialize(response.getBody().get(GRAPH), GraphEntity.class); } } diff --git a/src/main/java/com/arangodb/internal/InternalArangoRoute.java b/src/main/java/com/arangodb/internal/InternalArangoRoute.java index 6410f361c..2194d6d54 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoRoute.java +++ b/src/main/java/com/arangodb/internal/InternalArangoRoute.java @@ -20,13 +20,13 @@ package com.arangodb.internal; +import com.arangodb.velocystream.Request; +import com.arangodb.velocystream.RequestType; + import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import com.arangodb.velocystream.Request; -import com.arangodb.velocystream.RequestType; - /** * @author Mark Vollmary * @@ -45,8 +45,8 @@ protected InternalArangoRoute(final D db, final String path, final Map(); - this.headerParam = new HashMap(); + this.queryParam = new HashMap<>(); + this.headerParam = new HashMap<>(); this.headerParam.putAll(headerParam); } diff --git a/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java b/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java index 15874f789..acd922821 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java +++ b/src/main/java/com/arangodb/internal/InternalArangoVertexCollection.java @@ -20,9 +20,6 @@ package com.arangodb.internal; -import java.util.HashMap; -import java.util.Map; - import com.arangodb.entity.DocumentField; import com.arangodb.entity.VertexEntity; import com.arangodb.entity.VertexUpdateEntity; @@ -33,10 +30,11 @@ import com.arangodb.model.*; import com.arangodb.util.ArangoSerializer; import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.RequestType; -import com.arangodb.velocystream.Response; + +import java.util.HashMap; +import java.util.Map; /** * @author Mark Vollmary @@ -79,18 +77,15 @@ protected Request insertVertexRequest(final T value, final VertexCreateOptio } protected ResponseDeserializer insertVertexResponseDeserializer(final T value) { - return new ResponseDeserializer() { - @Override - public VertexEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody().get(VERTEX); - final VertexEntity doc = util().deserialize(body, VertexEntity.class); - final Map values = new HashMap(); - values.put(DocumentField.Type.ID, doc.getId()); - values.put(DocumentField.Type.KEY, doc.getKey()); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - return doc; - } + return response -> { + final VPackSlice body = response.getBody().get(VERTEX); + final VertexEntity doc = util().deserialize(body, VertexEntity.class); + final Map values = new HashMap<>(); + values.put(DocumentField.Type.ID, doc.getId()); + values.put(DocumentField.Type.KEY, doc.getKey()); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + return doc; }; } @@ -107,12 +102,7 @@ protected Request getVertexRequest(final String key, final GraphDocumentReadOpti } protected ResponseDeserializer getVertexResponseDeserializer(final Class type) { - return new ResponseDeserializer() { - @Override - public T deserialize(final Response response) throws VPackException { - return util(Serializer.CUSTOM).deserialize(response.getBody().get(VERTEX), type); - } - }; + return response -> util(Serializer.CUSTOM).deserialize(response.getBody().get(VERTEX), type); } protected Request replaceVertexRequest(final String key, final T value, final VertexReplaceOptions options) { @@ -126,16 +116,13 @@ protected Request replaceVertexRequest(final String key, final T value, fina } protected ResponseDeserializer replaceVertexResponseDeserializer(final T value) { - return new ResponseDeserializer() { - @Override - public VertexUpdateEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody().get(VERTEX); - final VertexUpdateEntity doc = util().deserialize(body, VertexUpdateEntity.class); - final Map values = new HashMap(); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - return doc; - } + return response -> { + final VPackSlice body = response.getBody().get(VERTEX); + final VertexUpdateEntity doc = util().deserialize(body, VertexUpdateEntity.class); + final Map values = new HashMap<>(); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + return doc; }; } @@ -153,16 +140,13 @@ protected Request updateVertexRequest(final String key, final T value, final } protected ResponseDeserializer updateVertexResponseDeserializer(final T value) { - return new ResponseDeserializer() { - @Override - public VertexUpdateEntity deserialize(final Response response) throws VPackException { - final VPackSlice body = response.getBody().get(VERTEX); - final VertexUpdateEntity doc = util().deserialize(body, VertexUpdateEntity.class); - final Map values = new HashMap(); - values.put(DocumentField.Type.REV, doc.getRev()); - executor.documentCache().setValues(value, values); - return doc; - } + return response -> { + final VPackSlice body = response.getBody().get(VERTEX); + final VertexUpdateEntity doc = util().deserialize(body, VertexUpdateEntity.class); + final Map values = new HashMap<>(); + values.put(DocumentField.Type.REV, doc.getRev()); + executor.documentCache().setValues(value, values); + return doc; }; } diff --git a/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java b/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java index fbfb0a13d..36f89b036 100644 --- a/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java +++ b/src/main/java/com/arangodb/internal/cursor/AbstractArangoIterable.java @@ -20,14 +20,14 @@ package com.arangodb.internal.cursor; -import java.util.Collection; -import java.util.Iterator; - import com.arangodb.ArangoIterable; import com.arangodb.ArangoIterator; import com.arangodb.Function; import com.arangodb.Predicate; +import java.util.Collection; +import java.util.Iterator; + /** * @author Mark Vollmary * @@ -36,12 +36,12 @@ public abstract class AbstractArangoIterable implements ArangoIterable { @Override public ArangoIterable map(final Function mapper) { - return new ArangoMappingIterable(this, mapper); + return new ArangoMappingIterable<>(this, mapper); } @Override public ArangoIterable filter(final Predicate predicate) { - return new ArangoFilterIterable(this, predicate); + return new ArangoFilterIterable<>(this, predicate); } @Override diff --git a/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java b/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java index 0342d466c..aa95e642b 100644 --- a/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java +++ b/src/main/java/com/arangodb/internal/cursor/ArangoCursorImpl.java @@ -20,10 +20,6 @@ package com.arangodb.internal.cursor; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - import com.arangodb.ArangoCursor; import com.arangodb.ArangoIterator; import com.arangodb.Consumer; @@ -34,6 +30,10 @@ import com.arangodb.internal.ArangoCursorExecute; import com.arangodb.internal.InternalArangoDatabase; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + /** * @author Mark Vollmary * @@ -59,7 +59,7 @@ protected ArangoCursorIterator createIterator( final InternalArangoDatabase db, final ArangoCursorExecute execute, final CursorEntity result) { - return new ArangoCursorIterator(cursor, execute, db, result); + return new ArangoCursorIterator<>(cursor, execute, db, result); } @Override @@ -114,7 +114,7 @@ public T next() { @Override public List asListRemaining() { - final List remaining = new ArrayList(); + final List remaining = new ArrayList<>(); while (hasNext()) { remaining.add(next()); } diff --git a/src/main/java/com/arangodb/internal/cursor/ArangoFilterIterable.java b/src/main/java/com/arangodb/internal/cursor/ArangoFilterIterable.java index a437becb2..c58be0e4e 100644 --- a/src/main/java/com/arangodb/internal/cursor/ArangoFilterIterable.java +++ b/src/main/java/com/arangodb/internal/cursor/ArangoFilterIterable.java @@ -42,7 +42,7 @@ protected ArangoFilterIterable(final ArangoIterable iterable, final Predicate @Override public ArangoIterator iterator() { - return new ArangoFilterIterator(iterable.iterator(), predicate); + return new ArangoFilterIterator<>(iterable.iterator(), predicate); } @Override diff --git a/src/main/java/com/arangodb/internal/cursor/ArangoMappingIterable.java b/src/main/java/com/arangodb/internal/cursor/ArangoMappingIterable.java index 2d55c67e5..eb30244b7 100644 --- a/src/main/java/com/arangodb/internal/cursor/ArangoMappingIterable.java +++ b/src/main/java/com/arangodb/internal/cursor/ArangoMappingIterable.java @@ -42,7 +42,7 @@ protected ArangoMappingIterable(final ArangoIterable iterable, final Function @Override public ArangoIterator iterator() { - return new ArangoMappingIterator(iterable.iterator(), mapper); + return new ArangoMappingIterator<>(iterable.iterator(), mapper); } @Override diff --git a/src/main/java/com/arangodb/internal/http/HttpCommunication.java b/src/main/java/com/arangodb/internal/http/HttpCommunication.java index 351043575..5416333b7 100644 --- a/src/main/java/com/arangodb/internal/http/HttpCommunication.java +++ b/src/main/java/com/arangodb/internal/http/HttpCommunication.java @@ -20,25 +20,19 @@ package com.arangodb.internal.http; -import java.io.Closeable; -import java.io.IOException; -import java.net.SocketException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.arangodb.ArangoDBException; -import com.arangodb.internal.net.AccessType; -import com.arangodb.internal.net.ArangoDBRedirectException; -import com.arangodb.internal.net.Host; -import com.arangodb.internal.net.HostDescription; -import com.arangodb.internal.net.HostHandle; -import com.arangodb.internal.net.HostHandler; +import com.arangodb.internal.net.*; import com.arangodb.internal.util.HostUtils; import com.arangodb.internal.util.RequestUtils; import com.arangodb.util.ArangoSerialization; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.Closeable; +import java.io.IOException; +import java.net.SocketException; /** * @author Mark Vollmary @@ -106,7 +100,7 @@ public Response execute(final Request request, final HostHandle hostHandle) thro } } catch (final ArangoDBException e) { if (e instanceof ArangoDBRedirectException) { - final String location = ArangoDBRedirectException.class.cast(e).getLocation(); + final String location = ((ArangoDBRedirectException) e).getLocation(); final HostDescription redirectHost = HostUtils.createFromLocation(location); hostHandler.closeCurrentOnError(); hostHandler.fail(); diff --git a/src/main/java/com/arangodb/internal/http/HttpConnection.java b/src/main/java/com/arangodb/internal/http/HttpConnection.java index c34e49638..c93625479 100644 --- a/src/main/java/com/arangodb/internal/http/HttpConnection.java +++ b/src/main/java/com/arangodb/internal/http/HttpConnection.java @@ -20,36 +20,24 @@ package com.arangodb.internal.http; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.SocketException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.TimeUnit; - -import javax.net.ssl.SSLContext; - -import org.apache.http.Header; -import org.apache.http.HeaderElement; -import org.apache.http.HeaderElementIterator; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; +import com.arangodb.ArangoDBException; +import com.arangodb.Protocol; +import com.arangodb.internal.net.Connection; +import com.arangodb.internal.net.HostDescription; +import com.arangodb.internal.util.CURLLogger; +import com.arangodb.internal.util.IOUtils; +import com.arangodb.internal.util.ResponseUtils; +import com.arangodb.util.ArangoSerialization; +import com.arangodb.util.ArangoSerializer.Options; +import com.arangodb.velocypack.VPackSlice; +import com.arangodb.velocystream.Request; +import com.arangodb.velocystream.Response; +import org.apache.http.*; import org.apache.http.auth.AuthenticationException; import org.apache.http.auth.Credentials; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpHead; -import org.apache.http.client.methods.HttpPatch; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.client.methods.HttpPut; -import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.client.methods.*; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.ConnectionKeepAliveStrategy; @@ -67,23 +55,18 @@ import org.apache.http.message.BasicHeaderElementIterator; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; -import org.apache.http.protocol.HttpContext; import org.apache.http.ssl.SSLContexts; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.arangodb.ArangoDBException; -import com.arangodb.Protocol; -import com.arangodb.internal.net.Connection; -import com.arangodb.internal.net.HostDescription; -import com.arangodb.internal.util.CURLLogger; -import com.arangodb.internal.util.IOUtils; -import com.arangodb.internal.util.ResponseUtils; -import com.arangodb.util.ArangoSerialization; -import com.arangodb.util.ArangoSerializer.Options; -import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocystream.Request; -import com.arangodb.velocystream.Response; +import javax.net.ssl.SSLContext; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; /** * @author Mark Vollmary @@ -170,7 +153,7 @@ public HttpConnection build() { private final ArangoSerialization util; private final Boolean useSsl; private final Protocol contentType; - private HostDescription host; + private final HostDescription host; private HttpConnection(final HostDescription host, final Integer timeout, final String user, final String password, final Boolean useSsl, final SSLContext sslContext, final ArangoSerialization util, final Protocol contentType, @@ -183,7 +166,7 @@ private HttpConnection(final HostDescription host, final Integer timeout, final this.util = util; this.contentType = contentType; final RegistryBuilder registryBuilder = RegistryBuilder - . create(); + .create(); if (Boolean.TRUE == useSsl) { if (sslContext != null) { registryBuilder.register("https", new SSLConnectionSocketFactory(sslContext)); @@ -206,13 +189,8 @@ private HttpConnection(final HostDescription host, final Integer timeout, final if (httpCookieSpec != null && httpCookieSpec.length() > 1) { requestConfig.setCookieSpec(httpCookieSpec); } - - final ConnectionKeepAliveStrategy keepAliveStrategy = new ConnectionKeepAliveStrategy() { - @Override - public long getKeepAliveDuration(final HttpResponse response, final HttpContext context) { - return HttpConnection.this.getKeepAliveDuration(response); - } - }; + + final ConnectionKeepAliveStrategy keepAliveStrategy = (response, context) -> HttpConnection.this.getKeepAliveDuration(response); final HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig.build()) .setConnectionManager(cm).setKeepAliveStrategy(keepAliveStrategy) .setRetryHandler(new DefaultHttpRequestRetryHandler()); @@ -244,22 +222,23 @@ public void close() throws IOException { client.close(); } - public Response execute(final Request request) throws ArangoDBException, IOException, SocketException { - final String url = buildUrl(buildBaseUrl(host), request); - final HttpRequestBase httpRequest = buildHttpRequestBase(request, url); - httpRequest.setHeader("User-Agent", "Mozilla/5.0 (compatible; ArangoDB-JavaDriver/1.1; +http://mt.orz.at/)"); - if (contentType == Protocol.HTTP_VPACK) { - httpRequest.setHeader("Accept", "application/x-velocypack"); + private static String buildUrl(final String baseUrl, final Request request) { + final StringBuilder sb = new StringBuilder().append(baseUrl); + final String database = request.getDatabase(); + if (database != null && !database.isEmpty()) { + sb.append("/_db/").append(database); } - addHeader(request, httpRequest); - final Credentials credentials = addCredentials(httpRequest); - if (LOGGER.isDebugEnabled()) { - CURLLogger.log(url, request, credentials, util); + sb.append(request.getRequest()); + if (!request.getQueryParam().isEmpty()) { + if (request.getRequest().contains("?")) { + sb.append("&"); + } else { + sb.append("?"); + } + final String paramString = URLEncodedUtils.format(toList(request.getQueryParam()), "utf-8"); + sb.append(paramString); } - Response response; - response = buildResponse(client.execute(httpRequest)); - checkError(response); - return response; + return sb.toString(); } private HttpRequestBase buildHttpRequestBase(final Request request, final String url) { @@ -306,35 +285,34 @@ private String buildBaseUrl(final HostDescription host) { return (Boolean.TRUE == useSsl ? "https://" : "http://") + host.getHost() + ":" + host.getPort(); } - private static String buildUrl(final String baseUrl, final Request request) throws UnsupportedEncodingException { - final StringBuilder sb = new StringBuilder().append(baseUrl); - final String database = request.getDatabase(); - if (database != null && !database.isEmpty()) { - sb.append("/_db/").append(database); - } - sb.append(request.getRequest()); - if (!request.getQueryParam().isEmpty()) { - if (request.getRequest().contains("?")) { - sb.append("&"); - } else { - sb.append("?"); - } - final String paramString = URLEncodedUtils.format(toList(request.getQueryParam()), "utf-8"); - sb.append(paramString); - } - return sb.toString(); - } - private static List toList(final Map parameters) { - final ArrayList paramList = new ArrayList(parameters.size()); + final ArrayList paramList = new ArrayList<>(parameters.size()); for (final Entry param : parameters.entrySet()) { if (param.getValue() != null) { - paramList.add(new BasicNameValuePair(param.getKey(), param.getValue().toString())); + paramList.add(new BasicNameValuePair(param.getKey(), param.getValue())); } } return paramList; } + public Response execute(final Request request) throws ArangoDBException, IOException { + final String url = buildUrl(buildBaseUrl(host), request); + final HttpRequestBase httpRequest = buildHttpRequestBase(request, url); + httpRequest.setHeader("User-Agent", "Mozilla/5.0 (compatible; ArangoDB-JavaDriver/1.1; +http://mt.orz.at/)"); + if (contentType == Protocol.HTTP_VPACK) { + httpRequest.setHeader("Accept", "application/x-velocypack"); + } + addHeader(request, httpRequest); + final Credentials credentials = addCredentials(httpRequest); + if (LOGGER.isDebugEnabled()) { + CURLLogger.log(url, request, credentials, util); + } + Response response; + response = buildResponse(client.execute(httpRequest)); + checkError(response); + return response; + } + private static void addHeader(final Request request, final HttpRequestBase httpRequest) { for (final Entry header : request.getHeaderParam().entrySet()) { httpRequest.addHeader(header.getKey(), header.getValue()); diff --git a/src/main/java/com/arangodb/internal/http/HttpProtocol.java b/src/main/java/com/arangodb/internal/http/HttpProtocol.java index b18eb10cc..a964d65ac 100644 --- a/src/main/java/com/arangodb/internal/http/HttpProtocol.java +++ b/src/main/java/com/arangodb/internal/http/HttpProtocol.java @@ -20,16 +20,14 @@ package com.arangodb.internal.http; -import java.io.IOException; - -import org.apache.http.client.ClientProtocolException; - import com.arangodb.ArangoDBException; import com.arangodb.internal.net.CommunicationProtocol; import com.arangodb.internal.net.HostHandle; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.Response; +import java.io.IOException; + /** * @author Mark Vollmary * @@ -47,8 +45,6 @@ public HttpProtocol(final HttpCommunication httpCommunitaction) { public Response execute(final Request request, final HostHandle hostHandle) throws ArangoDBException { try { return httpCommunitaction.execute(request, hostHandle); - } catch (final ClientProtocolException e) { - throw new ArangoDBException(e); } catch (final IOException e) { throw new ArangoDBException(e); } diff --git a/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java b/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java index 5aa7d5d45..e58391692 100644 --- a/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java +++ b/src/main/java/com/arangodb/internal/net/ConnectionPoolImpl.java @@ -20,15 +20,14 @@ package com.arangodb.internal.net; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - +import com.arangodb.internal.velocystream.internal.VstConnection; +import com.arangodb.internal.velocystream.internal.VstConnectionSync; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.arangodb.internal.velocystream.internal.VstConnection; -import com.arangodb.internal.velocystream.internal.VstConnectionSync; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; /** * @author Mark Vollmary @@ -50,7 +49,7 @@ public ConnectionPoolImpl(final HostDescription host, final Integer maxConnectio this.host = host; this.maxConnections = maxConnections; this.factory = factory; - connections = new ArrayList(); + connections = new ArrayList<>(); current = 0; } diff --git a/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java b/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java index d5607a174..186034417 100644 --- a/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java +++ b/src/main/java/com/arangodb/internal/net/DirtyReadHostHandler.java @@ -39,12 +39,10 @@ public DirtyReadHostHandler(final HostHandler master, final HostHandler follower } private HostHandler determineHostHandler() { - switch (currentAccessType) { - case DIRTY_READ: + if (currentAccessType == AccessType.DIRTY_READ) { return follower; - default: - return master; } + return master; } @Override diff --git a/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java b/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java index df54dc60c..f2b28b2da 100644 --- a/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java +++ b/src/main/java/com/arangodb/internal/net/ExtendedHostResolver.java @@ -20,28 +20,18 @@ package com.arangodb.internal.net; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.arangodb.ArangoDBException; -import com.arangodb.internal.ArangoExecutor.ResponseDeserializer; import com.arangodb.internal.ArangoExecutorSync; import com.arangodb.internal.ArangoRequestParam; import com.arangodb.internal.util.HostUtils; import com.arangodb.util.ArangoSerialization; import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.RequestType; -import com.arangodb.velocystream.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; /** * @author Mark Vollmary @@ -51,13 +41,13 @@ public class ExtendedHostResolver implements HostResolver { private static final Logger LOGGER = LoggerFactory.getLogger(ExtendedHostResolver.class); - private HostSet hosts; + private final HostSet hosts; private final Integer maxConnections; private final ConnectionFactory connectionFactory; private long lastUpdate; - private Integer acquireHostListInterval; + private final Integer acquireHostListInterval; private ArangoExecutorSync executor; private ArangoSerialization arangoSerialization; @@ -103,12 +93,12 @@ public HostSet resolve(boolean initial, boolean closeConnections) { final String[] s = endpoint.replaceAll(".*://", "").split(":"); if (s.length == 2) { - final HostDescription description = new HostDescription(s[0], Integer.valueOf(s[1])); + final HostDescription description = new HostDescription(s[0], Integer.parseInt(s[1])); hosts.addHost(HostUtils.createHost(description, maxConnections, connectionFactory)); } else if (s.length == 4) { // IPV6 Address - TODO: we need a proper function to resolve AND support IPV4 & IPV6 functions // globally - final HostDescription description = new HostDescription("127.0.0.1", Integer.valueOf(s[3])); + final HostDescription description = new HostDescription("127.0.0.1", Integer.parseInt(s[3])); hosts.addHost(HostUtils.createHost(description, maxConnections, connectionFactory)); } else { LOGGER.warn("Skip Endpoint (Missing Port)" + endpoint); @@ -118,13 +108,7 @@ public HostSet resolve(boolean initial, boolean closeConnections) { LOGGER.warn("Skip Endpoint (Format)" + endpoint); } } - - try { - hosts.clearAllMarkedForDeletion(); - } catch (IOException e) { - LOGGER.error("Cant close all Hosts with MarkedForDeletion", e); - } - + hosts.clearAllMarkedForDeletion(); } return hosts; @@ -138,29 +122,24 @@ private Collection resolveFromServer() throws ArangoDBException { response = executor.execute( new Request(ArangoRequestParam.SYSTEM, RequestType.GET, "/_api/cluster/endpoints"), - new ResponseDeserializer>() { - @Override - public Collection deserialize(final Response response) throws VPackException { - final VPackSlice field = response.getBody().get("endpoints"); + response1 -> { + final VPackSlice field = response1.getBody().get("endpoints"); Collection endpoints; if (field.isNone()) { - endpoints = Collections. emptyList(); + endpoints = Collections.emptyList(); } else { final Collection> tmp = arangoSerialization.deserialize(field, Collection.class); - endpoints = new ArrayList(); + endpoints = new ArrayList<>(); for (final Map map : tmp) { - for (final String value : map.values()) { - endpoints.add(value); - } + endpoints.addAll(map.values()); } } return endpoints; - } - }, null); + }, null); } catch (final ArangoDBException e) { final Integer responseCode = e.getResponseCode(); if (responseCode != null && responseCode == 403) { - response = Collections. emptyList(); + response = Collections.emptyList(); } else { throw e; } diff --git a/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java b/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java index b7d0183f6..6d3f827cb 100644 --- a/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java +++ b/src/main/java/com/arangodb/internal/net/FallbackHostHandler.java @@ -20,7 +20,6 @@ package com.arangodb.internal.net; -import java.io.IOException; import java.util.List; /** @@ -78,7 +77,7 @@ public void confirm() { } @Override - public void close() throws IOException { + public void close() { final HostSet hosts = resolver.resolve(false, false); hosts.close(); } diff --git a/src/main/java/com/arangodb/internal/net/HostDescription.java b/src/main/java/com/arangodb/internal/net/HostDescription.java index 9b9a4dd1f..a53ce4026 100644 --- a/src/main/java/com/arangodb/internal/net/HostDescription.java +++ b/src/main/java/com/arangodb/internal/net/HostDescription.java @@ -76,10 +76,7 @@ public boolean equals(final Object obj) { } else if (!host.equals(other.host)) { return false; } - if (port != other.port) { - return false; - } - return true; + return port == other.port; } } diff --git a/src/main/java/com/arangodb/internal/net/HostImpl.java b/src/main/java/com/arangodb/internal/net/HostImpl.java index 04a428537..6dfe9660f 100644 --- a/src/main/java/com/arangodb/internal/net/HostImpl.java +++ b/src/main/java/com/arangodb/internal/net/HostImpl.java @@ -20,10 +20,10 @@ package com.arangodb.internal.net; -import java.io.IOException; - import com.arangodb.ArangoDBException; +import java.io.IOException; + /** * @author Mark Vollmary * @@ -96,11 +96,8 @@ public boolean equals(Object obj) { return false; HostImpl other = (HostImpl) obj; if (description == null) { - if (other.description != null) - return false; - } else if (!description.equals(other.description)) - return false; - return true; + return other.description == null; + } else return description.equals(other.description); } diff --git a/src/main/java/com/arangodb/internal/net/HostSet.java b/src/main/java/com/arangodb/internal/net/HostSet.java index f3b727c4a..a0c41b207 100644 --- a/src/main/java/com/arangodb/internal/net/HostSet.java +++ b/src/main/java/com/arangodb/internal/net/HostSet.java @@ -1,17 +1,17 @@ package com.arangodb.internal.net; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - public class HostSet { private static final Logger LOGGER = LoggerFactory.getLogger(HostSet.class); - private ArrayList hosts = new ArrayList(); + private final ArrayList hosts = new ArrayList<>(); public HostSet() { super(); @@ -70,8 +70,8 @@ public void markAllForDeletion() { } } - - public void clearAllMarkedForDeletion() throws IOException { + + public void clearAllMarkedForDeletion() { LOGGER.debug("Clear all Hosts in Set with markForDeletion"); diff --git a/src/main/java/com/arangodb/internal/net/RandomHostHandler.java b/src/main/java/com/arangodb/internal/net/RandomHostHandler.java index fff3e9efa..3a2f3eb0f 100644 --- a/src/main/java/com/arangodb/internal/net/RandomHostHandler.java +++ b/src/main/java/com/arangodb/internal/net/RandomHostHandler.java @@ -20,10 +20,8 @@ package com.arangodb.internal.net; -import java.io.IOException; import java.util.ArrayList; import java.util.Collections; -import java.util.List; /** * @author Mark Vollmary @@ -63,8 +61,8 @@ public void fail() { } private Host getRandomHost(final boolean initial, final boolean closeConnections) { - - final ArrayList hosts = new ArrayList(resolver.resolve(initial, closeConnections).getHostsList()); + + final ArrayList hosts = new ArrayList<>(resolver.resolve(initial, closeConnections).getHostsList()); Collections.shuffle(hosts); return hosts.get(0); } @@ -79,7 +77,7 @@ public void confirm() { } @Override - public void close() throws IOException { + public void close() { final HostSet hosts = resolver.resolve(false, false); hosts.close(); } diff --git a/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java b/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java index 612be592b..90580c5c0 100644 --- a/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java +++ b/src/main/java/com/arangodb/internal/net/RoundRobinHostHandler.java @@ -20,8 +20,6 @@ package com.arangodb.internal.net; -import java.io.IOException; - /** * @author Mark Vollmary * @@ -91,7 +89,7 @@ public void confirm() { } @Override - public void close() throws IOException { + public void close() { final HostSet hosts = resolver.resolve(false, false); hosts.close(); } diff --git a/src/main/java/com/arangodb/internal/util/ArangoSerializerImpl.java b/src/main/java/com/arangodb/internal/util/ArangoSerializerImpl.java index d6e03f590..70803d9eb 100644 --- a/src/main/java/com/arangodb/internal/util/ArangoSerializerImpl.java +++ b/src/main/java/com/arangodb/internal/util/ArangoSerializerImpl.java @@ -20,8 +20,6 @@ package com.arangodb.internal.util; -import java.util.Iterator; - import com.arangodb.ArangoDBException; import com.arangodb.util.ArangoSerializer; import com.arangodb.velocypack.VPack; @@ -30,6 +28,8 @@ import com.arangodb.velocypack.VPackSlice; import com.arangodb.velocypack.exception.VPackException; +import java.util.Iterator; + /** * @author Mark Vollmary * @@ -60,12 +60,12 @@ public VPackSlice serialize(final Object entity, final Options options) throws A } try { final VPackSlice vpack; - final Class type = entity.getClass(); + final Class type = entity.getClass(); final boolean serializeNullValues = options.isSerializeNullValues(); if (String.class.isAssignableFrom(type)) { vpack = vpackParser.fromJson((String) entity, serializeNullValues); } else if (options.isStringAsJson() && Iterable.class.isAssignableFrom(type)) { - final Iterator iterator = Iterable.class.cast(entity).iterator(); + final Iterator iterator = ((Iterable) entity).iterator(); if (iterator.hasNext() && String.class.isAssignableFrom(iterator.next().getClass())) { vpack = vpackParser.fromJson((Iterable) entity, serializeNullValues); } else { diff --git a/src/main/java/com/arangodb/internal/util/CURLLogger.java b/src/main/java/com/arangodb/internal/util/CURLLogger.java index 670cd1b59..926e69c2b 100644 --- a/src/main/java/com/arangodb/internal/util/CURLLogger.java +++ b/src/main/java/com/arangodb/internal/util/CURLLogger.java @@ -20,15 +20,14 @@ package com.arangodb.internal.util; -import java.util.Map.Entry; - +import com.arangodb.util.ArangoSerialization; +import com.arangodb.velocystream.Request; +import com.arangodb.velocystream.RequestType; import org.apache.http.auth.Credentials; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.arangodb.util.ArangoSerialization; -import com.arangodb.velocystream.Request; -import com.arangodb.velocystream.RequestType; +import java.util.Map.Entry; /** * @author Mark Vollmary @@ -36,7 +35,7 @@ */ public final class CURLLogger { - private static Logger LOGGER = LoggerFactory.getLogger(CURLLogger.class); + private static final Logger LOGGER = LoggerFactory.getLogger(CURLLogger.class); private CURLLogger() { } diff --git a/src/main/java/com/arangodb/internal/util/DocumentUtil.java b/src/main/java/com/arangodb/internal/util/DocumentUtil.java index be637600a..d2c13defd 100644 --- a/src/main/java/com/arangodb/internal/util/DocumentUtil.java +++ b/src/main/java/com/arangodb/internal/util/DocumentUtil.java @@ -20,10 +20,10 @@ package com.arangodb.internal.util; -import java.util.regex.Pattern; - import com.arangodb.ArangoDBException; +import java.util.regex.Pattern; + /** * @author Mark Vollmary * @@ -52,7 +52,7 @@ public static void validateDocumentId(final String id) throws ArangoDBException public static String createDocumentHandle(final String collection, final String key) { validateDocumentKey(key); - return new StringBuffer().append(collection).append(SLASH).append(key).toString(); + return collection + SLASH + key; } private static void validateName(final String type, final String regex, final CharSequence name) diff --git a/src/main/java/com/arangodb/internal/util/HostUtils.java b/src/main/java/com/arangodb/internal/util/HostUtils.java index 346577f44..885e13178 100644 --- a/src/main/java/com/arangodb/internal/util/HostUtils.java +++ b/src/main/java/com/arangodb/internal/util/HostUtils.java @@ -20,11 +20,7 @@ package com.arangodb.internal.util; -import com.arangodb.internal.net.ConnectionFactory; -import com.arangodb.internal.net.ConnectionPoolImpl; -import com.arangodb.internal.net.Host; -import com.arangodb.internal.net.HostDescription; -import com.arangodb.internal.net.HostImpl; +import com.arangodb.internal.net.*; /** * @author Mark Vollmary @@ -40,7 +36,7 @@ public static HostDescription createFromLocation(final String location) { final HostDescription host; if (location != null) { final String[] tmp = location.replaceAll(".*://", "").replaceAll("/.*", "").split(":"); - host = tmp.length == 2 ? new HostDescription(tmp[0], Integer.valueOf(tmp[1])) : null; + host = tmp.length == 2 ? new HostDescription(tmp[0], Integer.parseInt(tmp[1])) : null; } else { host = null; } diff --git a/src/main/java/com/arangodb/internal/util/IOUtils.java b/src/main/java/com/arangodb/internal/util/IOUtils.java index cde50588a..072cd0c8e 100644 --- a/src/main/java/com/arangodb/internal/util/IOUtils.java +++ b/src/main/java/com/arangodb/internal/util/IOUtils.java @@ -20,18 +20,10 @@ package com.arangodb.internal.util; -import java.io.BufferedInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.arangodb.internal.net.Host; -import com.arangodb.internal.net.HostSet; +import java.io.*; /** * @author Mark Vollmary diff --git a/src/main/java/com/arangodb/internal/util/RequestUtils.java b/src/main/java/com/arangodb/internal/util/RequestUtils.java index 6468b6109..9cfe0d057 100644 --- a/src/main/java/com/arangodb/internal/util/RequestUtils.java +++ b/src/main/java/com/arangodb/internal/util/RequestUtils.java @@ -22,6 +22,7 @@ import com.arangodb.internal.net.AccessType; import com.arangodb.velocystream.Request; +import com.arangodb.velocystream.RequestType; /** * @author Mark Vollmary @@ -43,12 +44,10 @@ public static AccessType determineAccessType(final Request request) { if (request.getHeaderParam().containsKey(HEADER_ALLOW_DIRTY_READ)) { return AccessType.DIRTY_READ; } - switch (request.getRequestType()) { - case GET: + if (request.getRequestType() == RequestType.GET) { return AccessType.READ; - default: - return AccessType.WRITE; } + return AccessType.WRITE; } } diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java b/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java index 6278e1453..2c376bb60 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackDeserializers.java @@ -20,6 +20,14 @@ package com.arangodb.internal.velocypack; +import com.arangodb.entity.*; +import com.arangodb.entity.arangosearch.*; +import com.arangodb.velocypack.VPackDeserializer; +import com.arangodb.velocypack.VPackSlice; +import com.arangodb.velocystream.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -27,17 +35,6 @@ import java.util.Map; import java.util.Map.Entry; -import com.arangodb.entity.*; -import com.arangodb.entity.arangosearch.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.arangodb.velocypack.VPackDeserializationContext; -import com.arangodb.velocypack.VPackDeserializer; -import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.exception.VPackException; -import com.arangodb.velocystream.Response; - /** * @author Mark Vollmary * @@ -47,247 +44,141 @@ public class VPackDeserializers { private static final Logger LOGGER = LoggerFactory.getLogger(VPackDeserializers.class); private static final String DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; - public static final VPackDeserializer RESPONSE = new VPackDeserializer() { - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public Response deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - final Response response = new Response(); - response.setVersion(vpack.get(0).getAsInt()); - response.setType(vpack.get(1).getAsInt()); - response.setResponseCode(vpack.get(2).getAsInt()); - if (vpack.size() > 3) { - response.setMeta((Map) context.deserialize(vpack.get(3), Map.class)); - } - return response; + public static final VPackDeserializer RESPONSE = (parent, vpack, context) -> { + final Response response = new Response(); + response.setVersion(vpack.get(0).getAsInt()); + response.setType(vpack.get(1).getAsInt()); + response.setResponseCode(vpack.get(2).getAsInt()); + if (vpack.size() > 3) { + response.setMeta(context.deserialize(vpack.get(3), Map.class)); } + return response; }; - public static final VPackDeserializer COLLECTION_TYPE = new VPackDeserializer() { - @Override - public CollectionType deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - return CollectionType.fromType(vpack.getAsInt()); - } - }; + public static final VPackDeserializer COLLECTION_TYPE = (parent, vpack, context) -> CollectionType.fromType(vpack.getAsInt()); - public static final VPackDeserializer COLLECTION_STATUS = new VPackDeserializer() { - @Override - public CollectionStatus deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - return CollectionStatus.fromStatus(vpack.getAsInt()); - } - }; + public static final VPackDeserializer COLLECTION_STATUS = (parent, vpack, context) -> CollectionStatus.fromStatus(vpack.getAsInt()); @SuppressWarnings("unchecked") - public static final VPackDeserializer BASE_DOCUMENT = new VPackDeserializer() { - @SuppressWarnings("rawtypes") - @Override - public BaseDocument deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - return new BaseDocument((Map) context.deserialize(vpack, Map.class)); - } - }; + public static final VPackDeserializer BASE_DOCUMENT = (parent, vpack, context) -> new BaseDocument((Map) context.deserialize(vpack, Map.class)); @SuppressWarnings("unchecked") - public static final VPackDeserializer BASE_EDGE_DOCUMENT = new VPackDeserializer() { - @SuppressWarnings("rawtypes") - @Override - public BaseEdgeDocument deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - return new BaseEdgeDocument((Map) context.deserialize(vpack, Map.class)); - } - }; - - public static final VPackDeserializer DATE_STRING = new VPackDeserializer() { - @Override - public Date deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - try { - return new SimpleDateFormat(DATE_TIME_FORMAT).parse(vpack.getAsString()); - } catch (final ParseException e) { - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("got ParseException for date string: " + vpack.getAsString()); - } + public static final VPackDeserializer BASE_EDGE_DOCUMENT = (parent, vpack, context) -> new BaseEdgeDocument((Map) context.deserialize(vpack, Map.class)); + + public static final VPackDeserializer DATE_STRING = (parent, vpack, context) -> { + try { + return new SimpleDateFormat(DATE_TIME_FORMAT).parse(vpack.getAsString()); + } catch (final ParseException e) { + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("got ParseException for date string: " + vpack.getAsString()); } - return null; } + return null; }; - public static final VPackDeserializer LOG_LEVEL = new VPackDeserializer() { - @Override - public LogLevel deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - return LogLevel.fromLevel(vpack.getAsInt()); - } - }; + public static final VPackDeserializer LOG_LEVEL = (parent, vpack, context) -> LogLevel.fromLevel(vpack.getAsInt()); - public static final VPackDeserializer LICENSE = new VPackDeserializer() { - @Override - public License deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - - return License.valueOf(vpack.getAsString().toUpperCase()); - } - }; + public static final VPackDeserializer LICENSE = (parent, vpack, context) -> License.valueOf(vpack.getAsString().toUpperCase()); - public static final VPackDeserializer PERMISSIONS = new VPackDeserializer() { - @Override - public Permissions deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - return Permissions.valueOf(vpack.getAsString().toUpperCase()); - } - }; + public static final VPackDeserializer PERMISSIONS = (parent, vpack, context) -> Permissions.valueOf(vpack.getAsString().toUpperCase()); - public static final VPackDeserializer QUERY_EXECUTION_STATE = new VPackDeserializer() { - @Override - public QueryExecutionState deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - return QueryExecutionState.valueOf(vpack.getAsString().toUpperCase().replaceAll(" ", "_")); - } - }; + public static final VPackDeserializer QUERY_EXECUTION_STATE = (parent, vpack, context) -> QueryExecutionState.valueOf(vpack.getAsString().toUpperCase().replaceAll(" ", "_")); - public static final VPackDeserializer REPLICATION_FACTOR = new VPackDeserializer() { - @Override - public ReplicationFactor deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - final ReplicationFactor replicationFactor = new ReplicationFactor(); - if (vpack.isString() && vpack.getAsString().equals("satellite")) { - replicationFactor.setSatellite(true); - } else { - replicationFactor.setReplicationFactor(vpack.getAsInt()); - } - return replicationFactor; + public static final VPackDeserializer REPLICATION_FACTOR = (parent, vpack, context) -> { + final ReplicationFactor replicationFactor = new ReplicationFactor(); + if (vpack.isString() && vpack.getAsString().equals("satellite")) { + replicationFactor.setSatellite(true); + } else { + replicationFactor.setReplicationFactor(vpack.getAsInt()); } + return replicationFactor; }; - public static final VPackDeserializer MIN_REPLICATION_FACTOR = new VPackDeserializer() { - @Override - public MinReplicationFactor deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - final MinReplicationFactor minReplicationFactor = new MinReplicationFactor(); - minReplicationFactor.setMinReplicationFactor(vpack.getAsInt()); - return minReplicationFactor; - } + public static final VPackDeserializer MIN_REPLICATION_FACTOR = (parent, vpack, context) -> { + final MinReplicationFactor minReplicationFactor = new MinReplicationFactor(); + minReplicationFactor.setMinReplicationFactor(vpack.getAsInt()); + return minReplicationFactor; }; - public static final VPackDeserializer VIEW_TYPE = new VPackDeserializer() { - @Override - public ViewType deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - return "arangosearch".equals(vpack.getAsString()) ? ViewType.ARANGO_SEARCH - : ViewType.valueOf(vpack.getAsString().toUpperCase()); - } - }; + public static final VPackDeserializer VIEW_TYPE = (parent, vpack, context) -> "arangosearch".equals(vpack.getAsString()) ? ViewType.ARANGO_SEARCH + : ViewType.valueOf(vpack.getAsString().toUpperCase()); - public static final VPackDeserializer ARANGO_SEARCH_PROPERTIES = new VPackDeserializer() { - @Override - public ArangoSearchProperties deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - final ArangoSearchProperties properties = new ArangoSearchProperties(); - final VPackSlice consolidationIntervalMsec = vpack.get("consolidationIntervalMsec"); - if (consolidationIntervalMsec.isInteger()) { - properties.setConsolidationIntervalMsec(consolidationIntervalMsec.getAsLong()); - } + public static final VPackDeserializer ARANGO_SEARCH_PROPERTIES = (parent, vpack, context) -> { + final ArangoSearchProperties properties = new ArangoSearchProperties(); + final VPackSlice consolidationIntervalMsec = vpack.get("consolidationIntervalMsec"); + if (consolidationIntervalMsec.isInteger()) { + properties.setConsolidationIntervalMsec(consolidationIntervalMsec.getAsLong()); + } - final VPackSlice commitIntervalMsec = vpack.get("commitIntervalMsec"); - if (commitIntervalMsec.isInteger()) { - properties.setCommitIntervalMsec(commitIntervalMsec.getAsLong()); - } + final VPackSlice commitIntervalMsec = vpack.get("commitIntervalMsec"); + if (commitIntervalMsec.isInteger()) { + properties.setCommitIntervalMsec(commitIntervalMsec.getAsLong()); + } - final VPackSlice cleanupIntervalStep = vpack.get("cleanupIntervalStep"); - if (cleanupIntervalStep.isInteger()) { - properties.setCleanupIntervalStep(cleanupIntervalStep.getAsLong()); - } + final VPackSlice cleanupIntervalStep = vpack.get("cleanupIntervalStep"); + if (cleanupIntervalStep.isInteger()) { + properties.setCleanupIntervalStep(cleanupIntervalStep.getAsLong()); + } - final VPackSlice consolidationPolicy = vpack.get("consolidationPolicy"); - if (consolidationPolicy.isObject()) { - properties.setConsolidationPolicy( - (ConsolidationPolicy) context.deserialize(consolidationPolicy, ConsolidationPolicy.class)); - } + final VPackSlice consolidationPolicy = vpack.get("consolidationPolicy"); + if (consolidationPolicy.isObject()) { + properties.setConsolidationPolicy( + context.deserialize(consolidationPolicy, ConsolidationPolicy.class)); + } - final VPackSlice links = vpack.get("links"); - if (links.isObject()) { - final Iterator> collectionIterator = links.objectIterator(); - for (; collectionIterator.hasNext();) { - final Entry entry = collectionIterator.next(); - final VPackSlice value = entry.getValue(); - final CollectionLink link = CollectionLink.on(entry.getKey()); - final VPackSlice analyzers = value.get("analyzers"); - if (analyzers.isArray()) { - final Iterator analyzerIterator = analyzers.arrayIterator(); - for (; analyzerIterator.hasNext();) { - link.analyzers(analyzerIterator.next().getAsString()); - } + final VPackSlice links = vpack.get("links"); + if (links.isObject()) { + final Iterator> collectionIterator = links.objectIterator(); + for (; collectionIterator.hasNext(); ) { + final Entry entry = collectionIterator.next(); + final VPackSlice value = entry.getValue(); + final CollectionLink link = CollectionLink.on(entry.getKey()); + final VPackSlice analyzers = value.get("analyzers"); + if (analyzers.isArray()) { + final Iterator analyzerIterator = analyzers.arrayIterator(); + for (; analyzerIterator.hasNext(); ) { + link.analyzers(analyzerIterator.next().getAsString()); } - final VPackSlice includeAllFields = value.get("includeAllFields"); - if (includeAllFields.isBoolean()) { - link.includeAllFields(includeAllFields.getAsBoolean()); - } - final VPackSlice trackListPositions = value.get("trackListPositions"); - if (trackListPositions.isBoolean()) { - link.trackListPositions(trackListPositions.getAsBoolean()); - } - final VPackSlice storeValues = value.get("storeValues"); - if (storeValues.isString()) { - link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase())); - } - final VPackSlice fields = value.get("fields"); - if (fields.isObject()) { - final Iterator> fieldsIterator = fields.objectIterator(); - for (; fieldsIterator.hasNext();) { - link.fields(deserializeField(fieldsIterator.next())); - } + } + final VPackSlice includeAllFields = value.get("includeAllFields"); + if (includeAllFields.isBoolean()) { + link.includeAllFields(includeAllFields.getAsBoolean()); + } + final VPackSlice trackListPositions = value.get("trackListPositions"); + if (trackListPositions.isBoolean()) { + link.trackListPositions(trackListPositions.getAsBoolean()); + } + final VPackSlice storeValues = value.get("storeValues"); + if (storeValues.isString()) { + link.storeValues(StoreValuesType.valueOf(storeValues.getAsString().toUpperCase())); + } + final VPackSlice fields = value.get("fields"); + if (fields.isObject()) { + final Iterator> fieldsIterator = fields.objectIterator(); + for (; fieldsIterator.hasNext(); ) { + link.fields(deserializeField(fieldsIterator.next())); } - properties.addLink(link); } + properties.addLink(link); } + } - final VPackSlice primarySorts = vpack.get("primarySort"); - if (primarySorts.isArray()) { - final Iterator primarySortsIterator = primarySorts.arrayIterator(); - for (; primarySortsIterator.hasNext();) { - final VPackSlice entry = primarySortsIterator.next(); - if (entry.isObject()) { - if (entry.get("field").isString() && entry.get("asc").isBoolean()) { - final PrimarySort primarySort = PrimarySort.on(entry.get("field").getAsString()); - primarySort.ascending(entry.get("asc").getAsBoolean()); - properties.addPrimarySort(primarySort); - } + final VPackSlice primarySorts = vpack.get("primarySort"); + if (primarySorts.isArray()) { + final Iterator primarySortsIterator = primarySorts.arrayIterator(); + for (; primarySortsIterator.hasNext(); ) { + final VPackSlice entry = primarySortsIterator.next(); + if (entry.isObject()) { + if (entry.get("field").isString() && entry.get("asc").isBoolean()) { + final PrimarySort primarySort = PrimarySort.on(entry.get("field").getAsString()); + primarySort.ascending(entry.get("asc").getAsBoolean()); + properties.addPrimarySort(primarySort); } } } - - return properties; } + + return properties; }; protected static FieldLink deserializeField(final Entry field) { @@ -322,42 +213,29 @@ protected static FieldLink deserializeField(final Entry fiel return link; } - public static final VPackDeserializer ARANGO_SEARCH_PROPERTIES_ENTITY = new VPackDeserializer() { - @Override - public ArangoSearchPropertiesEntity deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - final ViewEntity entity = context.deserialize(vpack, ViewEntity.class); - final ArangoSearchProperties properties = context.deserialize(vpack, ArangoSearchProperties.class); - final ArangoSearchPropertiesEntity result = new ArangoSearchPropertiesEntity(entity.getId(), - entity.getName(), entity.getType(), properties); - return result; - } - }; - - public static final VPackDeserializer CONSOLIDATE = new VPackDeserializer() { - @Override - public ConsolidationPolicy deserialize( - final VPackSlice parent, - final VPackSlice vpack, - final VPackDeserializationContext context) throws VPackException { - final VPackSlice type = vpack.get("type"); - if (type.isString()) { - final ConsolidationPolicy consolidate = ConsolidationPolicy - .of(ConsolidationType.valueOf(type.getAsString().toUpperCase())); - final VPackSlice threshold = vpack.get("threshold"); - if (threshold.isNumber()) { - consolidate.threshold(threshold.getAsDouble()); - } - final VPackSlice segmentThreshold = vpack.get("segmentThreshold"); - if (segmentThreshold.isInteger()) { - consolidate.segmentThreshold(segmentThreshold.getAsLong()); - } - return consolidate; + public static final VPackDeserializer ARANGO_SEARCH_PROPERTIES_ENTITY = (parent, vpack, context) -> { + final ViewEntity entity = context.deserialize(vpack, ViewEntity.class); + final ArangoSearchProperties properties = context.deserialize(vpack, ArangoSearchProperties.class); + return new ArangoSearchPropertiesEntity(entity.getId(), + entity.getName(), entity.getType(), properties); + }; + + public static final VPackDeserializer CONSOLIDATE = (parent, vpack, context) -> { + final VPackSlice type = vpack.get("type"); + if (type.isString()) { + final ConsolidationPolicy consolidate = ConsolidationPolicy + .of(ConsolidationType.valueOf(type.getAsString().toUpperCase())); + final VPackSlice threshold = vpack.get("threshold"); + if (threshold.isNumber()) { + consolidate.threshold(threshold.getAsDouble()); + } + final VPackSlice segmentThreshold = vpack.get("segmentThreshold"); + if (segmentThreshold.isInteger()) { + consolidate.segmentThreshold(segmentThreshold.getAsLong()); } - return null; + return consolidate; } + return null; }; } diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java b/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java index 741edaa5a..23a0a9796 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackDriverModule.java @@ -20,22 +20,7 @@ package com.arangodb.internal.velocypack; -import java.lang.reflect.Field; -import java.util.Date; - -import com.arangodb.entity.BaseDocument; -import com.arangodb.entity.BaseEdgeDocument; -import com.arangodb.entity.CollectionStatus; -import com.arangodb.entity.CollectionType; -import com.arangodb.entity.DocumentField; -import com.arangodb.entity.License; -import com.arangodb.entity.LogLevel; -import com.arangodb.entity.Permissions; -import com.arangodb.entity.QueryEntity; -import com.arangodb.entity.QueryExecutionState; -import com.arangodb.entity.ReplicationFactor; -import com.arangodb.entity.MinReplicationFactor; -import com.arangodb.entity.ViewType; +import com.arangodb.entity.*; import com.arangodb.entity.arangosearch.ArangoSearchProperties; import com.arangodb.entity.arangosearch.ArangoSearchPropertiesEntity; import com.arangodb.entity.arangosearch.ConsolidationPolicy; @@ -43,7 +28,6 @@ import com.arangodb.internal.velocystream.internal.AuthenticationRequest; import com.arangodb.model.TraversalOptions; import com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions; -import com.arangodb.velocypack.VPackFieldNamingStrategy; import com.arangodb.velocypack.VPackModule; import com.arangodb.velocypack.VPackParserModule; import com.arangodb.velocypack.VPackParserSetupContext; @@ -51,6 +35,8 @@ import com.arangodb.velocystream.Request; import com.arangodb.velocystream.Response; +import java.util.Date; + /** * @author Mark Vollmary * @@ -59,15 +45,12 @@ public class VPackDriverModule implements VPackModule, VPackParserModule { @Override public > void setup(final C context) { - context.fieldNamingStrategy(new VPackFieldNamingStrategy() { - @Override - public String translateName(final Field field) { - final DocumentField annotation = field.getAnnotation(DocumentField.class); - if (annotation != null) { - return annotation.value().getSerializeName(); - } - return field.getName(); + context.fieldNamingStrategy(field -> { + final DocumentField annotation = field.getAnnotation(DocumentField.class); + if (annotation != null) { + return annotation.value().getSerializeName(); } + return field.getName(); }); context.registerSerializer(Request.class, VPackSerializers.REQUEST); context.registerSerializer(AuthenticationRequest.class, VPackSerializers.AUTH_REQUEST); diff --git a/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java b/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java index 54154e7aa..27d508365 100644 --- a/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java +++ b/src/main/java/com/arangodb/internal/velocypack/VPackSerializers.java @@ -20,11 +20,6 @@ package com.arangodb.internal.velocypack; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - import com.arangodb.entity.*; import com.arangodb.entity.arangosearch.*; import com.arangodb.internal.velocystream.internal.AuthenticationRequest; @@ -32,262 +27,166 @@ import com.arangodb.model.TraversalOptions.Order; import com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions; import com.arangodb.velocypack.VPackBuilder; -import com.arangodb.velocypack.VPackSerializationContext; import com.arangodb.velocypack.VPackSerializer; import com.arangodb.velocypack.ValueType; -import com.arangodb.velocypack.exception.VPackException; import com.arangodb.velocystream.Request; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + /** * @author Mark Vollmary */ public class VPackSerializers { - public static final VPackSerializer REQUEST = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final Request value, - final VPackSerializationContext context) throws VPackException { - builder.add(attribute, ValueType.ARRAY); - builder.add(value.getVersion()); - builder.add(value.getType()); - builder.add(value.getDatabase()); - builder.add(value.getRequestType().getType()); - builder.add(value.getRequest()); - builder.add(ValueType.OBJECT); - for (final Entry entry : value.getQueryParam().entrySet()) { - builder.add(entry.getKey(), entry.getValue()); - } - builder.close(); - builder.add(ValueType.OBJECT); - for (final Entry entry : value.getHeaderParam().entrySet()) { - builder.add(entry.getKey(), entry.getValue()); - } - builder.close(); - builder.close(); + public static final VPackSerializer REQUEST = (builder, attribute, value, context) -> { + builder.add(attribute, ValueType.ARRAY); + builder.add(value.getVersion()); + builder.add(value.getType()); + builder.add(value.getDatabase()); + builder.add(value.getRequestType().getType()); + builder.add(value.getRequest()); + builder.add(ValueType.OBJECT); + for (final Entry entry : value.getQueryParam().entrySet()) { + builder.add(entry.getKey(), entry.getValue()); } - }; - - public static final VPackSerializer AUTH_REQUEST = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final AuthenticationRequest value, - final VPackSerializationContext context) throws VPackException { - builder.add(attribute, ValueType.ARRAY); - builder.add(value.getVersion()); - builder.add(value.getType()); - builder.add(value.getEncryption()); - builder.add(value.getUser()); - builder.add(value.getPassword()); - builder.close(); + builder.close(); + builder.add(ValueType.OBJECT); + for (final Entry entry : value.getHeaderParam().entrySet()) { + builder.add(entry.getKey(), entry.getValue()); } + builder.close(); + builder.close(); }; - public static final VPackSerializer COLLECTION_TYPE = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final CollectionType value, - final VPackSerializationContext context) throws VPackException { - builder.add(attribute, value.getType()); - } + public static final VPackSerializer AUTH_REQUEST = (builder, attribute, value, context) -> { + builder.add(attribute, ValueType.ARRAY); + builder.add(value.getVersion()); + builder.add(value.getType()); + builder.add(value.getEncryption()); + builder.add(value.getUser()); + builder.add(value.getPassword()); + builder.close(); }; - public static final VPackSerializer BASE_DOCUMENT = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final BaseDocument value, - final VPackSerializationContext context) throws VPackException { - final Map doc = new HashMap(); - doc.putAll(value.getProperties()); - doc.put(DocumentField.Type.ID.getSerializeName(), value.getId()); - doc.put(DocumentField.Type.KEY.getSerializeName(), value.getKey()); - doc.put(DocumentField.Type.REV.getSerializeName(), value.getRevision()); - context.serialize(builder, attribute, doc); - } - }; + public static final VPackSerializer COLLECTION_TYPE = (builder, attribute, value, context) -> builder.add(attribute, value.getType()); - public static final VPackSerializer BASE_EDGE_DOCUMENT = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final BaseEdgeDocument value, - final VPackSerializationContext context) throws VPackException { - final Map doc = new HashMap(); - doc.putAll(value.getProperties()); - doc.put(DocumentField.Type.ID.getSerializeName(), value.getId()); - doc.put(DocumentField.Type.KEY.getSerializeName(), value.getKey()); - doc.put(DocumentField.Type.REV.getSerializeName(), value.getRevision()); - doc.put(DocumentField.Type.FROM.getSerializeName(), value.getFrom()); - doc.put(DocumentField.Type.TO.getSerializeName(), value.getTo()); - context.serialize(builder, attribute, doc); - } + public static final VPackSerializer BASE_DOCUMENT = (builder, attribute, value, context) -> { + final Map doc = new HashMap<>(value.getProperties()); + doc.put(DocumentField.Type.ID.getSerializeName(), value.getId()); + doc.put(DocumentField.Type.KEY.getSerializeName(), value.getKey()); + doc.put(DocumentField.Type.REV.getSerializeName(), value.getRevision()); + context.serialize(builder, attribute, doc); }; - public static final VPackSerializer TRAVERSAL_ORDER = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final Order value, - final VPackSerializationContext context) throws VPackException { - if (TraversalOptions.Order.preorder_expander == value) { - builder.add(attribute, "preorder-expander"); - } else { - builder.add(attribute, value.name()); - } - } + public static final VPackSerializer BASE_EDGE_DOCUMENT = (builder, attribute, value, context) -> { + final Map doc = new HashMap<>(value.getProperties()); + doc.put(DocumentField.Type.ID.getSerializeName(), value.getId()); + doc.put(DocumentField.Type.KEY.getSerializeName(), value.getKey()); + doc.put(DocumentField.Type.REV.getSerializeName(), value.getRevision()); + doc.put(DocumentField.Type.FROM.getSerializeName(), value.getFrom()); + doc.put(DocumentField.Type.TO.getSerializeName(), value.getTo()); + context.serialize(builder, attribute, doc); }; - public static final VPackSerializer LOG_LEVEL = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final LogLevel value, - final VPackSerializationContext context) throws VPackException { - builder.add(attribute, value.getLevel()); + public static final VPackSerializer TRAVERSAL_ORDER = (builder, attribute, value, context) -> { + if (Order.preorder_expander == value) { + builder.add(attribute, "preorder-expander"); + } else { + builder.add(attribute, value.name()); } }; - public static final VPackSerializer PERMISSIONS = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final Permissions value, - final VPackSerializationContext context) throws VPackException { - builder.add(attribute, value.toString().toLowerCase()); - } - }; + public static final VPackSerializer LOG_LEVEL = (builder, attribute, value, context) -> builder.add(attribute, value.getLevel()); - public static final VPackSerializer REPLICATION_FACTOR = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final ReplicationFactor value, - final VPackSerializationContext context) throws VPackException { - final Boolean satellite = value.getSatellite(); - if (Boolean.TRUE == satellite) { - builder.add(attribute, "satellite"); - } else if (value.getReplicationFactor() != null) { - builder.add(attribute, value.getReplicationFactor()); - } + public static final VPackSerializer PERMISSIONS = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase()); + + public static final VPackSerializer REPLICATION_FACTOR = (builder, attribute, value, context) -> { + final Boolean satellite = value.getSatellite(); + if (Boolean.TRUE == satellite) { + builder.add(attribute, "satellite"); + } else if (value.getReplicationFactor() != null) { + builder.add(attribute, value.getReplicationFactor()); } }; - public static final VPackSerializer MIN_REPLICATION_FACTOR = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final MinReplicationFactor value, - final VPackSerializationContext context) throws VPackException { - if (value.getMinReplicationFactor() != null) { - builder.add(attribute, value.getMinReplicationFactor()); - } + public static final VPackSerializer MIN_REPLICATION_FACTOR = (builder, attribute, value, context) -> { + if (value.getMinReplicationFactor() != null) { + builder.add(attribute, value.getMinReplicationFactor()); } }; - public static final VPackSerializer VIEW_TYPE = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final ViewType value, - final VPackSerializationContext context) throws VPackException { - final String type = value == ViewType.ARANGO_SEARCH ? "arangosearch" : value.name().toLowerCase(); - builder.add(attribute, type); - } + public static final VPackSerializer VIEW_TYPE = (builder, attribute, value, context) -> { + final String type = value == ViewType.ARANGO_SEARCH ? "arangosearch" : value.name().toLowerCase(); + builder.add(attribute, type); }; - public static final VPackSerializer ARANGO_SEARCH_PROPERTIES_OPTIONS = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final ArangoSearchPropertiesOptions value, - final VPackSerializationContext context) throws VPackException { - builder.add(ValueType.OBJECT); - context.serialize(builder, attribute, value.getProperties()); - builder.close(); - } + public static final VPackSerializer ARANGO_SEARCH_PROPERTIES_OPTIONS = (builder, attribute, value, context) -> { + builder.add(ValueType.OBJECT); + context.serialize(builder, attribute, value.getProperties()); + builder.close(); }; - public static final VPackSerializer ARANGO_SEARCH_PROPERTIES = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final ArangoSearchProperties value, - final VPackSerializationContext context) throws VPackException { - final Long consolidationIntervalMsec = value.getConsolidationIntervalMsec(); - if (consolidationIntervalMsec != null) { - builder.add("consolidationIntervalMsec", consolidationIntervalMsec); - } + public static final VPackSerializer ARANGO_SEARCH_PROPERTIES = (builder, attribute, value, context) -> { + final Long consolidationIntervalMsec = value.getConsolidationIntervalMsec(); + if (consolidationIntervalMsec != null) { + builder.add("consolidationIntervalMsec", consolidationIntervalMsec); + } - final Long commitIntervalMsec = value.getCommitIntervalMsec(); - if (commitIntervalMsec != null) { - builder.add("commitIntervalMsec", commitIntervalMsec); - } + final Long commitIntervalMsec = value.getCommitIntervalMsec(); + if (commitIntervalMsec != null) { + builder.add("commitIntervalMsec", commitIntervalMsec); + } - final Long cleanupIntervalStep = value.getCleanupIntervalStep(); - if (cleanupIntervalStep != null) { - builder.add("cleanupIntervalStep", cleanupIntervalStep); - } - context.serialize(builder, "consolidationPolicy", value.getConsolidationPolicy()); + final Long cleanupIntervalStep = value.getCleanupIntervalStep(); + if (cleanupIntervalStep != null) { + builder.add("cleanupIntervalStep", cleanupIntervalStep); + } + context.serialize(builder, "consolidationPolicy", value.getConsolidationPolicy()); - final Collection links = value.getLinks(); - if (!links.isEmpty()) { - builder.add("links", ValueType.OBJECT); - for (final CollectionLink collectionLink : links) { - builder.add(collectionLink.getName(), ValueType.OBJECT); - final Collection analyzers = collectionLink.getAnalyzers(); - if (!analyzers.isEmpty()) { - builder.add("analyzers", ValueType.ARRAY); - for (final String analyzer : analyzers) { - builder.add(analyzer); - } - builder.close(); - } - final Boolean includeAllFields = collectionLink.getIncludeAllFields(); - if (includeAllFields != null) { - builder.add("includeAllFields", includeAllFields); - } - final Boolean trackListPositions = collectionLink.getTrackListPositions(); - if (trackListPositions != null) { - builder.add("trackListPositions", trackListPositions); - } - final StoreValuesType storeValues = collectionLink.getStoreValues(); - if (storeValues != null) { - builder.add("storeValues", storeValues.name().toLowerCase()); + final Collection links = value.getLinks(); + if (!links.isEmpty()) { + builder.add("links", ValueType.OBJECT); + for (final CollectionLink collectionLink : links) { + builder.add(collectionLink.getName(), ValueType.OBJECT); + final Collection analyzers = collectionLink.getAnalyzers(); + if (!analyzers.isEmpty()) { + builder.add("analyzers", ValueType.ARRAY); + for (final String analyzer : analyzers) { + builder.add(analyzer); } - serializeFieldLinks(builder, collectionLink.getFields()); builder.close(); } + final Boolean includeAllFields = collectionLink.getIncludeAllFields(); + if (includeAllFields != null) { + builder.add("includeAllFields", includeAllFields); + } + final Boolean trackListPositions = collectionLink.getTrackListPositions(); + if (trackListPositions != null) { + builder.add("trackListPositions", trackListPositions); + } + final StoreValuesType storeValues = collectionLink.getStoreValues(); + if (storeValues != null) { + builder.add("storeValues", storeValues.name().toLowerCase()); + } + serializeFieldLinks(builder, collectionLink.getFields()); builder.close(); } + builder.close(); + } - final Collection primarySorts = value.getPrimarySort(); - if (!primarySorts.isEmpty()) { - builder.add("primarySort", ValueType.ARRAY); // open array - for (final PrimarySort primarySort : primarySorts) { - builder.add(ValueType.OBJECT); // open object - builder.add("field", primarySort.getFieldName()); - builder.add("asc", primarySort.getAscending()); - builder.close(); // close object - } - builder.close(); // close array + final Collection primarySorts = value.getPrimarySort(); + if (!primarySorts.isEmpty()) { + builder.add("primarySort", ValueType.ARRAY); // open array + for (final PrimarySort primarySort : primarySorts) { + builder.add(ValueType.OBJECT); // open object + builder.add("field", primarySort.getFieldName()); + builder.add("asc", primarySort.getAscending()); + builder.close(); // close object } + builder.close(); // close array } }; @@ -323,15 +222,6 @@ private static void serializeFieldLinks(final VPackBuilder builder, final Collec } } - public static final VPackSerializer CONSOLIDATE_TYPE = new VPackSerializer() { - @Override - public void serialize( - final VPackBuilder builder, - final String attribute, - final ConsolidationType value, - final VPackSerializationContext context) throws VPackException { - builder.add(attribute, value.toString().toLowerCase()); - } - }; + public static final VPackSerializer CONSOLIDATE_TYPE = (builder, attribute, value, context) -> builder.add(attribute, value.toString().toLowerCase()); } diff --git a/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java b/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java index a9b0466e4..5e8436ca5 100644 --- a/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java +++ b/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java @@ -20,25 +20,9 @@ package com.arangodb.internal.velocystream; -import java.io.Closeable; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.concurrent.atomic.AtomicLong; - -import javax.net.ssl.SSLContext; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.arangodb.ArangoDBException; import com.arangodb.internal.ArangoDefaults; -import com.arangodb.internal.net.AccessType; -import com.arangodb.internal.net.ArangoDBRedirectException; -import com.arangodb.internal.net.Host; -import com.arangodb.internal.net.HostDescription; -import com.arangodb.internal.net.HostHandle; -import com.arangodb.internal.net.HostHandler; +import com.arangodb.internal.net.*; import com.arangodb.internal.util.HostUtils; import com.arangodb.internal.util.RequestUtils; import com.arangodb.internal.util.ResponseUtils; @@ -50,6 +34,15 @@ import com.arangodb.velocypack.exception.VPackParserException; import com.arangodb.velocystream.Request; import com.arangodb.velocystream.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.net.ssl.SSLContext; +import java.io.Closeable; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.concurrent.atomic.AtomicLong; /** * @author Mark Vollmary @@ -132,7 +125,7 @@ public R execute(final Request request, final HostHandle hostHandle) throws Aran return execute(request, connection); } catch (final ArangoDBException e) { if (e instanceof ArangoDBRedirectException) { - final String location = ArangoDBRedirectException.class.cast(e).getLocation(); + final String location = ((ArangoDBRedirectException) e).getLocation(); final HostDescription redirectHost = HostUtils.createFromLocation(location); hostHandler.closeCurrentOnError(); hostHandler.fail(); @@ -163,7 +156,7 @@ protected Message createMessage(final Request request) throws VPackParserExcepti } protected Collection buildChunks(final Message message) { - final Collection chunks = new ArrayList(); + final Collection chunks = new ArrayList<>(); final VPackSlice head = message.getHead(); int size = head.getByteSize(); final VPackSlice body = message.getBody(); diff --git a/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java b/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java index 1504203d3..0b78fe5eb 100644 --- a/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java +++ b/src/main/java/com/arangodb/internal/velocystream/internal/ChunkStore.java @@ -37,7 +37,7 @@ public class ChunkStore { public ChunkStore(final MessageStore messageStore) { super(); this.messageStore = messageStore; - data = new HashMap(); + data = new HashMap<>(); } public ByteBuffer storeChunk(final Chunk chunk) throws BufferUnderflowException, IndexOutOfBoundsException { diff --git a/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java b/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java index d9809fce2..ef965d4d4 100644 --- a/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java +++ b/src/main/java/com/arangodb/internal/velocystream/internal/MessageStore.java @@ -20,16 +20,15 @@ package com.arangodb.internal.velocystream.internal; +import com.arangodb.ArangoDBException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.FutureTask; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.arangodb.ArangoDBException; - /** * @author Mark Vollmary * @@ -44,9 +43,9 @@ public class MessageStore { public MessageStore() { super(); - task = new ConcurrentHashMap>(); - response = new ConcurrentHashMap(); - error = new ConcurrentHashMap(); + task = new ConcurrentHashMap<>(); + response = new ConcurrentHashMap<>(); + error = new ConcurrentHashMap<>(); } public void storeMessage(final long messageId, final FutureTask future) { diff --git a/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java b/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java index 5fa8c1eae..280be7e0b 100644 --- a/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java +++ b/src/main/java/com/arangodb/internal/velocystream/internal/VstConnection.java @@ -20,6 +20,18 @@ package com.arangodb.internal.velocystream.internal; +import com.arangodb.ArangoDBException; +import com.arangodb.internal.ArangoDefaults; +import com.arangodb.internal.net.Connection; +import com.arangodb.internal.net.HostDescription; +import com.arangodb.velocypack.VPackSlice; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.net.SocketFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocket; +import javax.net.ssl.SSLSocketFactory; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; @@ -35,20 +47,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import javax.net.SocketFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSocket; -import javax.net.ssl.SSLSocketFactory; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.arangodb.ArangoDBException; -import com.arangodb.internal.ArangoDefaults; -import com.arangodb.internal.net.Connection; -import com.arangodb.internal.net.HostDescription; -import com.arangodb.velocypack.VPackSlice; - /** * @author Mark Vollmary * @@ -70,10 +68,10 @@ public abstract class VstConnection implements Connection { private InputStream inputStream; private final HostDescription host; - - private HashMap sendTimestamps = new HashMap(); - - private String connectionName; + + private final HashMap sendTimestamps = new HashMap<>(); + + private final String connectionName; protected VstConnection(final HostDescription host, final Integer timeout, final Long ttl, final Boolean useSsl, final SSLContext sslContext, final MessageStore messageStore) { @@ -128,44 +126,41 @@ public synchronized void open() throws IOException { sendProtocolHeader(); executor = Executors.newSingleThreadExecutor(); - executor.submit(new Callable() { - @Override - public Void call() throws Exception { - LOGGER.debug("Start Callable for " + connectionName); - - final long openTime = new Date().getTime(); - final Long ttlTime = ttl != null ? openTime + ttl : null; - final ChunkStore chunkStore = new ChunkStore(messageStore); - while (true) { - if (ttlTime != null && new Date().getTime() > ttlTime && messageStore.isEmpty()) { - close(); - break; - } - if (!isOpen()) { - messageStore.clear(new IOException("The socket is closed.")); - close(); - break; - } - try { - final Chunk chunk = readChunk(); - final ByteBuffer chunkBuffer = chunkStore.storeChunk(chunk); - if (chunkBuffer != null) { - final byte[] buf = new byte[chunk.getContentLength()]; - readBytesIntoBuffer(buf, 0, buf.length); - chunkBuffer.put(buf); - chunkStore.checkCompleteness(chunk.getMessageId()); - } - } catch (final Exception e) { - messageStore.clear(e); - close(); - break; + executor.submit((Callable) () -> { + LOGGER.debug("Start Callable for " + connectionName); + + final long openTime = new Date().getTime(); + final Long ttlTime = ttl != null ? openTime + ttl : null; + final ChunkStore chunkStore = new ChunkStore(messageStore); + while (true) { + if (ttlTime != null && new Date().getTime() > ttlTime && messageStore.isEmpty()) { + close(); + break; + } + if (!isOpen()) { + messageStore.clear(new IOException("The socket is closed.")); + close(); + break; + } + try { + final Chunk chunk = readChunk(); + final ByteBuffer chunkBuffer = chunkStore.storeChunk(chunk); + if (chunkBuffer != null) { + final byte[] buf = new byte[chunk.getContentLength()]; + readBytesIntoBuffer(buf, 0, buf.length); + chunkBuffer.put(buf); + chunkStore.checkCompleteness(chunk.getMessageId()); } + } catch (final Exception e) { + messageStore.clear(e); + close(); + break; } - - LOGGER.debug("Stop Callable for " + connectionName); - - return null; } + + LOGGER.debug("Stop Callable for " + connectionName); + + return null; }); } diff --git a/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java b/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java index 2e8a8b96b..eb652b1d0 100644 --- a/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java +++ b/src/main/java/com/arangodb/internal/velocystream/internal/VstConnectionSync.java @@ -20,16 +20,14 @@ package com.arangodb.internal.velocystream.internal; +import com.arangodb.ArangoDBException; +import com.arangodb.internal.net.HostDescription; + +import javax.net.ssl.SSLContext; import java.util.Collection; -import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; import java.util.concurrent.TimeUnit; -import javax.net.ssl.SSLContext; - -import com.arangodb.ArangoDBException; -import com.arangodb.internal.net.HostDescription; - /** * @author Mark Vollmary * @@ -86,12 +84,7 @@ private VstConnectionSync(final HostDescription host, final Integer timeout, fin } public Message write(final Message message, final Collection chunks) throws ArangoDBException { - final FutureTask task = new FutureTask(new Callable() { - @Override - public Message call() throws Exception { - return messageStore.get(message.getId()); - } - }); + final FutureTask task = new FutureTask<>(() -> messageStore.get(message.getId())); messageStore.storeMessage(message.getId(), task); super.writeIntern(message, chunks); try { diff --git a/src/main/java/com/arangodb/model/AqlQueryOptions.java b/src/main/java/com/arangodb/model/AqlQueryOptions.java index dd50faec6..b897c81ef 100644 --- a/src/main/java/com/arangodb/model/AqlQueryOptions.java +++ b/src/main/java/com/arangodb/model/AqlQueryOptions.java @@ -20,14 +20,14 @@ package com.arangodb.model; +import com.arangodb.velocypack.VPackSlice; +import com.arangodb.velocypack.annotations.Expose; + import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import com.arangodb.velocypack.VPackSlice; -import com.arangodb.velocypack.annotations.Expose; - /** * @author Mark Vollmary * @author Michele Rastelli @@ -406,7 +406,7 @@ protected Optimizer getOptimizer() { protected Collection getShardIds() { if (shardIds == null) { - shardIds = new ArrayList(); + shardIds = new ArrayList<>(); } return shardIds; } diff --git a/src/main/java/com/arangodb/model/IndexOptions.java b/src/main/java/com/arangodb/model/IndexOptions.java index fbf6f431f..1d2a956dd 100644 --- a/src/main/java/com/arangodb/model/IndexOptions.java +++ b/src/main/java/com/arangodb/model/IndexOptions.java @@ -20,8 +20,6 @@ package com.arangodb.model; -import com.arangodb.entity.IndexType; - /** * @author Heiko Kernbach * diff --git a/src/main/java/com/arangodb/model/PersistentIndexOptions.java b/src/main/java/com/arangodb/model/PersistentIndexOptions.java index 6a73bd6d8..5cedf6901 100644 --- a/src/main/java/com/arangodb/model/PersistentIndexOptions.java +++ b/src/main/java/com/arangodb/model/PersistentIndexOptions.java @@ -31,7 +31,7 @@ public class PersistentIndexOptions extends IndexOptions { private Iterable fields; - protected IndexType type = IndexType.persistent; + protected final IndexType type = IndexType.persistent; private Boolean unique; private Boolean sparse; diff --git a/src/main/java/com/arangodb/model/TraversalOptions.java b/src/main/java/com/arangodb/model/TraversalOptions.java index a85684698..a6287c97f 100644 --- a/src/main/java/com/arangodb/model/TraversalOptions.java +++ b/src/main/java/com/arangodb/model/TraversalOptions.java @@ -27,23 +27,23 @@ */ public class TraversalOptions { - public static enum Direction { + public enum Direction { outbound, inbound, any } - public static enum ItemOrder { + public enum ItemOrder { forward, backward } - public static enum Strategy { + public enum Strategy { depthfirst, breadthfirst } - public static enum UniquenessType { + public enum UniquenessType { none, global, path } - public static enum Order { + public enum Order { preorder, postorder, preorder_expander } diff --git a/src/main/java/com/arangodb/util/ArangoSerializer.java b/src/main/java/com/arangodb/util/ArangoSerializer.java index fd953bf91..7a025a464 100644 --- a/src/main/java/com/arangodb/util/ArangoSerializer.java +++ b/src/main/java/com/arangodb/util/ArangoSerializer.java @@ -20,13 +20,13 @@ package com.arangodb.util; +import com.arangodb.ArangoDBException; +import com.arangodb.velocypack.VPackSlice; + import java.lang.reflect.Type; import java.util.Collections; import java.util.Map; -import com.arangodb.ArangoDBException; -import com.arangodb.velocypack.VPackSlice; - /** * @author Mark Vollmary * @@ -43,7 +43,7 @@ public Options() { super(); serializeNullValues = false; stringAsJson = false; - additionalFields = Collections. emptyMap(); + additionalFields = Collections.emptyMap(); } /** diff --git a/src/main/java/com/arangodb/util/MapBuilder.java b/src/main/java/com/arangodb/util/MapBuilder.java index d296ef513..faf934ce1 100644 --- a/src/main/java/com/arangodb/util/MapBuilder.java +++ b/src/main/java/com/arangodb/util/MapBuilder.java @@ -33,7 +33,7 @@ public class MapBuilder { public MapBuilder() { super(); - map = new LinkedHashMap(); + map = new LinkedHashMap<>(); } public MapBuilder put(final String key, final Object value) { diff --git a/src/main/java/com/arangodb/velocystream/Request.java b/src/main/java/com/arangodb/velocystream/Request.java index cf8edf0b1..ed813366b 100644 --- a/src/main/java/com/arangodb/velocystream/Request.java +++ b/src/main/java/com/arangodb/velocystream/Request.java @@ -20,12 +20,12 @@ package com.arangodb.velocystream; -import java.util.HashMap; -import java.util.Map; - import com.arangodb.velocypack.VPackSlice; import com.arangodb.velocypack.annotations.Expose; +import java.util.HashMap; +import java.util.Map; + /** * @author Mark Vollmary * @@ -48,8 +48,8 @@ public Request(final String database, final RequestType requestType, final Strin this.requestType = requestType; this.request = path; body = null; - queryParam = new HashMap(); - headerParam = new HashMap(); + queryParam = new HashMap<>(); + headerParam = new HashMap<>(); } public int getVersion() { diff --git a/src/main/java/com/arangodb/velocystream/RequestType.java b/src/main/java/com/arangodb/velocystream/RequestType.java index 1cb4bbc3e..faf98fcad 100644 --- a/src/main/java/com/arangodb/velocystream/RequestType.java +++ b/src/main/java/com/arangodb/velocystream/RequestType.java @@ -40,7 +40,7 @@ public enum RequestType { private final int type; - private RequestType(final int type) { + RequestType(final int type) { this.type = type; } diff --git a/src/main/java/com/arangodb/velocystream/Response.java b/src/main/java/com/arangodb/velocystream/Response.java index 722b196d6..99da8db10 100644 --- a/src/main/java/com/arangodb/velocystream/Response.java +++ b/src/main/java/com/arangodb/velocystream/Response.java @@ -20,12 +20,12 @@ package com.arangodb.velocystream; -import java.util.HashMap; -import java.util.Map; - import com.arangodb.velocypack.VPackSlice; import com.arangodb.velocypack.annotations.Expose; +import java.util.HashMap; +import java.util.Map; + /** * @author Mark Vollmary * @@ -41,7 +41,7 @@ public class Response { public Response() { super(); - meta = new HashMap(); + meta = new HashMap<>(); } public int getVersion() {