You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ve...@apache.org on 2015/06/17 01:05:05 UTC
[31/58] [abbrv] incubator-atlas git commit: Refactor packages and
scripts to Atlas (cherry picked from commit 414beba)
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/GraphHelper.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/GraphHelper.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/GraphHelper.java
deleted file mode 100755
index ac9e2fa..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/GraphHelper.java
+++ /dev/null
@@ -1,139 +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.hadoop.metadata.repository.graph;
-
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.thinkaurelius.titan.core.TitanVertex;
-import com.tinkerpop.blueprints.Direction;
-import com.tinkerpop.blueprints.Edge;
-import com.tinkerpop.blueprints.Graph;
-import com.tinkerpop.blueprints.GraphQuery;
-import com.tinkerpop.blueprints.Vertex;
-import org.apache.hadoop.metadata.repository.Constants;
-import org.apache.hadoop.metadata.typesystem.ITypedReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
-import java.util.Set;
-import java.util.UUID;
-
-/**
- * Utility class for graph operations.
- */
-public final class GraphHelper {
-
- private static final Logger LOG = LoggerFactory.getLogger(GraphHelper.class);
-
- private GraphHelper() {
- }
-
- public static Vertex createVertexWithIdentity(Graph graph,
- ITypedReferenceableInstance typedInstance,
- Set<String> superTypeNames) {
- final Vertex vertexWithIdentity = createVertexWithoutIdentity(
- graph, typedInstance.getTypeName(), typedInstance.getId(), superTypeNames);
-
- // add identity
- final String guid = UUID.randomUUID().toString();
- vertexWithIdentity.setProperty(Constants.GUID_PROPERTY_KEY, guid);
-
- return vertexWithIdentity;
- }
-
- public static Vertex createVertexWithoutIdentity(Graph graph,
- String typeName,
- Id typedInstanceId,
- Set<String> superTypeNames) {
- final Vertex vertexWithoutIdentity = graph.addVertex(null);
-
- // add type information
- vertexWithoutIdentity.setProperty(Constants.ENTITY_TYPE_PROPERTY_KEY, typeName);
-
- // add super types
- for (String superTypeName : superTypeNames) {
- ((TitanVertex) vertexWithoutIdentity).addProperty(
- Constants.SUPER_TYPES_PROPERTY_KEY, superTypeName);
- }
-
- // add version information
- vertexWithoutIdentity.setProperty(Constants.VERSION_PROPERTY_KEY, typedInstanceId.version);
-
- // add timestamp information
- vertexWithoutIdentity.setProperty(
- Constants.TIMESTAMP_PROPERTY_KEY, System.currentTimeMillis());
-
- return vertexWithoutIdentity;
- }
-
- public static Edge addEdge(TitanGraph titanGraph, Vertex fromVertex, Vertex toVertex,
- String edgeLabel) {
- LOG.debug("Adding edge for {} -> label {} -> {}",
- fromVertex, edgeLabel, toVertex);
-
- return titanGraph.addEdge(null, fromVertex, toVertex, edgeLabel);
- }
-
- public static Vertex findVertexByGUID(TitanGraph titanGraph,
- String value) {
- LOG.debug("Finding vertex for key={}, value={}", Constants.GUID_PROPERTY_KEY, value);
-
- GraphQuery query = titanGraph.query()
- .has(Constants.GUID_PROPERTY_KEY, value);
- Iterator<Vertex> results = query.vertices().iterator();
- // returning one since guid should be unique
- return results.hasNext() ? results.next() : null;
- }
-
- public static String vertexString(final Vertex vertex) {
- StringBuilder properties = new StringBuilder();
- for (String propertyKey : vertex.getPropertyKeys()) {
- properties.append(propertyKey)
- .append("=").append(vertex.getProperty(propertyKey))
- .append(", ");
- }
-
- return "v[" + vertex.getId() + "], Properties[" + properties + "]";
- }
-
- public static String edgeString(final Edge edge) {
- return "e[" + edge.getLabel() + "], ["
- + edge.getVertex(Direction.OUT)
- + " -> " + edge.getLabel() + " -> "
- + edge.getVertex(Direction.IN)
- + "]";
- }
-
-/*
- public static void dumpToLog(final Graph graph) {
- LOG.debug("*******************Graph Dump****************************");
- LOG.debug("Vertices of {}", graph);
- for (Vertex vertex : graph.getVertices()) {
- LOG.debug(vertexString(vertex));
- }
-
- LOG.debug("Edges of {}", graph);
- for (Edge edge : graph.getEdges()) {
- LOG.debug(edgeString(edge));
- }
- LOG.debug("*******************Graph Dump****************************");
- }
-*/
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/GraphProvider.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/GraphProvider.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/GraphProvider.java
deleted file mode 100755
index c2879c4..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/GraphProvider.java
+++ /dev/null
@@ -1,28 +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.hadoop.metadata.repository.graph;
-
-import com.google.inject.throwingproviders.CheckedProvider;
-import com.tinkerpop.blueprints.Graph;
-
-public interface GraphProvider<T extends Graph> extends CheckedProvider<T> {
-
- @Override
- T get();
-}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/TitanGraphProvider.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/TitanGraphProvider.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/TitanGraphProvider.java
deleted file mode 100755
index af81edc..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/graph/TitanGraphProvider.java
+++ /dev/null
@@ -1,79 +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.hadoop.metadata.repository.graph;
-
-import com.google.inject.Provides;
-import com.thinkaurelius.titan.core.TitanFactory;
-import com.thinkaurelius.titan.core.TitanGraph;
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.PropertiesUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.inject.Singleton;
-import java.util.Iterator;
-
-/**
- * Default implementation for Graph Provider that doles out Titan Graph.
- */
-public class TitanGraphProvider implements GraphProvider<TitanGraph> {
-
- private static final Logger LOG = LoggerFactory.getLogger(TitanGraphProvider.class);
-
- /**
- * Constant for the configuration property that indicates the prefix.
- */
- private static final String METADATA_PREFIX = "metadata.graph.";
-
- private static Configuration getConfiguration() throws MetadataException {
- PropertiesConfiguration configProperties = PropertiesUtil.getApplicationProperties();
-
- Configuration graphConfig = new PropertiesConfiguration();
-
- final Iterator<String> iterator = configProperties.getKeys();
- while (iterator.hasNext()) {
- String key = iterator.next();
- if (key.startsWith(METADATA_PREFIX)) {
- String value = (String) configProperties.getProperty(key);
- key = key.substring(METADATA_PREFIX.length());
- graphConfig.setProperty(key, value);
- LOG.info("Using graph property {}={}", key, value);
- }
- }
-
- return graphConfig;
- }
-
- @Override
- @Singleton
- @Provides
- public TitanGraph get() {
- Configuration config;
- try {
- config = getConfiguration();
- } catch (MetadataException e) {
- throw new RuntimeException(e);
- }
-
- return TitanFactory.open(config);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/AttributeStores.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/AttributeStores.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/AttributeStores.java
deleted file mode 100755
index 5b6ec34..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/AttributeStores.java
+++ /dev/null
@@ -1,655 +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.hadoop.metadata.repository.memory;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import it.unimi.dsi.fastutil.booleans.BooleanArrayList;
-import it.unimi.dsi.fastutil.bytes.ByteArrayList;
-import it.unimi.dsi.fastutil.doubles.DoubleArrayList;
-import it.unimi.dsi.fastutil.floats.FloatArrayList;
-import it.unimi.dsi.fastutil.ints.IntArrayList;
-import it.unimi.dsi.fastutil.longs.LongArrayList;
-import it.unimi.dsi.fastutil.shorts.ShortArrayList;
-import org.apache.hadoop.metadata.repository.RepositoryException;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-import org.apache.hadoop.metadata.typesystem.persistence.StructInstance;
-import org.apache.hadoop.metadata.typesystem.types.AttributeInfo;
-import org.apache.hadoop.metadata.typesystem.types.DataTypes;
-import org.apache.hadoop.metadata.typesystem.types.IConstructableType;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class AttributeStores {
-
- private static final Object NULL_VAL = new Object();
-
- static IAttributeStore createStore(AttributeInfo i) throws RepositoryException {
- switch (i.dataType().getTypeCategory()) {
- case PRIMITIVE:
- if (i.dataType() == DataTypes.BOOLEAN_TYPE) {
- return new BooleanAttributeStore(i);
- } else if (i.dataType() == DataTypes.BYTE_TYPE) {
- return new ByteAttributeStore(i);
- } else if (i.dataType() == DataTypes.SHORT_TYPE) {
- new ShortAttributeStore(i);
- } else if (i.dataType() == DataTypes.INT_TYPE) {
- return new IntAttributeStore(i);
- } else if (i.dataType() == DataTypes.LONG_TYPE) {
- return new LongAttributeStore(i);
- } else if (i.dataType() == DataTypes.FLOAT_TYPE) {
- return new FloatAttributeStore(i);
- } else if (i.dataType() == DataTypes.DOUBLE_TYPE) {
- return new DoubleAttributeStore(i);
- } else if (i.dataType() == DataTypes.BIGINTEGER_TYPE) {
- return new BigIntStore(i);
- } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) {
- return new BigDecimalStore(i);
- } else if (i.dataType() == DataTypes.DATE_TYPE) {
- return new DateStore(i);
- } else if (i.dataType() == DataTypes.STRING_TYPE) {
- return new StringStore(i);
- } else if (i.dataType() == DataTypes.STRING_TYPE) {
- return new StringStore(i);
- } else {
- throw new RepositoryException(
- String.format("Unknown datatype %s", i.dataType()));
- }
- case ENUM:
- return new IntAttributeStore(i);
- case ARRAY:
- return new ImmutableListStore(i);
- case MAP:
- return new ImmutableMapStore(i);
- case STRUCT:
- return new StructStore(i);
- case CLASS:
- return new IdStore(i);
- default:
- throw new RepositoryException(
- String.format("Unknown Category for datatype %s", i.dataType()));
- }
- }
-
- static abstract class AbstractAttributeStore implements IAttributeStore {
- final BooleanArrayList nullList;
- final Map<Integer, Map<String, Object>> hiddenVals;
- AttributeInfo attrInfo;
-
- AbstractAttributeStore(AttributeInfo attrInfo) {
- this.attrInfo = attrInfo;
- this.nullList = new BooleanArrayList();
- hiddenVals = new HashMap<Integer, Map<String, Object>>();
- }
-
- final void setNull(int pos, boolean flag) {
- nullList.set(pos, flag);
- }
-
- final boolean getNull(int pos) {
- return nullList.get(pos);
- }
-
- void storeHiddenVals(int pos, IConstructableType type, StructInstance instance)
- throws RepositoryException {
- List<String> attrNames = type.getNames(attrInfo);
- Map<String, Object> m = hiddenVals.get(pos);
- if (m == null) {
- m = new HashMap<String, Object>();
- hiddenVals.put(pos, m);
- }
- for (int i = 2; i < attrNames.size(); i++) {
- String attrName = attrNames.get(i);
- int nullPos = instance.fieldMapping().fieldNullPos.get(attrName);
- int colPos = instance.fieldMapping().fieldPos.get(attrName);
- if (instance.nullFlags[nullPos]) {
- m.put(attrName, NULL_VAL);
- } else {
- //m.put(attrName, instance.bools[colPos]);
- store(instance, colPos, attrName, m);
- }
- }
- }
-
- void loadHiddenVals(int pos, IConstructableType type, StructInstance instance)
- throws RepositoryException {
- List<String> attrNames = type.getNames(attrInfo);
- Map<String, Object> m = hiddenVals.get(pos);
- for (int i = 2; i < attrNames.size(); i++) {
- String attrName = attrNames.get(i);
- int nullPos = instance.fieldMapping().fieldNullPos.get(attrName);
- int colPos = instance.fieldMapping().fieldPos.get(attrName);
- Object val = m == null ? NULL_VAL : m.get(attrName);
- if (val == NULL_VAL) {
- instance.nullFlags[nullPos] = true;
- } else {
- instance.nullFlags[nullPos] = false;
- load(instance, colPos, val);
- }
- }
- }
-
- @Override
- public void store(int pos, IConstructableType type, StructInstance instance)
- throws RepositoryException {
- List<String> attrNames = type.getNames(attrInfo);
- String attrName = attrNames.get(0);
- int nullPos = instance.fieldMapping().fieldNullPos.get(attrName);
- int colPos = instance.fieldMapping().fieldPos.get(attrName);
- nullList.set(pos, instance.nullFlags[nullPos]);
-
- if (pos == nullList.size()) {
- nullList.add(instance.nullFlags[nullPos]);
- } else {
- nullList.set(pos, instance.nullFlags[nullPos]);
- }
- //list.set(pos, instance.bools[colPos]);
- store(instance, colPos, pos);
-
- if (attrNames.size() > 1) {
- storeHiddenVals(pos, type, instance);
- }
- }
-
- @Override
- public void load(int pos, IConstructableType type, StructInstance instance)
- throws RepositoryException {
- List<String> attrNames = type.getNames(attrInfo);
- String attrName = attrNames.get(0);
- int nullPos = instance.fieldMapping().fieldNullPos.get(attrName);
- int colPos = instance.fieldMapping().fieldPos.get(attrName);
-
- if (nullList.get(pos)) {
- instance.nullFlags[nullPos] = true;
- } else {
- instance.nullFlags[nullPos] = false;
- load(instance, colPos, pos);
- }
-
- if (attrNames.size() > 1) {
- loadHiddenVals(pos, type, instance);
- }
- }
-
- /*
- * store the value from colPos in instance into the list.
- */
- protected abstract void store(StructInstance instance, int colPos, int pos)
- throws RepositoryException;
-
- /*
- * load the value from pos in list into colPos in instance.
- */
- protected abstract void load(StructInstance instance, int colPos, int pos)
- throws RepositoryException;
-
- /*
- * store the value from colPos in map as attrName
- */
- protected abstract void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m);
-
- /*
- * load the val into colPos in instance.
- */
- protected abstract void load(StructInstance instance, int colPos, Object val);
-
- }
-
- static abstract class PrimitiveAttributeStore extends AbstractAttributeStore
- implements IAttributeStore {
-
-
- public PrimitiveAttributeStore(AttributeInfo attrInfo) {
- super(attrInfo);
- }
-
- }
-
- static class BooleanAttributeStore extends PrimitiveAttributeStore {
-
- final BooleanArrayList list;
-
- BooleanAttributeStore(AttributeInfo attrInfo) {
- super(attrInfo);
- this.list = new BooleanArrayList();
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.bools[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.bools[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.bools[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.bools[colPos] = (Boolean) val;
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- list.size(pos + 1);
- nullList.size(pos + 1);
- }
- }
-
- static class ByteAttributeStore extends PrimitiveAttributeStore {
-
- final ByteArrayList list;
-
- ByteAttributeStore(AttributeInfo attrInfo) {
- super(attrInfo);
- this.list = new ByteArrayList();
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.bytes[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.bytes[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.bytes[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.bytes[colPos] = (Byte) val;
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- list.size(pos + 1);
- nullList.size(pos + 1);
- }
- }
-
- static class ShortAttributeStore extends PrimitiveAttributeStore {
-
- final ShortArrayList list;
-
- ShortAttributeStore(AttributeInfo attrInfo) {
- super(attrInfo);
- this.list = new ShortArrayList();
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.shorts[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.shorts[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.shorts[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.shorts[colPos] = (Short) val;
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- list.size(pos + 1);
- nullList.size(pos + 1);
- }
- }
-
- static class IntAttributeStore extends PrimitiveAttributeStore {
-
- final IntArrayList list;
-
- IntAttributeStore(AttributeInfo attrInfo) {
- super(attrInfo);
- this.list = new IntArrayList();
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.ints[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.ints[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.ints[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.ints[colPos] = (Integer) val;
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- list.size(pos + 1);
- nullList.size(pos + 1);
- }
- }
-
- static class LongAttributeStore extends PrimitiveAttributeStore {
-
- final LongArrayList list;
-
- LongAttributeStore(AttributeInfo attrInfo) {
- super(attrInfo);
- this.list = new LongArrayList();
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.longs[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.longs[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.longs[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.longs[colPos] = (Long) val;
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- list.size(pos + 1);
- nullList.size(pos + 1);
- }
- }
-
- static class FloatAttributeStore extends PrimitiveAttributeStore {
-
- final FloatArrayList list;
-
- FloatAttributeStore(AttributeInfo attrInfo) {
- super(attrInfo);
- this.list = new FloatArrayList();
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.floats[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.floats[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.floats[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.floats[colPos] = (Float) val;
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- list.size(pos + 1);
- nullList.size(pos + 1);
- }
- }
-
- static class DoubleAttributeStore extends PrimitiveAttributeStore {
-
- final DoubleArrayList list;
-
- DoubleAttributeStore(AttributeInfo attrInfo) {
- super(attrInfo);
- this.list = new DoubleArrayList();
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.doubles[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.doubles[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.doubles[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.doubles[colPos] = (Double) val;
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- list.size(pos + 1);
- nullList.size(pos + 1);
- }
- }
-
- static abstract class ObjectAttributeStore<T> extends AbstractAttributeStore {
-
- final ArrayList<T> list;
-
- ObjectAttributeStore(Class<T> cls, AttributeInfo attrInfo) {
- super(attrInfo);
- this.list = Lists.newArrayList((T) null);
- }
-
- @Override
- public void ensureCapacity(int pos) throws RepositoryException {
- while (list.size() < pos + 1) {
- list.add((T) null);
- }
- nullList.size(pos + 1);
- }
- }
-
- static class BigIntStore extends ObjectAttributeStore<BigInteger> {
-
- public BigIntStore(AttributeInfo attrInfo) {
- super(BigInteger.class, attrInfo);
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.bigIntegers[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.bigIntegers[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.bigIntegers[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.bigIntegers[colPos] = (BigInteger) val;
- }
-
- }
-
- static class BigDecimalStore extends ObjectAttributeStore<BigDecimal> {
-
- public BigDecimalStore(AttributeInfo attrInfo) {
- super(BigDecimal.class, attrInfo);
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.bigDecimals[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.bigDecimals[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.bigDecimals[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.bigDecimals[colPos] = (BigDecimal) val;
- }
-
- }
-
- static class DateStore extends ObjectAttributeStore<Date> {
-
- public DateStore(AttributeInfo attrInfo) {
- super(Date.class, attrInfo);
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.dates[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.dates[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.dates[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.dates[colPos] = (Date) val;
- }
-
- }
-
- static class StringStore extends ObjectAttributeStore<String> {
-
- public StringStore(AttributeInfo attrInfo) {
- super(String.class, attrInfo);
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.strings[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.strings[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.strings[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.strings[colPos] = (String) val;
- }
-
- }
-
- static class IdStore extends ObjectAttributeStore<Id> {
-
- public IdStore(AttributeInfo attrInfo) {
- super(Id.class, attrInfo);
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.ids[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.ids[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.ids[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.ids[colPos] = (Id) val;
- }
-
- }
-
- static class ImmutableListStore extends ObjectAttributeStore<ImmutableList> {
-
- public ImmutableListStore(AttributeInfo attrInfo) {
- super(ImmutableList.class, attrInfo);
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.arrays[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.arrays[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.arrays[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.arrays[colPos] = (ImmutableList) val;
- }
-
- }
-
- static class ImmutableMapStore extends ObjectAttributeStore<ImmutableMap> {
-
- public ImmutableMapStore(AttributeInfo attrInfo) {
- super(ImmutableMap.class, attrInfo);
- }
-
- protected void store(StructInstance instance, int colPos, int pos) {
- list.set(pos, instance.maps[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, int pos) {
- instance.maps[colPos] = list.get(pos);
- }
-
- protected void store(StructInstance instance, int colPos, String attrName,
- Map<String, Object> m) {
- m.put(attrName, instance.maps[colPos]);
- }
-
- protected void load(StructInstance instance, int colPos, Object val) {
- instance.maps[colPos] = (ImmutableMap) val;
- }
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/ClassStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/ClassStore.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/ClassStore.java
deleted file mode 100755
index 465aa12..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/ClassStore.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.hadoop.metadata.repository.memory;
-
-import com.google.common.collect.ImmutableList;
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.repository.RepositoryException;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-import org.apache.hadoop.metadata.typesystem.persistence.ReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.types.ClassType;
-
-import java.util.ArrayList;
-
-public class ClassStore extends HierarchicalTypeStore {
-
- final ArrayList<ImmutableList<String>> traitNamesStore;
- final ClassType classType;
-
- public ClassStore(MemRepository repository, ClassType hierarchicalType)
- throws RepositoryException {
- super(repository, hierarchicalType);
- classType = hierarchicalType;
- traitNamesStore = new ArrayList<ImmutableList<String>>();
- }
-
- void store(ReferenceableInstance i) throws RepositoryException {
- super.store(i);
- int pos = idPosMap.get(i.getId());
- traitNamesStore.set(pos, i.getTraits());
- }
-
- public void ensureCapacity(int pos) throws RepositoryException {
- super.ensureCapacity(pos);
- while (traitNamesStore.size() < pos + 1) {
- traitNamesStore.add(null);
- }
- }
-
- boolean validate(MemRepository repo, Id id) throws RepositoryException {
- if (id.isUnassigned()) {
- throw new RepositoryException(String.format("Invalid Id (unassigned) : %s", id));
- }
- Integer pos = idPosMap.get(id);
- if (pos == null) {
- throw new RepositoryException(String.format("Invalid Id (unknown) : %s", id));
- }
-
- String typeName = typeNameList.get(pos);
- if (typeName != hierarchicalType.getName()) {
- throw new RepositoryException(
- String.format("Invalid Id (incorrect typeName, type is %s) : %s",
- typeName, id));
- }
-
- return true;
- }
-
- /*
- * - assumes id is already validated
- */
- ReferenceableInstance createInstance(MemRepository repo, Id id) throws RepositoryException {
- Integer pos = idPosMap.get(id);
- String typeName = typeNameList.get(pos);
- if (typeName != hierarchicalType.getName()) {
- return repo.getClassStore(typeName).createInstance(repo, id);
- }
-
- ImmutableList<String> traitNames = traitNamesStore.get(pos);
- String[] tNs = traitNames.toArray(new String[]{});
-
- try {
- ReferenceableInstance r = (ReferenceableInstance) classType.createInstance(id, tNs);
- return r;
- } catch (MetadataException me) {
- throw new RepositoryException(me);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/HierarchicalTypeStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/HierarchicalTypeStore.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/HierarchicalTypeStore.java
deleted file mode 100755
index 118f7fa..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/HierarchicalTypeStore.java
+++ /dev/null
@@ -1,209 +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.hadoop.metadata.repository.memory;
-
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import org.apache.hadoop.metadata.repository.RepositoryException;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-import org.apache.hadoop.metadata.typesystem.persistence.ReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.persistence.StructInstance;
-import org.apache.hadoop.metadata.typesystem.types.AttributeInfo;
-import org.apache.hadoop.metadata.typesystem.types.HierarchicalType;
-import org.apache.hadoop.metadata.typesystem.types.IConstructableType;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-public abstract class HierarchicalTypeStore {
-
- final MemRepository repository;
- final IConstructableType hierarchicalType;
- final ArrayList<String> typeNameList;
- final ImmutableMap<AttributeInfo, IAttributeStore> attrStores;
- final ImmutableList<HierarchicalTypeStore> superTypeStores;
-
-
- /**
- * Map Id to position in storage lists.
- */
- Map<Id, Integer> idPosMap;
-
- List<Integer> freePositions;
-
- int nextPos;
-
- /**
- * Lock for each Class/Trait.
- */
- ReentrantReadWriteLock lock;
-
- HierarchicalTypeStore(MemRepository repository, HierarchicalType hierarchicalType)
- throws RepositoryException {
- this.hierarchicalType = (IConstructableType) hierarchicalType;
- this.repository = repository;
- ImmutableMap.Builder<AttributeInfo, IAttributeStore> b
- = new ImmutableBiMap.Builder<AttributeInfo,
- IAttributeStore>();
- typeNameList = Lists.newArrayList((String) null);
- ImmutableList<AttributeInfo> l = hierarchicalType.immediateAttrs;
- for (AttributeInfo i : l) {
- b.put(i, AttributeStores.createStore(i));
- }
- attrStores = b.build();
-
- ImmutableList.Builder<HierarchicalTypeStore> b1
- = new ImmutableList.Builder<HierarchicalTypeStore>();
- Set<String> allSuperTypeNames = hierarchicalType.getAllSuperTypeNames();
- for (String s : allSuperTypeNames) {
- b1.add(repository.getStore(s));
- }
- superTypeStores = b1.build();
-
- nextPos = 0;
- idPosMap = new HashMap<Id, Integer>();
- freePositions = new ArrayList<Integer>();
-
- lock = new ReentrantReadWriteLock();
- }
-
- /**
- * Assign a storage position to an Id.
- * - try to assign from freePositions
- * - ensure storage capacity.
- * - add entry in idPosMap.
- * @param id
- * @return
- * @throws RepositoryException
- */
- int assignPosition(Id id) throws RepositoryException {
-
- int pos = -1;
- if (!freePositions.isEmpty()) {
- pos = freePositions.remove(0);
- } else {
- pos = nextPos++;
- ensureCapacity(pos);
- }
-
- idPosMap.put(id, pos);
-
- for (HierarchicalTypeStore s : superTypeStores) {
- s.assignPosition(id);
- }
-
- return pos;
- }
-
- /**
- * - remove from idPosMap
- * - add to freePositions.
- * @throws RepositoryException
- */
- void releaseId(Id id) {
-
- Integer pos = idPosMap.get(id);
- if (pos != null) {
- idPosMap.remove(id);
- freePositions.add(pos);
-
- for (HierarchicalTypeStore s : superTypeStores) {
- s.releaseId(id);
- }
- }
- }
-
- void acquireReadLock() {
- lock.readLock().lock();
- }
-
- void acquireWriteLock() {
- lock.writeLock().lock();
- }
-
- void releaseReadLock() {
- lock.readLock().unlock();
- }
-
- void releaseWriteLock() {
- lock.writeLock().unlock();
- }
-
- protected void storeFields(int pos, StructInstance s) throws RepositoryException {
- for (Map.Entry<AttributeInfo, IAttributeStore> e : attrStores.entrySet()) {
- IAttributeStore attributeStore = e.getValue();
- attributeStore.store(pos, hierarchicalType, s);
- }
- }
-
- protected void loadFields(int pos, StructInstance s) throws RepositoryException {
- for (Map.Entry<AttributeInfo, IAttributeStore> e : attrStores.entrySet()) {
- IAttributeStore attributeStore = e.getValue();
- attributeStore.load(pos, hierarchicalType, s);
- }
- }
-
- /**
- * - store the typeName
- * - store the immediate attributes in the respective IAttributeStore
- * - call store on each SuperType.
- * @param i
- * @throws RepositoryException
- */
- void store(ReferenceableInstance i) throws RepositoryException {
- int pos = idPosMap.get(i.getId());
- typeNameList.set(pos, i.getTypeName());
- storeFields(pos, i);
-
- for (HierarchicalTypeStore s : superTypeStores) {
- s.store(i);
- }
- }
-
- /**
- * - copy over the immediate attribute values from the respective IAttributeStore
- * - call load on each SuperType.
- * @param i
- * @throws RepositoryException
- */
- void load(ReferenceableInstance i) throws RepositoryException {
- int pos = idPosMap.get(i.getId());
- loadFields(pos, i);
-
- for (HierarchicalTypeStore s : superTypeStores) {
- s.load(i);
- }
- }
-
- public void ensureCapacity(int pos) throws RepositoryException {
- while (typeNameList.size() < pos + 1) {
- typeNameList.add(null);
- }
- for (Map.Entry<AttributeInfo, IAttributeStore> e : attrStores.entrySet()) {
- IAttributeStore attributeStore = e.getValue();
- attributeStore.ensureCapacity(pos);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/IAttributeStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/IAttributeStore.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/IAttributeStore.java
deleted file mode 100755
index 9a3f05c..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/IAttributeStore.java
+++ /dev/null
@@ -1,49 +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.hadoop.metadata.repository.memory;
-
-import org.apache.hadoop.metadata.repository.RepositoryException;
-import org.apache.hadoop.metadata.typesystem.persistence.StructInstance;
-import org.apache.hadoop.metadata.typesystem.types.IConstructableType;
-
-public interface IAttributeStore {
- /**
- * Store the attribute's value from the 'instance' into this store.
- * @param pos
- * @param instance
- * @throws RepositoryException
- */
- void store(int pos, IConstructableType type, StructInstance instance)
- throws RepositoryException;
-
- /**
- * load the Instance with the value from position 'pos' for the attribute.
- * @param pos
- * @param instance
- * @throws RepositoryException
- */
- void load(int pos, IConstructableType type, StructInstance instance) throws RepositoryException;
-
- /**
- * Ensure store have space for the given pos.
- * @param pos
- * @throws RepositoryException
- */
- void ensureCapacity(int pos) throws RepositoryException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/MemRepository.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/MemRepository.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/MemRepository.java
deleted file mode 100755
index 74deccb..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/MemRepository.java
+++ /dev/null
@@ -1,329 +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.hadoop.metadata.repository.memory;
-
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.repository.DiscoverInstances;
-import org.apache.hadoop.metadata.repository.IRepository;
-import org.apache.hadoop.metadata.repository.RepositoryException;
-import org.apache.hadoop.metadata.typesystem.IReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.ITypedReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-import org.apache.hadoop.metadata.typesystem.persistence.MapIds;
-import org.apache.hadoop.metadata.typesystem.persistence.ReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.types.ClassType;
-import org.apache.hadoop.metadata.typesystem.types.DataTypes;
-import org.apache.hadoop.metadata.typesystem.types.HierarchicalType;
-import org.apache.hadoop.metadata.typesystem.types.Multiplicity;
-import org.apache.hadoop.metadata.typesystem.types.ObjectGraphWalker;
-import org.apache.hadoop.metadata.typesystem.types.TraitType;
-import org.apache.hadoop.metadata.typesystem.types.TypeSystem;
-
-import java.util.ArrayList;
-import java.util.Collections;
-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;
-
-public class MemRepository implements IRepository {
-
-/*
- public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- public static SimpleDateFormat timestampFormat = new SimpleDateFormat("yyyy-MM-dd");
-*/
-
- 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 DateFormat getDateFormat() {
- return dateFormat;
- }
-
- @Override
- public DateFormat getTimestampFormat() {
- return timestampFormat;
- }
-
- @Override
- public boolean allowNullsInCollections() {
- return false;
- }
-*/
-
- @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.hadoop.metadata.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 (MetadataException 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>();
- ITypedReferenceableInstance retInstance = null;
- Set<ClassType> classTypes = new TreeSet<ClassType>();
- Set<TraitType> traitTypes = new TreeSet<TraitType>();
- 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 (MetadataException 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 (MetadataException 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<TraitType>();
- List<ClassType> cTypes = new ArrayList<ClassType>();
-
- for (HierarchicalType h : types) {
- if (h.getTypeCategory() == DataTypes.TypeCategory.TRAIT) {
- tTypes.add((TraitType) h);
- } else {
- cTypes.add((ClassType) h);
- }
- }
-
- Collections.sort(tTypes);
- Collections.sort(cTypes);
-
- for (TraitType tT : tTypes) {
- defineTrait(tT);
- }
-
- for (ClassType cT : cTypes) {
- defineClass(cT);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/ReplaceIdWithInstance.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/ReplaceIdWithInstance.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/ReplaceIdWithInstance.java
deleted file mode 100755
index f366d24..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/ReplaceIdWithInstance.java
+++ /dev/null
@@ -1,143 +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.hadoop.metadata.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.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.typesystem.ITypedReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-import org.apache.hadoop.metadata.typesystem.types.DataTypes;
-import org.apache.hadoop.metadata.typesystem.types.Multiplicity;
-import org.apache.hadoop.metadata.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 MetadataException {
- if (nd.attributeName == null) {
- // do nothing
- } else if (!nd.aInfo.isComposite || nd.value == null) {
- // do nothing
- } else if (nd.aInfo.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) {
-
- if (nd.value != null && 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 MetadataException {
-
- if (val == null ||
- arrType.getElemType().getTypeCategory() != DataTypes.TypeCategory.CLASS) {
- return val;
- }
-
- ImmutableCollection.Builder b = m.isUnique ? ImmutableSet.builder()
- : ImmutableList.builder();
- Iterator it = val.iterator();
- while (it.hasNext()) {
- Object elem = it.next();
- 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 MetadataException {
-
- if (val == null ||
- (mapType.getKeyType().getTypeCategory() != DataTypes.TypeCategory.CLASS &&
- mapType.getValueType().getTypeCategory() != DataTypes.TypeCategory.CLASS)) {
- return val;
- }
- ImmutableMap.Builder b = ImmutableMap.builder();
- Iterator<Map.Entry> it = val.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry elem = it.next();
- 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 MetadataException {
-
- 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/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/StructStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/StructStore.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/StructStore.java
deleted file mode 100755
index 502c691..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/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.hadoop.metadata.repository.memory;
-
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.collect.ImmutableMap;
-import org.apache.hadoop.metadata.repository.RepositoryException;
-import org.apache.hadoop.metadata.typesystem.persistence.StructInstance;
-import org.apache.hadoop.metadata.typesystem.types.AttributeInfo;
-import org.apache.hadoop.metadata.typesystem.types.StructType;
-
-import java.util.Collection;
-import java.util.Map;
-
-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/incubator-atlas/blob/30711973/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/TraitStore.java
----------------------------------------------------------------------
diff --git a/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/TraitStore.java b/repository/src/main/java/org/apache/hadoop/metadata/repository/memory/TraitStore.java
deleted file mode 100755
index 69a1894..0000000
--- a/repository/src/main/java/org/apache/hadoop/metadata/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.hadoop.metadata.repository.memory;
-
-import org.apache.hadoop.metadata.repository.RepositoryException;
-import org.apache.hadoop.metadata.typesystem.persistence.ReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.persistence.StructInstance;
-import org.apache.hadoop.metadata.typesystem.types.TraitType;
-
-import java.util.ArrayList;
-
-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);
- }
- }
-}