You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2017/11/12 18:14:37 UTC
[28/42] atlas git commit: ATLAS-2251: Remove TypeSystem and related
implementation, to avoid unncessary duplicate of type details in cache
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/memory/MemRepository.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/memory/MemRepository.java b/repository/src/main/java/org/apache/atlas/repository/memory/MemRepository.java
deleted file mode 100755
index aef06a4..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/memory/MemRepository.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.memory;
-
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.repository.DiscoverInstances;
-import org.apache.atlas.repository.IRepository;
-import org.apache.atlas.repository.RepositoryException;
-import org.apache.atlas.typesystem.IReferenceableInstance;
-import org.apache.atlas.typesystem.ITypedReferenceableInstance;
-import org.apache.atlas.typesystem.persistence.Id;
-import org.apache.atlas.typesystem.persistence.MapIds;
-import org.apache.atlas.typesystem.persistence.ReferenceableInstance;
-import org.apache.atlas.typesystem.types.ClassType;
-import org.apache.atlas.typesystem.types.DataTypes;
-import org.apache.atlas.typesystem.types.HierarchicalType;
-import org.apache.atlas.typesystem.types.HierarchicalTypeDependencySorter;
-import org.apache.atlas.typesystem.types.Multiplicity;
-import org.apache.atlas.typesystem.types.ObjectGraphWalker;
-import org.apache.atlas.typesystem.types.TraitType;
-import org.apache.atlas.typesystem.types.TypeSystem;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.concurrent.atomic.AtomicInteger;
-
-@Deprecated
-public class MemRepository implements IRepository {
-
- final TypeSystem typeSystem;
- /*
- * A Store for each Class and Trait.
- */
- final Map<String, HierarchicalTypeStore> typeStores;
- final AtomicInteger ID_SEQ = new AtomicInteger(0);
-
- public MemRepository(TypeSystem typeSystem) {
- this.typeSystem = typeSystem;
- this.typeStores = new HashMap<>();
- }
-
- @Override
- public Id newId(String typeName) {
- return new Id("" + ID_SEQ.incrementAndGet(), 0, typeName);
- }
-
- /**
- * 1. traverse the Object Graph from i and create idToNewIdMap : Map[Id, Id],
- * also create old Id to Instance Map: oldIdToInstance : Map[Id, IInstance]
- * - traverse reference Attributes, List[ClassType], Maps where Key/value is ClassType
- * - traverse Structs
- * - traverse Traits.
- * 1b. Ensure that every newId has an associated Instance.
- * 2. Traverse oldIdToInstance map create newInstances : List[ITypedReferenceableInstance]
- * - create a ITypedReferenceableInstance.
- * replace any old References ( ids or object references) with new Ids.
- * 3. Traverse over newInstances
- * - ask ClassStore to assign a position to the Id.
- * - for Instances with Traits, assign a position for each Trait
- * - invoke store on the nwInstance.
- *
- * Recovery:
- * - on each newInstance, invoke releaseId and delete on its ClassStore and Traits' Stores.
- *
- * @param i
- * @return
- * @throws org.apache.atlas.repository.RepositoryException
- */
- public ITypedReferenceableInstance create(IReferenceableInstance i) throws RepositoryException {
-
- DiscoverInstances discoverInstances = new DiscoverInstances(this);
-
- /*
- * Step 1: traverse the Object Graph from i and create idToNewIdMap : Map[Id, Id],
- * also create old Id to Instance Map: oldIdToInstance : Map[Id, IInstance]
- * - traverse reference Attributes, List[ClassType], Maps where Key/value is ClassType
- * - traverse Structs
- * - traverse Traits.
- */
- try {
- new ObjectGraphWalker(typeSystem, discoverInstances, i).walk();
- } catch (AtlasException me) {
- throw new RepositoryException("TypeSystem error when walking the ObjectGraph", me);
- }
-
- /*
- * Step 1b: Ensure that every newId has an associated Instance.
- */
- for (Id oldId : discoverInstances.idToNewIdMap.keySet()) {
- if (!discoverInstances.idToInstanceMap.containsKey(oldId)) {
- throw new RepositoryException(String.format("Invalid Object Graph: "
- + "Encountered an unassignedId %s that is not associated with an Instance", oldId));
- }
- }
-
- /* Step 2: Traverse oldIdToInstance map create newInstances :
- List[ITypedReferenceableInstance]
- * - create a ITypedReferenceableInstance.
- * replace any old References ( ids or object references) with new Ids.
- */
- List<ITypedReferenceableInstance> newInstances = new ArrayList<>();
- ITypedReferenceableInstance retInstance = null;
- Set<ClassType> classTypes = new TreeSet<>();
- Set<TraitType> traitTypes = new TreeSet<>();
- for (IReferenceableInstance transientInstance : discoverInstances.idToInstanceMap.values()) {
- try {
- ClassType cT = typeSystem.getDataType(ClassType.class, transientInstance.getTypeName());
- ITypedReferenceableInstance newInstance = cT.convert(transientInstance, Multiplicity.REQUIRED);
- newInstances.add(newInstance);
-
- classTypes.add(cT);
- for (String traitName : newInstance.getTraits()) {
- TraitType tT = typeSystem.getDataType(TraitType.class, traitName);
- traitTypes.add(tT);
- }
-
- if (newInstance.getId() == i.getId()) {
- retInstance = newInstance;
- }
-
- /*
- * Now replace old references with new Ids
- */
- MapIds mapIds = new MapIds(discoverInstances.idToNewIdMap);
- new ObjectGraphWalker(typeSystem, mapIds, newInstances).walk();
-
- } catch (AtlasException me) {
- throw new RepositoryException(
- String.format("Failed to create Instance(id = %s", transientInstance.getId()), me);
- }
- }
-
- /*
- * 3. Acquire Class and Trait Storage locks.
- * - acquire them in a stable order (super before subclass, classes before traits
- */
- for (ClassType cT : classTypes) {
- HierarchicalTypeStore st = typeStores.get(cT.getName());
- st.acquireWriteLock();
- }
-
- for (TraitType tT : traitTypes) {
- HierarchicalTypeStore st = typeStores.get(tT.getName());
- st.acquireWriteLock();
- }
-
-
- /*
- * 4. Traverse over newInstances
- * - ask ClassStore to assign a position to the Id.
- * - for Instances with Traits, assign a position for each Trait
- * - invoke store on the nwInstance.
- */
- try {
- for (ITypedReferenceableInstance instance : newInstances) {
- HierarchicalTypeStore st = typeStores.get(instance.getTypeName());
- st.assignPosition(instance.getId());
- for (String traitName : instance.getTraits()) {
- HierarchicalTypeStore tt = typeStores.get(traitName);
- tt.assignPosition(instance.getId());
- }
- }
-
- for (ITypedReferenceableInstance instance : newInstances) {
- HierarchicalTypeStore st = typeStores.get(instance.getTypeName());
- st.store((ReferenceableInstance) instance);
- for (String traitName : instance.getTraits()) {
- HierarchicalTypeStore tt = typeStores.get(traitName);
- tt.store((ReferenceableInstance) instance);
- }
- }
- } catch (RepositoryException re) {
- for (ITypedReferenceableInstance instance : newInstances) {
- HierarchicalTypeStore st = typeStores.get(instance.getTypeName());
- st.releaseId(instance.getId());
- }
- throw re;
- } finally {
- for (ClassType cT : classTypes) {
- HierarchicalTypeStore st = typeStores.get(cT.getName());
- st.releaseWriteLock();
- }
-
- for (TraitType tT : traitTypes) {
- HierarchicalTypeStore st = typeStores.get(tT.getName());
- st.releaseWriteLock();
- }
- }
-
- return retInstance;
- }
-
- public ITypedReferenceableInstance update(ITypedReferenceableInstance i) throws RepositoryException {
- throw new RepositoryException("not implemented");
- }
-
- public void delete(ITypedReferenceableInstance i) throws RepositoryException {
- throw new RepositoryException("not implemented");
- }
-
- public ITypedReferenceableInstance get(Id id) throws RepositoryException {
-
- try {
- ReplaceIdWithInstance replacer = new ReplaceIdWithInstance(this);
- ObjectGraphWalker walker = new ObjectGraphWalker(typeSystem, replacer);
- replacer.setWalker(walker);
- ITypedReferenceableInstance r = getDuringWalk(id, walker);
- walker.walk();
- return r;
- } catch (AtlasException me) {
- throw new RepositoryException("TypeSystem error when walking the ObjectGraph", me);
- }
- }
-
- /*
- * - Id must be valid; Class must be valid.
- * - Ask ClassStore to createInstance.
- * - Ask ClassStore to load instance.
- * - load instance traits
- * - add to GraphWalker
- */
- ITypedReferenceableInstance getDuringWalk(Id id, ObjectGraphWalker walker) throws RepositoryException {
- ClassStore cS = getClassStore(id.getTypeName());
- if (cS == null) {
- throw new RepositoryException(String.format("Unknown Class %s", id.getTypeName()));
- }
- cS.validate(this, id);
- ReferenceableInstance r = cS.createInstance(this, id);
- cS.load(r);
- for (String traitName : r.getTraits()) {
- HierarchicalTypeStore tt = typeStores.get(traitName);
- tt.load(r);
- }
-
- walker.addRoot(r);
- return r;
- }
-
- HierarchicalTypeStore getStore(String typeName) {
- return typeStores.get(typeName);
- }
-
- ClassStore getClassStore(String typeName) {
- return (ClassStore) getStore(typeName);
- }
-
- public void defineClass(ClassType type) throws RepositoryException {
- HierarchicalTypeStore s = new ClassStore(this, type);
- typeStores.put(type.getName(), s);
- }
-
- public void defineTrait(TraitType type) throws RepositoryException {
- HierarchicalTypeStore s = new TraitStore(this, type);
- typeStores.put(type.getName(), s);
- }
-
- public void defineTypes(List<HierarchicalType> types) throws RepositoryException {
- List<TraitType> tTypes = new ArrayList<>();
- List<ClassType> cTypes = new ArrayList<>();
-
- for (HierarchicalType h : types) {
- if (h.getTypeCategory() == DataTypes.TypeCategory.TRAIT) {
- tTypes.add((TraitType) h);
- } else {
- cTypes.add((ClassType) h);
- }
- }
- tTypes = HierarchicalTypeDependencySorter.sortTypes(tTypes);
- cTypes = HierarchicalTypeDependencySorter.sortTypes(cTypes);
-
- for (TraitType tT : tTypes) {
- defineTrait(tT);
- }
-
- for (ClassType cT : cTypes) {
- defineClass(cT);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/memory/ReplaceIdWithInstance.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/memory/ReplaceIdWithInstance.java b/repository/src/main/java/org/apache/atlas/repository/memory/ReplaceIdWithInstance.java
deleted file mode 100755
index 6741eb8..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/memory/ReplaceIdWithInstance.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.memory;
-
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.typesystem.ITypedReferenceableInstance;
-import org.apache.atlas.typesystem.persistence.Id;
-import org.apache.atlas.typesystem.types.DataTypes;
-import org.apache.atlas.typesystem.types.Multiplicity;
-import org.apache.atlas.typesystem.types.ObjectGraphWalker;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-public class ReplaceIdWithInstance implements ObjectGraphWalker.NodeProcessor {
-
- public final Map<Id, ITypedReferenceableInstance> idToInstanceMap;
- final MemRepository repository;
- ObjectGraphWalker walker;
-
- public ReplaceIdWithInstance(MemRepository repository) {
- this.repository = repository;
- idToInstanceMap = new HashMap<>();
- }
-
- void setWalker(ObjectGraphWalker walker) {
- this.walker = walker;
- }
-
- @Override
- public void processNode(ObjectGraphWalker.Node nd) throws AtlasException {
- if (nd.attributeName != null) {
- if (nd.aInfo.isComposite && nd.value != null) {
- if (nd.aInfo.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) {
- if (nd.value instanceof Id) {
- Id id = (Id) nd.value;
- ITypedReferenceableInstance r = getInstance(id);
- nd.instance.set(nd.attributeName, r);
- }
- } else if (nd.aInfo.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) {
- DataTypes.ArrayType aT = (DataTypes.ArrayType) nd.aInfo.dataType();
- nd.instance.set(nd.attributeName,
- convertToInstances((ImmutableCollection) nd.value, nd.aInfo.multiplicity, aT));
- } else if (nd.aInfo.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) {
- DataTypes.MapType mT = (DataTypes.MapType) nd.aInfo.dataType();
- nd.instance.set(nd.attributeName, convertToInstances((ImmutableMap) nd.value, nd.aInfo.multiplicity, mT));
- }
- }
- }
- }
-
- ImmutableCollection<?> convertToInstances(ImmutableCollection<?> val, Multiplicity m, DataTypes.ArrayType arrType)
- throws AtlasException {
-
- if (val == null || arrType.getElemType().getTypeCategory() != DataTypes.TypeCategory.CLASS) {
- return val;
- }
-
- ImmutableCollection.Builder b = m.isUnique ? ImmutableSet.builder() : ImmutableList.builder();
- for (Object elem : val) {
- if (elem instanceof Id) {
- Id id = (Id) elem;
- elem = getInstance(id);
- }
-
- b.add(elem);
-
- }
- return b.build();
- }
-
- ImmutableMap<?, ?> convertToInstances(ImmutableMap val, Multiplicity m, DataTypes.MapType mapType)
- throws AtlasException {
-
- if (val == null || (mapType.getKeyType().getTypeCategory() != DataTypes.TypeCategory.CLASS
- && mapType.getValueType().getTypeCategory() != DataTypes.TypeCategory.CLASS)) {
- return val;
- }
- ImmutableMap.Builder b = ImmutableMap.builder();
- for (Map.Entry elem : (Iterable<Map.Entry>) val.entrySet()) {
- Object oldKey = elem.getKey();
- Object oldValue = elem.getValue();
- Object newKey = oldKey;
- Object newValue = oldValue;
-
- if (oldKey instanceof Id) {
- Id id = (Id) elem;
- ITypedReferenceableInstance r = getInstance(id);
- }
-
- if (oldValue instanceof Id) {
- Id id = (Id) elem;
- ITypedReferenceableInstance r = getInstance(id);
- }
-
- b.put(newKey, newValue);
- }
- return b.build();
- }
-
- ITypedReferenceableInstance getInstance(Id id) throws AtlasException {
-
- ITypedReferenceableInstance r = idToInstanceMap.get(id);
- if (r == null) {
- r = repository.get(id);
- idToInstanceMap.put(id, r);
- walker.addRoot(r);
- }
- return r;
- }
-}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/memory/StructStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/memory/StructStore.java b/repository/src/main/java/org/apache/atlas/repository/memory/StructStore.java
deleted file mode 100755
index 69a18a5..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/memory/StructStore.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.memory;
-
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableMap;
-import org.apache.atlas.repository.RepositoryException;
-import org.apache.atlas.typesystem.persistence.StructInstance;
-import org.apache.atlas.typesystem.types.AttributeInfo;
-import org.apache.atlas.typesystem.types.StructType;
-
-import java.util.Collection;
-import java.util.Map;
-
-@Deprecated
-public class StructStore extends AttributeStores.AbstractAttributeStore implements IAttributeStore {
-
- final StructType structType;
- final ImmutableMap<AttributeInfo, IAttributeStore> attrStores;
-
- StructStore(AttributeInfo aInfo) throws RepositoryException {
- super(aInfo);
- this.structType = (StructType) aInfo.dataType();
- ImmutableMap.Builder<AttributeInfo, IAttributeStore> b = new ImmutableBiMap.Builder<>();
- Collection<AttributeInfo> l = structType.fieldMapping.fields.values();
- for (AttributeInfo i : l) {
- b.put(i, AttributeStores.createStore(i));
- }
- attrStores = b.build();
-
- }
-
- @Override
- protected void store(StructInstance instance, int colPos, int pos) throws RepositoryException {
- StructInstance s = instance.structs[colPos];
- for (Map.Entry<AttributeInfo, IAttributeStore> e : attrStores.entrySet()) {
- IAttributeStore attributeStore = e.getValue();
- attributeStore.store(pos, structType, s);
- }
- }
-
- @Override
- protected void load(StructInstance instance, int colPos, int pos) throws RepositoryException {
- StructInstance s = (StructInstance) structType.createInstance();
- instance.structs[colPos] = s;
- for (Map.Entry<AttributeInfo, IAttributeStore> e : attrStores.entrySet()) {
- IAttributeStore attributeStore = e.getValue();
- attributeStore.load(pos, structType, s);
- }
- }
-
- @Override
- protected void store(StructInstance instance, int colPos, String attrName, Map<String, Object> m) {
- m.put(attrName, instance.structs[colPos]);
- }
-
- @Override
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.structs[colPos] = (StructInstance) val;
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- for (Map.Entry<AttributeInfo, IAttributeStore> e : attrStores.entrySet()) {
- IAttributeStore attributeStore = e.getValue();
- attributeStore.ensureCapacity(pos);
- }
- nullList.size(pos + 1);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/memory/TraitStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/memory/TraitStore.java b/repository/src/main/java/org/apache/atlas/repository/memory/TraitStore.java
deleted file mode 100755
index 0cbb32d..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/memory/TraitStore.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.memory;
-
-import org.apache.atlas.repository.RepositoryException;
-import org.apache.atlas.typesystem.persistence.ReferenceableInstance;
-import org.apache.atlas.typesystem.persistence.StructInstance;
-import org.apache.atlas.typesystem.types.TraitType;
-
-import java.util.ArrayList;
-
-@Deprecated
-public class TraitStore extends HierarchicalTypeStore {
-
- final ArrayList<String> classNameStore;
-
- public TraitStore(MemRepository repository, TraitType hierarchicalType) throws RepositoryException {
- super(repository, hierarchicalType);
- classNameStore = new ArrayList<>();
- }
-
- void store(ReferenceableInstance i) throws RepositoryException {
- int pos = idPosMap.get(i.getId());
- StructInstance s = (StructInstance) i.getTrait(hierarchicalType.getName());
- super.storeFields(pos, s);
- classNameStore.set(pos, i.getTypeName());
- }
-
- void load(ReferenceableInstance i) throws RepositoryException {
- int pos = idPosMap.get(i.getId());
- StructInstance s = (StructInstance) i.getTrait(hierarchicalType.getName());
- super.loadFields(pos, s);
- }
-
- public void ensureCapacity(int pos) throws RepositoryException {
- super.ensureCapacity(pos);
- while (classNameStore.size() < pos + 1) {
- classNameStore.add(null);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasEntityStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasEntityStore.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasEntityStore.java
index 5a0b74e..0fe35b6 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasEntityStore.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/AtlasEntityStore.java
@@ -32,6 +32,15 @@ import java.util.Map;
* Persistence/Retrieval API for AtlasEntity
*/
public interface AtlasEntityStore {
+
+ /**
+ * List all the entity guids for a given typename
+ * @param typename
+ * @return
+ * @throws AtlasBaseException
+ */
+ List<String> getEntityGUIDS(String typename) throws AtlasBaseException;
+
/**
*
* Get entity definition by its guid
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
index 7b349c4..4c511c1 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityChangeNotifier.java
@@ -26,13 +26,13 @@ import org.apache.atlas.model.instance.AtlasClassification;
import org.apache.atlas.model.instance.AtlasEntityHeader;
import org.apache.atlas.model.instance.EntityMutationResponse;
import org.apache.atlas.model.instance.EntityMutations.EntityOperation;
+import org.apache.atlas.v1.model.instance.Referenceable;
+import org.apache.atlas.v1.model.instance.Struct;
import org.apache.atlas.repository.Constants;
import org.apache.atlas.repository.converters.AtlasInstanceConverter;
import org.apache.atlas.repository.graph.FullTextMapperV2;
import org.apache.atlas.repository.graph.GraphHelper;
import org.apache.atlas.repository.graphdb.AtlasVertex;
-import org.apache.atlas.typesystem.ITypedReferenceableInstance;
-import org.apache.atlas.typesystem.ITypedStruct;
import org.apache.atlas.util.AtlasRepositoryConfiguration;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -74,7 +74,7 @@ public class AtlasEntityChangeNotifier {
List<AtlasEntityHeader> partiallyUpdatedEntities = entityMutationResponse.getPartialUpdatedEntities();
List<AtlasEntityHeader> deletedEntities = entityMutationResponse.getDeletedEntities();
- // complete full text mapping before calling toITypedReferenceable(), from notifyListners(), to
+ // complete full text mapping before calling toReferenceables(), from notifyListners(), to
// include all vertex updates in the current graph-transaction
doFullTextMapping(createdEntities);
doFullTextMapping(updatedEntities);
@@ -91,8 +91,8 @@ public class AtlasEntityChangeNotifier {
// appended to the existing fullText
updateFullTextMapping(entityId, classifications);
- ITypedReferenceableInstance entity = toITypedReferenceable(entityId);
- List<ITypedStruct> traits = toITypedStructs(classifications);
+ Referenceable entity = toReferenceable(entityId);
+ List<Struct> traits = toStruct(classifications);
if (entity == null || CollectionUtils.isEmpty(traits)) {
return;
@@ -111,7 +111,7 @@ public class AtlasEntityChangeNotifier {
// Since the entity has already been modified in the graph, we need to recursively remap the entity
doFullTextMapping(entityId);
- ITypedReferenceableInstance entity = toITypedReferenceable(entityId);
+ Referenceable entity = toReferenceable(entityId);
if (entity == null || CollectionUtils.isEmpty(traitNames)) {
return;
@@ -130,8 +130,8 @@ public class AtlasEntityChangeNotifier {
// Since the classification attributes are updated in the graph, we need to recursively remap the entityText
doFullTextMapping(entityId);
- ITypedReferenceableInstance entity = toITypedReferenceable(entityId);
- List<ITypedStruct> traits = toITypedStructs(classifications);
+ Referenceable entity = toReferenceable(entityId);
+ List<Struct> traits = toStruct(classifications);
if (entity == null || CollectionUtils.isEmpty(traits)) {
return;
@@ -155,7 +155,7 @@ public class AtlasEntityChangeNotifier {
return;
}
- List<ITypedReferenceableInstance> typedRefInsts = toITypedReferenceable(entityHeaders);
+ List<Referenceable> typedRefInsts = toReferenceables(entityHeaders);
for (EntityChangeListener listener : entityChangeListeners) {
try {
@@ -177,28 +177,28 @@ public class AtlasEntityChangeNotifier {
}
}
- private List<ITypedReferenceableInstance> toITypedReferenceable(List<AtlasEntityHeader> entityHeaders) throws AtlasBaseException {
- List<ITypedReferenceableInstance> ret = new ArrayList<>(entityHeaders.size());
+ private List<Referenceable> toReferenceables(List<AtlasEntityHeader> entityHeaders) throws AtlasBaseException {
+ List<Referenceable> ret = new ArrayList<>(entityHeaders.size());
for (AtlasEntityHeader entityHeader : entityHeaders) {
- ret.add(instanceConverter.getITypedReferenceable(entityHeader.getGuid()));
+ ret.add(toReferenceable(entityHeader.getGuid()));
}
return ret;
}
- private ITypedReferenceableInstance toITypedReferenceable(String entityId) throws AtlasBaseException {
- ITypedReferenceableInstance ret = null;
+ private Referenceable toReferenceable(String entityId) throws AtlasBaseException {
+ Referenceable ret = null;
if (StringUtils.isNotEmpty(entityId)) {
- ret = instanceConverter.getITypedReferenceable(entityId);
+ ret = instanceConverter.getReferenceable(entityId);
}
return ret;
}
- private List<ITypedStruct> toITypedStructs(List<AtlasClassification> classifications) throws AtlasBaseException {
- List<ITypedStruct> ret = null;
+ private List<Struct> toStruct(List<AtlasClassification> classifications) throws AtlasBaseException {
+ List<Struct> ret = null;
if (classifications != null) {
ret = new ArrayList<>(classifications.size());
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
index a5db81b..89bf7dc 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasEntityStoreV1.java
@@ -77,6 +77,26 @@ public class AtlasEntityStoreV1 implements AtlasEntityStore {
@Override
@GraphTransaction
+ public List<String> getEntityGUIDS(final String typename) throws AtlasBaseException {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> getEntityGUIDS({})", typename);
+ }
+
+ if (StringUtils.isEmpty(typename)) {
+ throw new AtlasBaseException(AtlasErrorCode.UNKNOWN_TYPENAME);
+ }
+
+ List<String> ret = AtlasGraphUtilsV1.findEntityGUIDsByType(typename);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== getEntityGUIDS({})", typename);
+ }
+
+ return ret;
+ }
+
+ @Override
+ @GraphTransaction
public AtlasEntityWithExtInfo getById(String guid) throws AtlasBaseException {
if (LOG.isDebugEnabled()) {
LOG.debug("==> getById({})", guid);
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
index 1eb4183..6a6ac60 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
@@ -43,9 +43,12 @@ import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -325,6 +328,22 @@ public class AtlasGraphUtilsV1 {
return vertex;
}
+ public static List<String> findEntityGUIDsByType(String typename) {
+ AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance().query()
+ .has(Constants.ENTITY_TYPE_PROPERTY_KEY, typename);
+ Iterator<AtlasVertex> results = query.vertices().iterator();
+ if (!results.hasNext()) {
+ return Collections.emptyList();
+ }
+
+ ArrayList<String> entityList = new ArrayList<>();
+ while (results.hasNext()) {
+ entityList.add(getIdFromVertex(results.next()));
+ }
+
+ return entityList;
+ }
+
public static boolean relationshipTypeHasInstanceEdges(String typeName) throws AtlasBaseException {
AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance()
.query()
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java
index 86f1b88..f1d9031 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasStructDefStoreV1.java
@@ -23,6 +23,7 @@ import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.model.typedef.AtlasStructDef;
import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef;
import org.apache.atlas.model.typedef.AtlasStructDef.AtlasConstraintDef;
+import org.apache.atlas.v1.model.typedef.AttributeDefinition;
import org.apache.atlas.repository.Constants;
import org.apache.atlas.repository.graph.GraphHelper;
import org.apache.atlas.repository.graphdb.AtlasVertex;
@@ -31,12 +32,9 @@ import org.apache.atlas.type.AtlasStructType.AtlasAttribute;
import org.apache.atlas.type.AtlasType;
import org.apache.atlas.type.AtlasTypeRegistry;
import org.apache.atlas.type.AtlasTypeUtil;
-import org.apache.atlas.typesystem.types.AttributeDefinition;
-import org.apache.atlas.typesystem.types.AttributeInfo;
import org.apache.atlas.typesystem.types.DataTypes.TypeCategory;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
-import org.codehaus.jettison.json.JSONException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -547,15 +545,9 @@ public class AtlasStructDefStoreV1 extends AtlasAbstractDefStoreV1<AtlasStructDe
}
public static AttributeDefinition toAttributeDefintion(AtlasAttribute attribute) {
- AttributeDefinition ret = null;
-
String jsonString = toJsonFromAttribute(attribute);
- try {
- ret = AttributeInfo.fromJson(jsonString);
- } catch (JSONException excp) {
- LOG.error("failed in converting to AttributeDefinition: " + jsonString, excp);
- }
+ AttributeDefinition ret = AtlasType.fromV1Json(jsonString, AttributeDefinition.class);
return ret;
}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/typestore/GraphBackedTypeStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/typestore/GraphBackedTypeStore.java b/repository/src/main/java/org/apache/atlas/repository/typestore/GraphBackedTypeStore.java
deleted file mode 100644
index 2dd339c..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/typestore/GraphBackedTypeStore.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.typestore;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.annotation.GraphTransaction;
-import org.apache.atlas.repository.Constants;
-import org.apache.atlas.repository.RepositoryException;
-import org.apache.atlas.repository.graph.GraphHelper;
-import org.apache.atlas.repository.graphdb.AtlasEdge;
-import org.apache.atlas.repository.graphdb.AtlasEdgeDirection;
-import org.apache.atlas.repository.graphdb.AtlasGraph;
-import org.apache.atlas.repository.graphdb.AtlasVertex;
-import org.apache.atlas.typesystem.TypesDef;
-import org.apache.atlas.typesystem.types.*;
-import org.apache.atlas.typesystem.types.DataTypes.TypeCategory;
-import org.apache.atlas.typesystem.types.utils.TypesUtil;
-import org.codehaus.jettison.json.JSONException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static org.apache.atlas.repository.graph.GraphHelper.setProperty;
-
-@Singleton
-@Component
-@Deprecated
-public class GraphBackedTypeStore implements ITypeStore {
- public static final String VERTEX_TYPE = "typeSystem";
- private static final String PROPERTY_PREFIX = Constants.INTERNAL_PROPERTY_KEY_PREFIX + "type.";
- public static final String SUPERTYPE_EDGE_LABEL = PROPERTY_PREFIX + ".supertype";
-
- private static Logger LOG = LoggerFactory.getLogger(GraphBackedTypeStore.class);
-
- private final AtlasGraph graph;
-
- private GraphHelper graphHelper = GraphHelper.getInstance();
-
- @Inject
- public GraphBackedTypeStore(AtlasGraph atlasGraph) {
- this.graph = atlasGraph;
- }
-
- @Override
- @GraphTransaction
- public void store(TypeSystem typeSystem, ImmutableList<String> typeNames) throws AtlasException {
-
- //Pre-create the vertices that are needed for the types. This allows us to execute
- //one query to determine all of the vertices that already exist.
- Map<String, AtlasVertex> typeVertices = getOrCreateTypeVertices(typeSystem, typeNames);
-
- //Complete the storage process by adding properties and edges to the vertices
- //that were created.
- TypePersistenceVisitor visitor = new TypePersistenceVisitor(this, typeVertices, typeSystem);
- processTypes(typeNames, typeSystem, visitor);
- }
-
- private void processTypes(ImmutableList<String> typeNames, TypeSystem typeSystem, TypeVisitor visitor) throws AtlasException {
- for (String typeName : typeNames) {
- IDataType dataType = typeSystem.getDataType(IDataType.class, typeName);
- LOG.debug("Processing {}.{}.{} in type store", dataType.getTypeCategory(), dataType.getName(), dataType.getDescription());
- switch (dataType.getTypeCategory()) {
- case ENUM:
- visitor.visitEnumeration((EnumType)dataType);
- break;
-
- case STRUCT:
- StructType structType = (StructType) dataType;
- processType(typeSystem, dataType.getTypeCategory(), dataType.getName(), dataType.getDescription(),
- ImmutableList.copyOf(structType.infoToNameMap.keySet()), ImmutableSet.<String>of(), visitor);
- break;
-
- case TRAIT:
- case CLASS:
- HierarchicalType type = (HierarchicalType) dataType;
- processType(typeSystem, dataType.getTypeCategory(), dataType.getName(), type.getDescription(), type.immediateAttrs,
- type.superTypes, visitor);
- break;
-
- default: //Ignore primitive/collection types as they are covered under references
- break;
- }
- }
- }
-
- private Map<String, AtlasVertex> getOrCreateTypeVertices(TypeSystem typeSystem, ImmutableList<String> typeNames) throws AtlasException {
-
- //examine the types to determine what type vertices are needed
- TypeVertexFinder vertexFinder = new TypeVertexFinder(typeSystem);
- processTypes(typeNames, typeSystem, vertexFinder);
- List<TypeVertexInfo> typeVerticesNeeded = vertexFinder.getVerticesToCreate();
-
- //find or create the type vertices
- List<AtlasVertex> vertices = createVertices(typeVerticesNeeded);
-
- //Create a type name->AtlasVertex map with the result
- Map<String, AtlasVertex> result = new HashMap<>(typeVerticesNeeded.size());
- for(int i = 0 ; i < typeVerticesNeeded.size(); i++) {
- TypeVertexInfo createdVertexInfo = typeVerticesNeeded.get(i);
- AtlasVertex createdVertex = vertices.get(i);
- result.put(createdVertexInfo.getTypeName(), createdVertex);
- }
- return result;
-
- }
-
-
- static String getPropertyKey(String name) {
- return PROPERTY_PREFIX + name;
- }
-
- static String getPropertyKey(String parent, String child) {
- return PROPERTY_PREFIX + parent + "." + child;
- }
-
- static String getEdgeLabel(String parent, String child) {
- return PROPERTY_PREFIX + "edge." + parent + "." + child;
- }
-
- private void processType(TypeSystem typeSystem, DataTypes.TypeCategory category, String typeName, String typeDescription,
- ImmutableList<AttributeInfo> attributes, ImmutableSet<String> superTypes, TypeVisitor visitor) throws AtlasException {
-
- visitor.visitDataType(category, typeName, typeDescription);
-
- List<String> attrNames = new ArrayList<>();
- if (attributes != null) {
- for (AttributeInfo attribute : attributes) {
- visitor.visitAttribute(typeName, attribute);
- attrNames.add(attribute.name);
- processsAttribute(typeSystem, typeName, attribute, visitor);
- }
- }
- visitor.visitAttributeNames(typeName, attrNames);
-
- //Add edges for hierarchy
- if (superTypes != null) {
- for (String superTypeName : superTypes) {
- visitor.visitSuperType(typeName, superTypeName);
- }
- }
- }
-
- private void processsAttribute(TypeSystem typeSystem, String typeName, AttributeInfo attribute, TypeVisitor visitor)
- throws AtlasException {
-
- ImmutableList<String> coreTypes = typeSystem.getCoreTypes();
- List<IDataType> attrDataTypes = new ArrayList<>();
- IDataType attrDataType = attribute.dataType();
-
-
- switch (attrDataType.getTypeCategory()) {
- case ARRAY:
- String attrType = TypeUtils.parseAsArrayType(attrDataType.getName());
- if(attrType != null) {
- IDataType elementType = typeSystem.getDataType(IDataType.class, attrType);
- attrDataTypes.add(elementType);
- }
- break;
-
- case MAP:
- String[] attrTypes = TypeUtils.parseAsMapType(attrDataType.getName());
- if(attrTypes != null && attrTypes.length > 1) {
- IDataType keyType = typeSystem.getDataType(IDataType.class, attrTypes[0]);
- IDataType valueType = typeSystem.getDataType(IDataType.class, attrTypes[1]);
- attrDataTypes.add(keyType);
- attrDataTypes.add(valueType);
- }
- break;
-
- case ENUM:
- case STRUCT:
- case CLASS:
- attrDataTypes.add(attrDataType);
- break;
-
- case PRIMITIVE: //no vertex for primitive type, hence no edge required
- break;
-
- default:
- throw new IllegalArgumentException(
- "Attribute cannot reference instances of type : " + attrDataType.getTypeCategory());
- }
-
-
- for (IDataType attrType : attrDataTypes) {
- if (!coreTypes.contains(attrType.getName())) {
- visitor.visitAttributeDataType(typeName, attribute, attrType);
- }
- }
- }
-
- @Override
- @GraphTransaction
- public TypesDef restore() throws AtlasException {
- //Get all vertices for type system
- Iterator vertices =
- graph.query().has(Constants.VERTEX_TYPE_PROPERTY_KEY, VERTEX_TYPE).vertices().iterator();
-
- return getTypesFromVertices(vertices);
- }
-
- @Override
- @GraphTransaction
- public TypesDef restoreType(String typeName) throws AtlasException {
- // Get AtlasVertex for the specified type name.
- Iterator vertices =
- graph.query().has(Constants.VERTEX_TYPE_PROPERTY_KEY, VERTEX_TYPE).has(Constants.TYPENAME_PROPERTY_KEY, typeName).vertices().iterator();
-
- return getTypesFromVertices(vertices);
- }
-
- private TypesDef getTypesFromVertices(Iterator<AtlasVertex> vertices) throws AtlasException {
- ImmutableList.Builder<EnumTypeDefinition> enums = ImmutableList.builder();
- ImmutableList.Builder<StructTypeDefinition> structs = ImmutableList.builder();
- ImmutableList.Builder<HierarchicalTypeDefinition<ClassType>> classTypes = ImmutableList.builder();
- ImmutableList.Builder<HierarchicalTypeDefinition<TraitType>> traits = ImmutableList.builder();
-
- while (vertices.hasNext()) {
- AtlasVertex vertex = vertices.next();
- DataTypes.TypeCategory typeCategory = GraphHelper.getSingleValuedProperty(vertex, Constants.TYPE_CATEGORY_PROPERTY_KEY, TypeCategory.class);
- String typeName = GraphHelper.getSingleValuedProperty(vertex, Constants.TYPENAME_PROPERTY_KEY, String.class);
- String typeDescription = GraphHelper.getSingleValuedProperty(vertex, Constants.TYPEDESCRIPTION_PROPERTY_KEY, String.class);
- LOG.info("Restoring type {}.{}.{}", typeCategory, typeName, typeDescription);
- switch (typeCategory) {
- case ENUM:
- enums.add(getEnumType(vertex));
- break;
-
- case STRUCT:
- AttributeDefinition[] attributes = getAttributes(vertex, typeName);
- structs.add(new StructTypeDefinition(typeName, typeDescription, attributes));
- break;
-
- case CLASS:
- ImmutableSet<String> superTypes = getSuperTypes(vertex);
- attributes = getAttributes(vertex, typeName);
- classTypes.add(new HierarchicalTypeDefinition(ClassType.class, typeName, typeDescription, superTypes, attributes));
- break;
-
- case TRAIT:
- superTypes = getSuperTypes(vertex);
- attributes = getAttributes(vertex, typeName);
- traits.add(new HierarchicalTypeDefinition(TraitType.class, typeName, typeDescription, superTypes, attributes));
- break;
-
- case RELATIONSHIP:
- // v1 typesystem is not notified on new relation type
- break;
-
- default:
- throw new IllegalArgumentException("Unhandled type category " + typeCategory);
- }
- }
- return TypesUtil.getTypesDef(enums.build(), structs.build(), traits.build(), classTypes.build());
- }
-
- private EnumTypeDefinition getEnumType(AtlasVertex vertex) throws AtlasException {
- String typeName = GraphHelper.getSingleValuedProperty(vertex, Constants.TYPENAME_PROPERTY_KEY, String.class);
- String typeDescription = GraphHelper.getSingleValuedProperty(vertex, Constants.TYPEDESCRIPTION_PROPERTY_KEY, String.class);
- List<EnumValue> enumValues = new ArrayList<>();
- List<String> values = GraphHelper.getListProperty(vertex, getPropertyKey(typeName));
- for (String value : values) {
- String valueProperty = getPropertyKey(typeName, value);
- enumValues.add(new EnumValue(value, GraphHelper.getSingleValuedProperty(vertex, valueProperty, Integer.class)));
- }
- return new EnumTypeDefinition(typeName, typeDescription, enumValues.toArray(new EnumValue[enumValues.size()]));
- }
-
- private ImmutableSet<String> getSuperTypes(AtlasVertex vertex) {
- Set<String> superTypes = new HashSet<>();
- for (AtlasEdge edge : (Iterable<AtlasEdge>) vertex.getEdges(AtlasEdgeDirection.OUT, SUPERTYPE_EDGE_LABEL)) {
- superTypes.add(edge.getInVertex().getProperty(Constants.TYPENAME_PROPERTY_KEY, String.class));
- }
- return ImmutableSet.copyOf(superTypes);
- }
-
- private AttributeDefinition[] getAttributes(AtlasVertex vertex, String typeName) throws AtlasException {
- List<AttributeDefinition> attributes = new ArrayList<>();
- List<String> attrNames = GraphHelper.getListProperty(vertex, getPropertyKey(typeName));
- if (attrNames != null) {
- for (String attrName : attrNames) {
- try {
- String encodedPropertyKey = GraphHelper.encodePropertyKey(getPropertyKey(typeName, attrName));
- AttributeDefinition attrValue = AttributeInfo.fromJson((String) vertex.getJsonProperty(encodedPropertyKey));
- if (attrValue != null)
- {
- attributes.add(attrValue);
- }
- } catch (JSONException e) {
- throw new AtlasException(e);
- }
- }
- }
- return attributes.toArray(new AttributeDefinition[attributes.size()]);
- }
-
- /**
- * Find vertex for the given type category and name, else create new vertex
- * @param category
- * @param typeName
- * @return vertex
- */
- AtlasVertex findVertex(DataTypes.TypeCategory category, String typeName) {
- LOG.debug("Finding AtlasVertex for {}.{}", category, typeName);
-
- Iterator results = graph.query().has(Constants.TYPENAME_PROPERTY_KEY, typeName).vertices().iterator();
- AtlasVertex vertex = null;
- if (results != null && results.hasNext()) {
- //There should be just one AtlasVertex with the given typeName
- vertex = (AtlasVertex) results.next();
- }
- return vertex;
- }
-
- //package-private for testing
- Map<String, AtlasVertex> findVertices(List<String> typeNames) throws RepositoryException {
- LOG.debug("Finding vertices for {}", typeNames.toString());
- Map<String, AtlasVertex> foundVertices = graphHelper.getVerticesForPropertyValues(Constants.TYPENAME_PROPERTY_KEY, typeNames);
- return foundVertices;
-
- }
-
-
- /**
- * Finds or creates type vertices with the information specified.
- *
- * @param infoList
- * @return list with the vertices corresponding to the types in the list.
- * @throws AtlasException
- */
- private List<AtlasVertex> createVertices(List<TypeVertexInfo> infoList) throws AtlasException {
-
- List<AtlasVertex> result = new ArrayList<>(infoList.size());
- List<String> typeNames = Lists.transform(infoList, new Function<TypeVertexInfo,String>() {
- @Override
- public String apply(TypeVertexInfo input) {
- return input.getTypeName();
- }
- });
- Map<String, AtlasVertex> vertices = findVertices(typeNames);
-
- for(TypeVertexInfo info : infoList) {
- AtlasVertex vertex = vertices.get(info.getTypeName());
- if (! GraphHelper.elementExists(vertex)) {
- LOG.debug("Adding vertex {}{}", PROPERTY_PREFIX, info.getTypeName());
- vertex = graph.addVertex();
- setProperty(vertex, Constants.VERTEX_TYPE_PROPERTY_KEY, VERTEX_TYPE); // Mark as type AtlasVertex
- setProperty(vertex, Constants.TYPE_CATEGORY_PROPERTY_KEY, info.getCategory());
- setProperty(vertex, Constants.TYPENAME_PROPERTY_KEY, info.getTypeName());
- }
- String newDescription = info.getTypeDescription();
- if (newDescription != null) {
- String oldDescription = getPropertyKey(Constants.TYPEDESCRIPTION_PROPERTY_KEY);
- if (!newDescription.equals(oldDescription)) {
- setProperty(vertex, Constants.TYPEDESCRIPTION_PROPERTY_KEY, newDescription);
- }
- } else {
- LOG.debug(" type description is null ");
- }
- result.add(vertex);
- }
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/typestore/ITypeStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/typestore/ITypeStore.java b/repository/src/main/java/org/apache/atlas/repository/typestore/ITypeStore.java
deleted file mode 100755
index 84779f4..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/typestore/ITypeStore.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.typestore;
-
-import com.google.common.collect.ImmutableList;
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.typesystem.TypesDef;
-import org.apache.atlas.typesystem.types.TypeSystem;
-
-@Deprecated
-public interface ITypeStore {
-
- /**
- * Add types to the underlying type storage layer
- * @param typeSystem {@link TypeSystem} object which contains existing types. To lookup newly added types,
- * an instance of {@link TypeSystem.TransientTypeSystem} can be passed.
- * @param types names of newly added types.
- * @throws AtlasException
- */
- void store(TypeSystem typeSystem, ImmutableList<String> types) throws AtlasException;
-
- /**
- * Restore all type definitions
- * @return List of persisted type definitions
- * @throws AtlasException
- */
- TypesDef restore() throws AtlasException;
-
- /**
- * Restore the specified type definition
- *
- * @param typeName name of requested type
- * @return persisted type definition
- * @throws AtlasException
- */
- TypesDef restoreType(String typeName) throws AtlasException;
-}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/typestore/StorageException.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/typestore/StorageException.java b/repository/src/main/java/org/apache/atlas/repository/typestore/StorageException.java
deleted file mode 100755
index c4f64f8..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/typestore/StorageException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.typestore;
-
-import org.apache.atlas.AtlasException;
-
-public class StorageException extends AtlasException {
- public StorageException(String type) {
- super("Failure in typesystem storage for type " + type);
- }
-
- public StorageException(String type, Throwable cause) {
- super("Failure in typesystem storage for type " + type, cause);
- }
-
- public StorageException(Throwable cause) {
- super("Failure in type system storage", cause);
- }
-}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/typestore/StoreBackedTypeCache.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/typestore/StoreBackedTypeCache.java b/repository/src/main/java/org/apache/atlas/repository/typestore/StoreBackedTypeCache.java
deleted file mode 100644
index f472fa6..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/typestore/StoreBackedTypeCache.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.atlas.repository.typestore;
-
-import com.google.common.collect.ImmutableList;
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.annotation.ConditionalOnAtlasProperty;
-import org.apache.atlas.typesystem.TypesDef;
-import org.apache.atlas.typesystem.types.AttributeDefinition;
-import org.apache.atlas.typesystem.types.ClassType;
-import org.apache.atlas.typesystem.types.EnumTypeDefinition;
-import org.apache.atlas.typesystem.types.HierarchicalTypeDefinition;
-import org.apache.atlas.typesystem.types.IDataType;
-import org.apache.atlas.typesystem.types.StructTypeDefinition;
-import org.apache.atlas.typesystem.types.TraitType;
-import org.apache.atlas.typesystem.types.TypeSystem;
-import org.apache.atlas.typesystem.types.TypeSystem.TransientTypeSystem;
-import org.apache.atlas.typesystem.types.TypeUtils;
-import org.apache.atlas.typesystem.types.cache.DefaultTypeCache;
-import org.apache.atlas.typesystem.types.utils.TypesUtil;
-import org.springframework.stereotype.Component;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * An extension of {@link DefaultTypeCache} which loads
- * the requested type from the type store if it is not found in the cache,
- * and adds it to the cache if it's found in the store.
- * Any attribute and super types that are required by the requested type
- * are also loaded from the store if they are not already in the cache.
- */
-@Singleton
-@Component
-@Deprecated
-@ConditionalOnAtlasProperty(property = "atlas.TypeCache.impl")
-public class StoreBackedTypeCache extends DefaultTypeCache {
-
- private ITypeStore typeStore;
-
- private ImmutableList<String> coreTypes;
- private TypeSystem typeSystem;
-
- @Inject
- public StoreBackedTypeCache(final ITypeStore typeStore) {
- this.typeStore = typeStore;
- typeSystem = TypeSystem.getInstance();
- coreTypes = typeSystem.getCoreTypes();
- }
-
- private static class Context {
- ImmutableList.Builder<EnumTypeDefinition> enums = ImmutableList.builder();
- ImmutableList.Builder<StructTypeDefinition> structs = ImmutableList.builder();
- ImmutableList.Builder<HierarchicalTypeDefinition<ClassType>> classTypes = ImmutableList.builder();
- ImmutableList.Builder<HierarchicalTypeDefinition<TraitType>> traits = ImmutableList.builder();
- Set<String> loadedFromStore = new HashSet<>();
-
- public void addTypesDefToLists(TypesDef typesDef) {
-
- List<EnumTypeDefinition> enumTypesAsJavaList = typesDef.enumTypesAsJavaList();
- enums.addAll(enumTypesAsJavaList);
- for (EnumTypeDefinition etd : enumTypesAsJavaList) {
- loadedFromStore.add(etd.name);
- }
- List<StructTypeDefinition> structTypesAsJavaList = typesDef.structTypesAsJavaList();
- structs.addAll(structTypesAsJavaList);
- for (StructTypeDefinition std : structTypesAsJavaList) {
- loadedFromStore.add(std.typeName);
- }
- List<HierarchicalTypeDefinition<ClassType>> classTypesAsJavaList = typesDef.classTypesAsJavaList();
- classTypes.addAll(classTypesAsJavaList);
- for (HierarchicalTypeDefinition<ClassType> classTypeDef : classTypesAsJavaList) {
- loadedFromStore.add(classTypeDef.typeName);
- }
- List<HierarchicalTypeDefinition<TraitType>> traitTypesAsJavaList = typesDef.traitTypesAsJavaList();
- traits.addAll(traitTypesAsJavaList);
- for (HierarchicalTypeDefinition<TraitType> traitTypeDef : traitTypesAsJavaList) {
- loadedFromStore.add(traitTypeDef.typeName);
- }
- }
-
- public boolean isLoadedFromStore(String typeName) {
- return loadedFromStore.contains(typeName);
- }
-
- public TypesDef getTypesDef() {
- return TypesUtil.getTypesDef(enums.build(), structs.build(), traits.build(), classTypes.build());
- }
- }
-
- /**
- * Checks whether the specified type is cached in memory and does *not*
- * access the type store. Used for testing.
- *
- * @param typeName
- * @return
- */
- public boolean isCachedInMemory(String typeName) throws AtlasException {
- return super.has(typeName);
- }
-
- /**
- * Check the type store for the requested type.
- * If found in the type store, the type and any required super and attribute types
- * are loaded from the type store, and added to the cache.
- */
- @Override
- public IDataType onTypeFault(String typeName) throws AtlasException {
-
- // Type is not cached - check the type store.
- // Any super and attribute types needed by the requested type
- // which are not cached will also be loaded from the store.
- Context context = new Context();
- TypesDef typesDef = getTypeFromStore(typeName, context);
- if (typesDef.isEmpty()) {
- // Type not found in the type store.
- return null;
- }
-
- // Add all types that were loaded from the store to the cache.
- TransientTypeSystem transientTypeSystem = typeSystem.createTransientTypeSystem(context.getTypesDef(), false);
- Map<String, IDataType> typesAdded = transientTypeSystem.getTypesAdded();
- putAll(typesAdded.values());
- return typesAdded.get(typeName);
- }
-
- private void getTypeFromCacheOrStore(String typeName, Context context)
- throws AtlasException {
-
- if (coreTypes.contains(typeName) || super.has(typeName)) {
- return;
- }
-
- if (context.isLoadedFromStore(typeName)) {
- return;
- }
-
- // Type not cached and hasn't been loaded during this operation, so check the store.
- TypesDef typesDef = getTypeFromStore(typeName, context);
- if (typesDef.isEmpty()) {
- // Attribute type not found in cache or store.
- throw new AtlasException(typeName + " not found in type store");
- }
- }
-
- private TypesDef getTypeFromStore(String typeName, Context context)
- throws AtlasException {
-
- TypesDef typesDef = typeStore.restoreType(typeName);
- if (!typesDef.isEmpty()) {
- // Type found in store, add it to lists.
- context.addTypesDefToLists(typesDef);
-
- // Check the attribute and super types that are
- // used by the requested type, and restore them
- // as needed.
- checkAttributeAndSuperTypes(typesDef, context);
- }
- return typesDef;
- }
-
- private void checkAttributeAndSuperTypes(TypesDef typesDef, Context context)
- throws AtlasException {
-
- // Check the cache and store for attribute types and super types.
- for (HierarchicalTypeDefinition<ClassType> classTypeDef : typesDef.classTypesAsJavaList()) {
- checkAttributeTypes(classTypeDef.attributeDefinitions, context);
- for (String superTypeName : classTypeDef.superTypes) {
- getTypeFromCacheOrStore(superTypeName, context);
- }
- }
- for (HierarchicalTypeDefinition<TraitType> traitTypeDef : typesDef.traitTypesAsJavaList()) {
- checkAttributeTypes(traitTypeDef.attributeDefinitions, context);
- for (String superTypeName : traitTypeDef.superTypes) {
- getTypeFromCacheOrStore(superTypeName, context);
- }
- }
- for (StructTypeDefinition structTypeDef : typesDef.structTypesAsJavaList()) {
- checkAttributeTypes(structTypeDef.attributeDefinitions, context);
- }
- }
-
- private void checkAttributeTypes(AttributeDefinition[] attributeDefinitions,
- Context context) throws AtlasException {
-
- for (AttributeDefinition attrDef : attributeDefinitions) {
- checkAttributeType(attrDef, context);
- }
- }
-
- private void checkAttributeType(AttributeDefinition attrDef, Context context) throws AtlasException {
-
- List<String> typeNamesToLookup = new ArrayList<>(2);
-
- // Get the attribute type(s).
- String elementTypeName = TypeUtils.parseAsArrayType(attrDef.dataTypeName);
- if (elementTypeName != null) {
- // Array attribute, lookup the element type.
- typeNamesToLookup.add(elementTypeName);
- }
- else {
- String[] mapTypeNames = TypeUtils.parseAsMapType(attrDef.dataTypeName);
- if (mapTypeNames != null) {
- // Map attribute, lookup the key and value types.
- typeNamesToLookup.addAll(Arrays.asList(mapTypeNames));
- }
- else {
- // Not an array or map, lookup the attribute type.
- typeNamesToLookup.add(attrDef.dataTypeName);
- }
- }
-
- for (String typeName : typeNamesToLookup) {
- getTypeFromCacheOrStore(typeName, context);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/typestore/TypePersistenceVisitor.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/typestore/TypePersistenceVisitor.java b/repository/src/main/java/org/apache/atlas/repository/typestore/TypePersistenceVisitor.java
deleted file mode 100644
index bfb1bfc..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/typestore/TypePersistenceVisitor.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.atlas.repository.typestore;
-
-import static org.apache.atlas.repository.graph.GraphHelper.setProperty;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.repository.Constants;
-import org.apache.atlas.repository.RepositoryException;
-import org.apache.atlas.repository.graph.GraphHelper;
-import org.apache.atlas.repository.graphdb.AtlasVertex;
-import org.apache.atlas.typesystem.types.AttributeInfo;
-import org.apache.atlas.typesystem.types.DataTypes.TypeCategory;
-import org.apache.atlas.typesystem.types.EnumType;
-import org.apache.atlas.typesystem.types.EnumValue;
-import org.apache.atlas.typesystem.types.HierarchicalType;
-import org.apache.atlas.typesystem.types.IDataType;
-import org.apache.atlas.typesystem.types.TypeSystem;
-import org.codehaus.jettison.json.JSONException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * TypeVisitor implementation that completes the type storage process by
- * adding the required properties and edges to the type vertices
- * that were created.
- */
-public class TypePersistenceVisitor implements TypeVisitor {
-
- private static final Logger LOG = LoggerFactory.getLogger(TypePersistenceVisitor.class);
- private static final GraphHelper graphHelper = GraphHelper.getInstance();
-
- private final GraphBackedTypeStore typeStore_;
- private final Map<String,AtlasVertex> typeVertices;
- private final TypeSystem typeSystem;
-
- /**
- * @param graphBackedTypeStore
- */
- public TypePersistenceVisitor(GraphBackedTypeStore graphBackedTypeStore, Map<String,AtlasVertex> typeVertices, TypeSystem typeSystem) {
- typeStore_ = graphBackedTypeStore;
- this.typeVertices = typeVertices;
- this.typeSystem = typeSystem;
- }
-
- @Override
- public void visitEnumeration(EnumType dataType) throws AtlasException {
- AtlasVertex vertex = typeVertices.get(dataType.getName());
- List<String> values = new ArrayList<>(dataType.values().size());
- for (EnumValue enumValue : dataType.values()) {
- String key = GraphBackedTypeStore.getPropertyKey(dataType.getName(), enumValue.value);
- setProperty(vertex, key, enumValue.ordinal);
- values.add(enumValue.value);
- }
- setProperty(vertex, GraphBackedTypeStore.getPropertyKey(dataType.getName()), values);
-
- }
- @Override
- public void visitAttributeDataType(String typeName, AttributeInfo attribute, IDataType attrType) throws AtlasException {
- AtlasVertex vertex = typeVertices.get(typeName);
- String vertexTypeName = GraphHelper.getSingleValuedProperty(vertex, Constants.TYPENAME_PROPERTY_KEY, String.class);
- AtlasVertex attrVertex = typeVertices.get(attrType.getName());
- String label = GraphBackedTypeStore.getEdgeLabel(vertexTypeName, attribute.name);
- graphHelper.getOrCreateEdge(vertex, attrVertex, label);
- }
- @Override
- public void visitSuperType(String typeName, String superTypeName) throws AtlasException {
- AtlasVertex vertex = typeVertices.get(typeName);
- HierarchicalType superType = typeSystem.getDataType(HierarchicalType.class, superTypeName);
- AtlasVertex superVertex = typeVertices.get(superTypeName);
- graphHelper.getOrCreateEdge(vertex, superVertex, GraphBackedTypeStore.SUPERTYPE_EDGE_LABEL);
- }
-
- @Override
- public void visitAttributeNames(String typeName, List<String> attrNames) throws AtlasException {
- AtlasVertex vertex = typeVertices.get(typeName);
- setProperty(vertex, GraphBackedTypeStore.getPropertyKey(typeName), attrNames);
-
- }
-
- @Override
- public void visitAttribute(String typeName, AttributeInfo attribute) throws AtlasException {
- AtlasVertex vertex = typeVertices.get(typeName);
- String propertyKey = GraphBackedTypeStore.getPropertyKey(typeName, attribute.name);
- try {
- setProperty(vertex, propertyKey, attribute.toJson());
- } catch (JSONException e) {
- throw new StorageException(typeName, e);
- }
- }
-
- @Override
- public void visitDataType(TypeCategory category, String typeName, String typeDescription) {
- //nothing to do
-
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVertexFinder.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVertexFinder.java b/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVertexFinder.java
deleted file mode 100644
index 8b38152..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVertexFinder.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.typestore;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.typesystem.types.AttributeInfo;
-import org.apache.atlas.typesystem.types.DataTypes.TypeCategory;
-import org.apache.atlas.typesystem.types.EnumType;
-import org.apache.atlas.typesystem.types.HierarchicalType;
-import org.apache.atlas.typesystem.types.IDataType;
-import org.apache.atlas.typesystem.types.TypeSystem;
-
-/**
- * TypeVisitor implementation that builds up a list of type vertices
- * that need to be created for the types that are being stored.
- *
- */
-public class TypeVertexFinder implements TypeVisitor {
-
- private final List<TypeVertexInfo> toCreate = new ArrayList<TypeVertexInfo>();
- private final Set<String> typesIncluded = new HashSet<String>();
- private final TypeSystem typeSystem;
-
- public TypeVertexFinder(TypeSystem ts) {
- typeSystem = ts;
- }
-
-
- @Override
- public void visitEnumeration(EnumType dataType) {
- visitDataType(dataType);
- }
-
- private void addTypeIfNeeded(TypeVertexInfo info) {
- if(! typesIncluded.contains(info.getTypeName())) {
- toCreate.add(info);
- typesIncluded.add(info.getTypeName());
- }
- }
-
- @Override
- public void visitAttributeDataType(String typeName, AttributeInfo sourceAttr, IDataType attrType) throws AtlasException {
- visitDataType(attrType);
- }
-
- @Override
- public void visitSuperType(String typeName, String superTypeName) throws AtlasException {
- HierarchicalType superType = typeSystem.getDataType(HierarchicalType.class, superTypeName);
- visitDataType(superType);
- }
-
- @Override
- public void visitAttributeNames(String typeName, List<String> attrNames) throws AtlasException {
- //nothing to do
-
- }
-
- @Override
- public void visitAttribute(String typeName, AttributeInfo attribute) throws StorageException, AtlasException {
- //nothing to do
- }
-
-
- private void visitDataType(IDataType dataType) {
- TypeVertexInfo info = null;
- info = new TypeVertexInfo(dataType.getTypeCategory(), dataType.getName(), dataType.getDescription());
- addTypeIfNeeded(info);
-
- }
-
-
- public List<TypeVertexInfo> getVerticesToCreate() {
- return toCreate;
- }
-
- @Override
- public void visitDataType(TypeCategory category, String typeName, String typeDescription) {
- TypeVertexInfo info = new TypeVertexInfo(category, typeName, typeDescription);
- addTypeIfNeeded(info);
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVertexInfo.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVertexInfo.java b/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVertexInfo.java
deleted file mode 100644
index 32a9a19..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVertexInfo.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.typestore;
-
-import java.util.Objects;
-
-import org.apache.atlas.typesystem.types.DataTypes;
-import org.apache.atlas.typesystem.types.DataTypes.TypeCategory;
-
-/**
- * Records the information needed to create a particular type vertex.
- */
-public class TypeVertexInfo {
-
- private DataTypes.TypeCategory category;
- private String typeName;
- private String typeDescription;
-
- public TypeVertexInfo(TypeCategory category, String typeName, String typeDescription) {
- super();
- this.category = category;
- this.typeName = typeName;
- this.typeDescription = typeDescription;
- }
-
- public DataTypes.TypeCategory getCategory() {
- return category;
- }
-
- public void setCategory(DataTypes.TypeCategory category) {
- this.category = category;
- }
-
- public String getTypeName() {
- return typeName;
- }
-
- public void setTypeName(String typeName) {
- this.typeName = typeName;
- }
-
- public String getTypeDescription() {
- return typeDescription;
- }
-
- public void setTypeDescription(String typeDescription) {
- this.typeDescription = typeDescription;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(category, typeName);
- }
-
- @Override
- public boolean equals(Object obj) {
-
- if (this == obj) {
- return true;
- }
-
- if (getClass() != obj.getClass()) {
- return false;
- }
-
- TypeVertexInfo other = (TypeVertexInfo)obj;
- if(! Objects.equals(category, other.category)) {
- return false;
- }
-
- if(! Objects.equals(typeName, other.typeName)) {
- return false;
- }
-
- return true;
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVisitor.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVisitor.java b/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVisitor.java
deleted file mode 100644
index a6e353c..0000000
--- a/repository/src/main/java/org/apache/atlas/repository/typestore/TypeVisitor.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.atlas.repository.typestore;
-
-import java.util.List;
-
-import org.apache.atlas.AtlasException;
-import org.apache.atlas.repository.RepositoryException;
-import org.apache.atlas.typesystem.types.AttributeInfo;
-import org.apache.atlas.typesystem.types.DataTypes.TypeCategory;
-import org.apache.atlas.typesystem.types.EnumType;
-import org.apache.atlas.typesystem.types.IDataType;
-
-/**
- * Callback mechanism used when storing types. As {@link GraphBackedTypeStore} traverses
- * through the types being persisted, these methods are called with the information that
- * it finds.
- */
-public interface TypeVisitor {
-
- /**
- * Called when an enumeration type is found
- * @param type
- * @throws AtlasException
- */
- void visitEnumeration(EnumType type) throws AtlasException;
-
- /**
- * Called with a data type that is associated with a given attribute. There can
- * be more than one. For example, map types have both a key and a value type.
- * This is called once for each type. This is called once for each datatype
- * associated with the given attribute.
- *
- * @param typeName The name of the type being processed.
- * @param sourceAttr The attribute in that type that we are processing.
- * @param attrType A dataType associated with that attribute.
- * @throws AtlasException
- */
- void visitAttributeDataType(String typeName, AttributeInfo sourceAttr, IDataType attrType) throws AtlasException;
-
- /**
- * Called when a super type is found. It is called once for each superType.
- *
- * @param typeName The type being processed.
- * @param superType The name of the super type that was found.
- * @throws RepositoryException
- * @throws AtlasException
- */
- void visitSuperType(String typeName, String superType) throws RepositoryException, AtlasException;
-
- /**
- * Called with the list of immediate attribute names that were found for the given type. It
- * is called once per type.
- *
- * @param typeName The name of the type that is being processed.
- * @param attrNames The names of all of the immediate attributes in the type.
- * @throws AtlasException
- */
- void visitAttributeNames(String typeName, List<String> attrNames) throws AtlasException;
-
- /**
- * Called once for each immediate attribute in a type.
- * @param typeName The name of the type that is being procesed
- * @param attribute The immediate attribute that was found
- *
- * @throws StorageException
- * @throws AtlasException
- */
- void visitAttribute(String typeName, AttributeInfo attribute) throws StorageException, AtlasException;
-
- /**
- * Called once for each struct, class, and trait type that was found. It is
- * called when we start processing that type.
- *
- * @param category The category of the type
- * @param typeName The name of the type
- * @param typeDescription The description of the type.
- */
- void visitDataType(TypeCategory category, String typeName, String typeDescription);
-}
\ No newline at end of file