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);
         }
     }