2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
20 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 package org.onap.aai.rest.search;
24 import java.util.List;
26 import java.util.Vector;
28 import org.apache.tinkerpop.gremlin.driver.Client;
29 import org.apache.tinkerpop.gremlin.driver.Cluster;
30 import org.apache.tinkerpop.gremlin.driver.ResultSet;
31 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
32 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
34 import org.onap.aai.util.AAIConfig;
36 public class GremlinServerImpl extends GenericQueryProcessor {
39 protected GremlinServerImpl(Builder builder) {
45 protected GraphTraversal<?,?> runQuery(String query, Map<String, Object> params) {
47 //must force them into ids because of serialization issue with
48 //tinkerpop-3.0.1-incubating
50 String rebindGraph = AAIConfig.get("aai.server.rebind", "g");
52 if(!"g".equals(rebindGraph)){
53 query = query.replaceFirst("g\\.V\\(", rebindGraph + ".V(");
56 Cluster cluster = gremlinServerSingleton.getCluster();
57 Client client = cluster.connect();
59 ResultSet results = client.submit(query, params);
62 List<Object> vIds = new Vector<>();
63 results.stream().forEach(x -> {
64 Object obj = x.getObject();
73 return this.dbEngine.asAdmin().getTraversalSource().V(vIds.toArray());