ATLAS-1644: Taxonomy API /api/atlas/v1/taxonomies is broken
Signed-off-by: Madhan Neethiraj <madhan@apache.org>
diff --git a/catalog/src/main/java/org/apache/atlas/catalog/query/BaseQuery.java b/catalog/src/main/java/org/apache/atlas/catalog/query/BaseQuery.java
index 18d87ea..ff48020 100644
--- a/catalog/src/main/java/org/apache/atlas/catalog/query/BaseQuery.java
+++ b/catalog/src/main/java/org/apache/atlas/catalog/query/BaseQuery.java
@@ -20,8 +20,10 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.NoSuchElementException;
import org.apache.atlas.catalog.Request;
import org.apache.atlas.catalog.VertexWrapper;
@@ -31,7 +33,9 @@
import org.apache.atlas.catalog.projection.ProjectionResult;
import org.apache.atlas.repository.Constants;
import org.apache.atlas.repository.graph.AtlasGraphProvider;
+import org.apache.atlas.repository.graphdb.AtlasElement;
import org.apache.atlas.repository.graphdb.AtlasGraph;
+import org.apache.atlas.repository.graphdb.AtlasVertex;
import org.apache.atlas.typesystem.persistence.Id;
import com.tinkerpop.blueprints.Compare;
@@ -113,7 +117,42 @@
protected abstract Pipe getQueryPipe();
protected GremlinPipeline getRootVertexPipeline() {
- return new GremlinPipeline(getGraph().getVertices());
+ return new GremlinPipeline(unWrapVertices());
+ }
+
+ protected Iterable<Object> unWrapVertices() {
+ final Iterable<AtlasVertex> vertices = getGraph().getVertices();
+
+ Iterable<Object> vertexIterable = new Iterable<Object>() {
+ Iterator<Object> iterator = new Iterator<Object>() {
+ Iterator<AtlasVertex> wrapperIterator = vertices.iterator();
+
+ @Override
+ public boolean hasNext() {
+ return wrapperIterator.hasNext();
+ }
+
+ @Override
+ public Object next() {
+ if (hasNext()) {
+ return ((AtlasElement) wrapperIterator.next().getV()).getWrappedElement();
+ } else {
+ throw new NoSuchElementException();
+ }
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException("Remove not supported");
+ }
+ };
+
+ @Override
+ public Iterator<Object> iterator() {
+ return iterator;
+ }
+ };
+ return vertexIterable;
}
protected Pipe getNotDeletedPipe() {
diff --git a/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AtlasElement.java b/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AtlasElement.java
index 24f7a7d..42837f4 100644
--- a/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AtlasElement.java
+++ b/graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AtlasElement.java
@@ -166,4 +166,6 @@
* @return
*/
boolean isIdAssigned();
+
+ <T> T getWrappedElement();
}
diff --git a/graphdb/titan0/src/main/java/org/apache/atlas/repository/graphdb/titan0/Titan0Element.java b/graphdb/titan0/src/main/java/org/apache/atlas/repository/graphdb/titan0/Titan0Element.java
index 468c2a7..3b50633 100644
--- a/graphdb/titan0/src/main/java/org/apache/atlas/repository/graphdb/titan0/Titan0Element.java
+++ b/graphdb/titan0/src/main/java/org/apache/atlas/repository/graphdb/titan0/Titan0Element.java
@@ -17,6 +17,7 @@
*/
package org.apache.atlas.repository.graphdb.titan0;
+import java.lang.Override;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -134,7 +135,7 @@
}
- // not in interface
+ @Override
public T getWrappedElement() {
return wrappedElement;
}
diff --git a/graphdb/titan1/src/main/java/org/apache/atlas/repository/graphdb/titan1/Titan1Element.java b/graphdb/titan1/src/main/java/org/apache/atlas/repository/graphdb/titan1/Titan1Element.java
index 985294e..b1cd458 100644
--- a/graphdb/titan1/src/main/java/org/apache/atlas/repository/graphdb/titan1/Titan1Element.java
+++ b/graphdb/titan1/src/main/java/org/apache/atlas/repository/graphdb/titan1/Titan1Element.java
@@ -48,7 +48,6 @@
*/
public class Titan1Element<T extends Element> implements AtlasElement {
-
private T element;
protected Titan1Graph graph;
@@ -121,8 +120,7 @@
return element.id();
}
-
- //not in interface
+ @Override
public T getWrappedElement() {
return element;
}
diff --git a/webapp/src/main/java/org/apache/atlas/web/resources/BaseService.java b/webapp/src/main/java/org/apache/atlas/web/resources/BaseService.java
index 2e999fc..a013494 100644
--- a/webapp/src/main/java/org/apache/atlas/web/resources/BaseService.java
+++ b/webapp/src/main/java/org/apache/atlas/web/resources/BaseService.java
@@ -65,6 +65,7 @@
try {
return provider.getResources(request);
} catch (RuntimeException e) {
+ LOG.error("Error while retrieving taxonomy ", e);
throw wrapRuntimeException(e);
}
}