atlas-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From venkat...@apache.org
Subject [13/58] [abbrv] incubator-atlas git commit: Refactor packages and scripts to Atlas (cherry picked from commit 414beba)
Date Tue, 16 Jun 2015 23:04:47 GMT
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/DataTypes.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/DataTypes.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/DataTypes.java
deleted file mode 100755
index 3f94738..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/DataTypes.java
+++ /dev/null
@@ -1,660 +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.typesystem.types;
-
-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.commons.lang3.StringUtils;
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.typesystem.IReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.text.ParseException;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.Map;
-
-public class DataTypes {
-
-    public static BooleanType BOOLEAN_TYPE = new BooleanType();
-    public static ByteType BYTE_TYPE = new ByteType();
-    public static ShortType SHORT_TYPE = new ShortType();
-    public static IntType INT_TYPE = new IntType();
-    public static LongType LONG_TYPE = new LongType();
-    public static FloatType FLOAT_TYPE = new FloatType();
-    public static DoubleType DOUBLE_TYPE = new DoubleType();
-    public static BigIntegerType BIGINTEGER_TYPE = new BigIntegerType();
-    public static BigDecimalType BIGDECIMAL_TYPE = new BigDecimalType();
-    public static DateType DATE_TYPE = new DateType();
-    public static StringType STRING_TYPE = new StringType();
-    static String ARRAY_TYPE_PREFIX = "array<";
-    static String ARRAY_TYPE_SUFFIX = ">";
-    static String MAP_TYPE_PREFIX = "map<";
-    static String MAP_TYPE_SUFFIX = ">";
-
-    public static String arrayTypeName(String elemTypeName) {
-        return String.format("%s%s%s", ARRAY_TYPE_PREFIX, elemTypeName, ARRAY_TYPE_SUFFIX);
-    }
-
-    public static String arrayTypeName(IDataType elemType) {
-        return arrayTypeName(elemType.getName());
-    }
-
-    public static String mapTypeName(String keyTypeName, String valueTypeName) {
-        return String.format("%s%s,%s%s", MAP_TYPE_PREFIX,
-                keyTypeName, valueTypeName, MAP_TYPE_SUFFIX);
-    }
-
-    public static String mapTypeName(IDataType keyType, IDataType valueType) {
-        return mapTypeName(keyType.getName(), valueType.getName());
-    }
-
-    public static enum TypeCategory {
-        PRIMITIVE,
-        ENUM,
-        ARRAY,
-        MAP,
-        STRUCT,
-        TRAIT,
-        CLASS
-    }
-
-    public static abstract class PrimitiveType<T> extends AbstractDataType<T> {
-        @Override
-        public TypeCategory getTypeCategory() {
-            return TypeCategory.PRIMITIVE;
-        }
-
-        public abstract T nullValue();
-
-    }
-
-    public static class BooleanType extends PrimitiveType<Boolean> {
-
-        private static final String name = "boolean".intern();
-
-        private BooleanType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public Boolean convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof Boolean) {
-                    return (Boolean) val;
-                } else if (val instanceof String) {
-                    return Boolean.parseBoolean((String) val);
-                } else if (val instanceof Number) {
-                    return ((Number) val).intValue() != 0;
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public Boolean nullValue() {
-            return Boolean.FALSE;
-        }
-    }
-
-    public static class ByteType extends PrimitiveType<Byte> {
-
-        private static final String name = "byte".intern();
-
-        private ByteType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public Byte convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof Byte) {
-                    return (Byte) val;
-                } else if (val instanceof String) {
-                    return Byte.parseByte((String) val);
-                } else if (val instanceof Number) {
-                    return ((Number) val).byteValue();
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public Byte nullValue() {
-            return 0;
-        }
-    }
-
-    public static class ShortType extends PrimitiveType<Short> {
-
-        private static final String name = "short".intern();
-
-        private ShortType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public Short convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof Short) {
-                    return (Short) val;
-                } else if (val instanceof String) {
-                    return Short.parseShort((String) val);
-                } else if (val instanceof Number) {
-                    return ((Number) val).shortValue();
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public Short nullValue() {
-            return 0;
-        }
-    }
-
-    public static class IntType extends PrimitiveType<Integer> {
-
-        private static final String name = "int".intern();
-
-        private IntType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public Integer convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof Integer) {
-                    return (Integer) val;
-                } else if (val instanceof String) {
-                    return Integer.parseInt((String) val);
-                } else if (val instanceof Number) {
-                    return ((Number) val).intValue();
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public Integer nullValue() {
-            return 0;
-        }
-    }
-
-    public static class LongType extends PrimitiveType<Long> {
-
-        private static final String name = "long".intern();
-
-        private LongType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public Long convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof Long) {
-                    return (Long) val;
-                } else if (val instanceof String) {
-                    return Long.parseLong((String) val);
-                } else if (val instanceof Number) {
-                    return ((Number) val).longValue();
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public Long nullValue() {
-            return 0l;
-        }
-    }
-
-    public static class FloatType extends PrimitiveType<Float> {
-
-        private static final String name = "float".intern();
-
-        private FloatType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public Float convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof Float) {
-                    return (Float) val;
-                } else if (val instanceof String) {
-                    return Float.parseFloat((String) val);
-                } else if (val instanceof Number) {
-                    return ((Number) val).floatValue();
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public Float nullValue() {
-            return 0.0f;
-        }
-    }
-
-    public static class DoubleType extends PrimitiveType<Double> {
-
-        private static final String name = "double".intern();
-
-        private DoubleType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public Double convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof Double) {
-                    return (Double) val;
-                } else if (val instanceof String) {
-                    return Double.parseDouble((String) val);
-                } else if (val instanceof Number) {
-                    return ((Number) val).doubleValue();
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public Double nullValue() {
-            return 0.0;
-        }
-    }
-
-    public static class BigIntegerType extends PrimitiveType<BigInteger> {
-
-        private static final String name = "biginteger".intern();
-
-        private BigIntegerType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public BigInteger convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof BigInteger) {
-                    return (BigInteger) val;
-                } else if (val instanceof String) {
-                    try {
-                        return new BigInteger((String) val);
-                    } catch (NumberFormatException ne) {
-                        throw new ValueConversionException(this, val, ne);
-                    }
-                } else if (val instanceof Number) {
-                    return BigInteger.valueOf(((Number) val).longValue());
-                } else if (val instanceof BigDecimal) {
-                    return ((BigDecimal) val).toBigInteger();
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public BigInteger nullValue() {
-            return null;
-        }
-    }
-
-    public static class BigDecimalType extends PrimitiveType<BigDecimal> {
-
-        private static final String name = "bigdecimal".intern();
-
-        private BigDecimalType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public BigDecimal convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof BigDecimal) {
-                    return (BigDecimal) val;
-                } else if (val instanceof String) {
-                    try {
-                        return new BigDecimal((String) val);
-                    } catch (NumberFormatException ne) {
-                        throw new ValueConversionException(this, val, ne);
-                    }
-                } else if (val instanceof Number) {
-                    return new BigDecimal(((Number) val).doubleValue());
-                } else if (val instanceof BigInteger) {
-                    return new BigDecimal((BigInteger) val);
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        public BigDecimal nullValue() {
-            return null;
-        }
-    }
-
-    public static class DateType extends PrimitiveType<Date> {
-
-        private static final String name = "date".intern();
-
-        private DateType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public Date convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                if (val instanceof Date) {
-                    return (Date) val;
-                } else if (val instanceof String) {
-                    try {
-                        return TypeSystem.getInstance().getDateFormat().parse((String) val);
-                    } catch (ParseException ne) {
-                        throw new ValueConversionException(this, val, ne);
-                    }
-                } else if (val instanceof Number) {
-                    return new Date(((Number) val).longValue());
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            return convertNull(m);
-        }
-
-        @Override
-        public void output(Date val, Appendable buf, String prefix) throws MetadataException {
-            TypeUtils.outputVal(val == null ? "<null>" :
-                    TypeSystem.getInstance().getDateFormat().format(val), buf, prefix);
-        }
-
-        public Date nullValue() {
-            return null;
-        }
-    }
-
-    public static class StringType extends PrimitiveType<String> {
-
-        private static final String name = "string".intern();
-
-        private StringType() {
-        }
-
-        @Override
-        public String getName() {
-            return name;
-        }
-
-        @Override
-        public String convert(Object val, Multiplicity m) throws MetadataException {
-            if (StringUtils.isNotBlank((CharSequence) val)) {
-                return val.toString();
-            }
-            return convertNull(m);
-        }
-
-        public String nullValue() {
-            return null;
-        }
-    }
-
-    public static class ArrayType extends AbstractDataType<ImmutableCollection<?>> {
-        private final String nm;
-        private IDataType elemType;
-
-        public ArrayType(IDataType elemType) {
-            assert elemType != null;
-            this.elemType = elemType;
-            this.nm = arrayTypeName(elemType);
-        }
-
-        public IDataType getElemType() {
-            return elemType;
-        }
-
-        protected void setElemType(IDataType elemType) {
-            this.elemType = elemType;
-        }
-
-        @Override
-        public String getName() {
-            return nm;
-        }
-
-        @Override
-        public ImmutableCollection<?> convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                Iterator it = null;
-                if (val instanceof Collection) {
-                    it = ((Collection) val).iterator();
-                } else if (val instanceof Iterable) {
-                    it = ((Iterable) val).iterator();
-                } else if (val instanceof Iterator) {
-                    it = (Iterator) val;
-                }
-                if (it != null) {
-                    ImmutableCollection.Builder b = m.isUnique ? ImmutableSet.builder()
-                            : ImmutableList.builder();
-                    while (it.hasNext()) {
-                        b.add(elemType.convert(it.next(),
-                                TypeSystem.getInstance().allowNullsInCollections()
-                                        ? Multiplicity.OPTIONAL : Multiplicity.REQUIRED));
-                    }
-                    return m.isUnique ? b.build().asList() : b.build();
-                } else {
-                    try {
-                        return ImmutableList.of(elemType.convert(val,
-                                TypeSystem.getInstance().allowNullsInCollections()
-                                        ? Multiplicity.OPTIONAL : Multiplicity.REQUIRED));
-                    } catch (Exception e) {
-                        throw new ValueConversionException(this, val, e);
-                    }
-                }
-            }
-            if (!m.nullAllowed()) {
-                throw new ValueConversionException.NullConversionException(m);
-            }
-            return null;
-        }
-
-        public ImmutableCollection<?> mapIds(ImmutableCollection<?> val, Multiplicity m,
-                                             Map<Id, Id> transientToNewIds)
-        throws MetadataException {
-
-            if (val == null || elemType.getTypeCategory() != 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 IReferenceableInstance) {
-                    Id oldId = ((IReferenceableInstance) elem).getId();
-                    Id newId = transientToNewIds.get(oldId);
-                    b.add(newId == null ? oldId : newId);
-                } else {
-                    b.add(elem);
-                }
-            }
-            return b.build();
-        }
-
-        @Override
-        public TypeCategory getTypeCategory() {
-            return TypeCategory.ARRAY;
-        }
-    }
-
-    public static class MapType extends AbstractDataType<ImmutableMap<?, ?>> {
-
-        private final String nm;
-        private IDataType keyType;
-        private IDataType valueType;
-
-        public MapType(IDataType keyType, IDataType valueType) {
-            assert keyType != null;
-            assert valueType != null;
-            this.keyType = keyType;
-            this.valueType = valueType;
-            this.nm = mapTypeName(keyType, valueType);
-        }
-
-        public IDataType getKeyType() {
-            return keyType;
-        }
-
-        protected void setKeyType(IDataType keyType) {
-            this.keyType = keyType;
-        }
-
-        public IDataType getValueType() {
-            return valueType;
-        }
-
-        protected void setValueType(IDataType valueType) {
-            this.keyType = valueType;
-        }
-
-        @Override
-        public String getName() {
-            return nm;
-        }
-
-        @Override
-        public ImmutableMap<?, ?> convert(Object val, Multiplicity m) throws MetadataException {
-            if (val != null) {
-                Iterator<Map.Entry> it = null;
-                if (Map.class.isAssignableFrom(val.getClass())) {
-                    it = ((Map) val).entrySet().iterator();
-                    ImmutableMap.Builder b = ImmutableMap.builder();
-                    while (it.hasNext()) {
-                        Map.Entry e = it.next();
-                        b.put(keyType.convert(e.getKey(),
-                                        TypeSystem.getInstance().allowNullsInCollections()
-                                                ? Multiplicity.OPTIONAL : Multiplicity.REQUIRED),
-                                valueType.convert(e.getValue(),
-                                        TypeSystem.getInstance().allowNullsInCollections()
-                                                ? Multiplicity.OPTIONAL : Multiplicity.REQUIRED));
-                    }
-                    return b.build();
-                } else {
-                    throw new ValueConversionException(this, val);
-                }
-            }
-            if (!m.nullAllowed()) {
-                throw new ValueConversionException.NullConversionException(m);
-            }
-            return null;
-        }
-
-        public ImmutableMap<?, ?> mapIds(ImmutableMap val, Multiplicity m,
-                                         Map<Id, Id> transientToNewIds)
-        throws MetadataException {
-
-            if (val == null || (keyType.getTypeCategory() != TypeCategory.CLASS &&
-                    valueType.getTypeCategory() != 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 IReferenceableInstance) {
-                    Id oldId = ((IReferenceableInstance) oldKey).getId();
-                    Id newId = transientToNewIds.get(oldId);
-                    newKey = newId == null ? oldId : newId;
-                }
-
-                if (oldValue instanceof IReferenceableInstance) {
-                    Id oldId = ((IReferenceableInstance) oldValue).getId();
-                    Id newId = transientToNewIds.get(oldId);
-                    newValue = newId == null ? oldId : newId;
-                }
-
-                b.put(newKey, newValue);
-            }
-            return b.build();
-        }
-
-        @Override
-        public TypeCategory getTypeCategory() {
-            return TypeCategory.MAP;
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/DownCastFieldMapping.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/DownCastFieldMapping.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/DownCastFieldMapping.java
deleted file mode 100755
index dfd7a4f..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/DownCastFieldMapping.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.hadoop.metadata.typesystem.types;
-
-import com.google.common.collect.ImmutableMap;
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.typesystem.persistence.DownCastStructInstance;
-
-public class DownCastFieldMapping {
-
-    public final ImmutableMap<String, String> fieldNameMap;
-
-    protected DownCastFieldMapping(ImmutableMap<String, String> fieldNameMap) {
-        this.fieldNameMap = fieldNameMap;
-    }
-
-    public void set(DownCastStructInstance s, String attrName, Object val)
-    throws MetadataException {
-
-        String mappedNm = fieldNameMap.get(attrName);
-        if (mappedNm == null) {
-            throw new ValueConversionException(s.getTypeName(), val, "Unknown field " + attrName);
-        }
-
-        s.backingInstance.set(mappedNm, val);
-    }
-
-    public Object get(DownCastStructInstance s, String attrName) throws MetadataException {
-
-        String mappedNm = fieldNameMap.get(attrName);
-        if (mappedNm == null) {
-            throw new ValueConversionException(
-                    String.format("Unknown field %s for Struct %s", attrName, s.getTypeName()));
-        }
-        return s.backingInstance.get(mappedNm);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumType.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumType.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumType.java
deleted file mode 100755
index 45974e6..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumType.java
+++ /dev/null
@@ -1,90 +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.typesystem.types;
-
-import com.google.common.collect.ImmutableCollection;
-import com.google.common.collect.ImmutableMap;
-import org.apache.hadoop.metadata.MetadataException;
-import scala.math.BigInt;
-
-public class EnumType extends AbstractDataType<EnumValue> {
-
-    public final TypeSystem typeSystem;
-    public final String name;
-    public final ImmutableMap<String, EnumValue> valueMap;
-    public final ImmutableMap<Integer, EnumValue> ordinalMap;
-
-    protected EnumType(TypeSystem typeSystem, String name, EnumValue... values) {
-        this.typeSystem = typeSystem;
-        this.name = name;
-        ImmutableMap.Builder<String, EnumValue> b1 = new ImmutableMap.Builder();
-        ImmutableMap.Builder<Integer, EnumValue> b2 = new ImmutableMap.Builder();
-        for (EnumValue v : values) {
-            b1.put(v.value, v);
-            b2.put(v.ordinal, v);
-        }
-        valueMap = b1.build();
-        ordinalMap = b2.build();
-    }
-
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public EnumValue convert(Object val, Multiplicity m) throws MetadataException {
-        if (val != null) {
-            EnumValue e = null;
-            if (val instanceof EnumValue) {
-                e = valueMap.get(((EnumValue)val).value);
-            } else if ( val instanceof Integer || val instanceof BigInt) {
-                e = ordinalMap.get(val);
-            } else if ( val instanceof  String) {
-                e = valueMap.get(val);
-            } else if ( val instanceof Number ) {
-                e = ordinalMap.get(((Number)val).intValue());
-            }
-
-            if (e == null) {
-                throw new ValueConversionException(this, val);
-            }
-            return e;
-        }
-        return convertNull(m);
-    }
-
-    @Override
-    public DataTypes.TypeCategory getTypeCategory() {
-        return DataTypes.TypeCategory.ENUM;
-    }
-
-    public EnumValue fromOrdinal(int o) {
-        return ordinalMap.get(o);
-    }
-
-    public EnumValue fromValue(String val) {
-        return valueMap.get(val.trim());
-    }
-
-    public ImmutableCollection<EnumValue> values() {
-        return valueMap.values();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumTypeDefinition.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumTypeDefinition.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumTypeDefinition.java
deleted file mode 100755
index 6347a7b..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumTypeDefinition.java
+++ /dev/null
@@ -1,54 +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.typesystem.types;
-
-import org.apache.hadoop.metadata.ParamChecker;
-
-import java.util.Arrays;
-
-public final class EnumTypeDefinition {
-
-    public final String name;
-    public final EnumValue[] enumValues;
-
-    public EnumTypeDefinition(String name, EnumValue... enumValues) {
-        this.name = ParamChecker.notEmpty(name, "Enum type name");
-        this.enumValues = ParamChecker.notNullElements(enumValues, "Enum values");
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        EnumTypeDefinition that = (EnumTypeDefinition) o;
-
-        if (!Arrays.equals(enumValues, that.enumValues)) return false;
-        if (!name.equals(that.name)) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = name.hashCode();
-        result = 31 * result + Arrays.hashCode(enumValues);
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumValue.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumValue.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumValue.java
deleted file mode 100755
index f9341eb..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/EnumValue.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.typesystem.types;
-
-import org.apache.hadoop.metadata.ParamChecker;
-
-public class EnumValue {
-
-    public final String value;
-    public final int ordinal;
-
-    public EnumValue(String value, int ordinal) {
-        this.value = ParamChecker.notEmpty(value, "Enum value");
-        this.ordinal = ordinal;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        EnumValue enumValue = (EnumValue) o;
-
-        if (ordinal != enumValue.ordinal) return false;
-        if (!value.equals(enumValue.value)) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = value.hashCode();
-        result = 31 * result + ordinal;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return value;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/FieldMapping.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/FieldMapping.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/FieldMapping.java
deleted file mode 100755
index 8faae94..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/FieldMapping.java
+++ /dev/null
@@ -1,135 +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.typesystem.types;
-
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.typesystem.IReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.IStruct;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-
-import java.util.Map;
-
-public class FieldMapping {
-
-    public final Map<String, AttributeInfo> fields;
-    public final Map<String, Integer> fieldPos;
-    public final Map<String, Integer> fieldNullPos;
-    public final int numBools;
-    public final int numBytes;
-    public final int numShorts;
-    public final int numInts;
-    public final int numLongs;
-    public final int numFloats;
-    public final int numDoubles;
-    public final int numBigInts;
-    public final int numBigDecimals;
-    public final int numDates;
-    public final int numStrings;
-    public final int numArrays;
-    public final int numMaps;
-    public final int numStructs;
-    public final int numReferenceables;
-
-    public FieldMapping(Map<String, AttributeInfo> fields, Map<String, Integer> fieldPos,
-                        Map<String, Integer> fieldNullPos, int numBools, int numBytes,
-                        int numShorts,
-                        int numInts, int numLongs, int numFloats, int numDoubles, int numBigInts,
-                        int numBigDecimals,
-                        int numDates, int numStrings, int numArrays, int numMaps, int numStructs,
-                        int numReferenceables) {
-        this.fields = fields;
-        this.fieldPos = fieldPos;
-        this.fieldNullPos = fieldNullPos;
-        this.numBools = numBools;
-        this.numBytes = numBytes;
-        this.numShorts = numShorts;
-        this.numInts = numInts;
-        this.numLongs = numLongs;
-        this.numFloats = numFloats;
-        this.numDoubles = numDoubles;
-        this.numBigInts = numBigInts;
-        this.numBigDecimals = numBigDecimals;
-        this.numDates = numDates;
-        this.numStrings = numStrings;
-        this.numArrays = numArrays;
-        this.numMaps = numMaps;
-        this.numStructs = numStructs;
-        this.numReferenceables = numReferenceables;
-    }
-
-    protected void outputFields(IStruct s, Appendable buf, String fieldPrefix)
-    throws MetadataException {
-        for (Map.Entry<String, AttributeInfo> e : fields.entrySet()) {
-            String attrName = e.getKey();
-            AttributeInfo i = e.getValue();
-            Object aVal = s.get(attrName);
-            TypeUtils.outputVal(attrName + " : ", buf, fieldPrefix);
-            if (aVal != null && aVal instanceof Id) {
-                TypeUtils.outputVal(aVal.toString(), buf, "");
-            } else {
-                i.dataType().output(aVal, buf, fieldPrefix);
-            }
-            TypeUtils.outputVal("\n", buf, "");
-        }
-    }
-
-    public void output(IStruct s, Appendable buf, String prefix) throws MetadataException {
-        if (s == null) {
-            TypeUtils.outputVal("<null>\n", buf, "");
-            return;
-        }
-        TypeUtils.outputVal("{", buf, prefix);
-
-        TypeUtils.outputVal("\n", buf, "");
-        String fieldPrefix = prefix + "\t";
-
-        outputFields(s, buf, fieldPrefix);
-
-        TypeUtils.outputVal("}", buf, prefix);
-    }
-
-    public void output(IReferenceableInstance s, Appendable buf, String prefix)
-    throws MetadataException {
-        if (s == null) {
-            TypeUtils.outputVal("<null>\n", buf, "");
-            return;
-        }
-        TypeUtils.outputVal("{", buf, prefix);
-
-        TypeUtils.outputVal("\n", buf, "");
-        String fieldPrefix = prefix + "\t";
-
-        TypeUtils.outputVal("id : ", buf, fieldPrefix);
-        TypeUtils.outputVal(s.getId().toString(), buf, "");
-        TypeUtils.outputVal("\n", buf, "");
-
-        outputFields(s, buf, fieldPrefix);
-
-        TypeSystem ts = TypeSystem.getInstance();
-
-        for (String sT : s.getTraits()) {
-            TraitType tt = ts.getDataType(TraitType.class, sT);
-            TypeUtils.outputVal(sT + " : ", buf, fieldPrefix);
-            tt.output(s.getTrait(sT), buf, fieldPrefix);
-        }
-
-        TypeUtils.outputVal("}", buf, prefix);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/HierarchicalType.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/HierarchicalType.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/HierarchicalType.java
deleted file mode 100755
index 7fff806..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/HierarchicalType.java
+++ /dev/null
@@ -1,500 +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.typesystem.types;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.typesystem.IStruct;
-import org.apache.hadoop.metadata.typesystem.persistence.DownCastStructInstance;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-
-import org.apache.hadoop.metadata.typesystem.types.TypeUtils.Pair;
-
-/**
- * Represents a Type that can have SuperTypes. An Instance of the HierarchicalType can be
- * downcast to a SuperType.
- * @param <ST> the Type of the SuperType. TraitTypes have TraitTypes as SuperTypes, ClassTypes
- *            have ClassTypes
- *            as SuperTypes.
- * @param <T> the class of the Instance of this DataType.
- */
-public abstract class HierarchicalType<ST extends HierarchicalType, T> extends AbstractDataType<T>
-        implements Comparable<ST> {
-
-    public final TypeSystem typeSystem;
-    public final Class<ST> superTypeClass;
-    public final String name;
-    public final FieldMapping fieldMapping;
-    public final int numFields;
-    public final ImmutableList<String> superTypes;
-    public final ImmutableList<AttributeInfo> immediateAttrs;
-    public final ImmutableMap<String, String> attributeNameToType;
-    protected ImmutableMap<String, List<Path>> superTypePaths;
-    protected ImmutableMap<String, Path> pathNameToPathMap;
-
-    /**
-     * Used when creating a Type, to support recursive Structs.
-     */
-    HierarchicalType(TypeSystem typeSystem, Class<ST> superTypeClass,
-                     String name, ImmutableList<String> superTypes, int numFields) {
-        this.typeSystem = typeSystem;
-        this.superTypeClass = superTypeClass;
-        this.name = name;
-        this.fieldMapping = null;
-        this.numFields = numFields;
-        this.superTypes = superTypes;
-        this.immediateAttrs = ImmutableList.of();
-        this.attributeNameToType = null;
-    }
-
-    HierarchicalType(TypeSystem typeSystem, Class<ST> superTypeClass,
-                     String name, ImmutableList<String> superTypes, AttributeInfo... fields)
-    throws MetadataException {
-        this.typeSystem = typeSystem;
-        this.superTypeClass = superTypeClass;
-        this.name = name;
-        Pair<FieldMapping, ImmutableMap<String, String>> p = constructFieldMapping(superTypes,
-                fields);
-        this.fieldMapping = p.left;
-        this.attributeNameToType = p.right;
-        this.numFields = this.fieldMapping.fields.size();
-        this.superTypes = superTypes == null ? ImmutableList.<String>of() : superTypes;
-        this.immediateAttrs = ImmutableList.copyOf(fields);
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    public FieldMapping fieldMapping() {
-        return fieldMapping;
-    }
-
-    /**
-     * Given type must be a SubType of this type.
-     * @param typeName
-     * @throws MetadataException
-     */
-    public boolean isSubType(String typeName) throws MetadataException {
-        HierarchicalType cType = typeSystem.getDataType(HierarchicalType.class, typeName);
-        return (cType == this || cType.superTypePaths.containsKey(getName()));
-    }
-
-    protected void setupSuperTypesGraph()
-    throws MetadataException {
-        setupSuperTypesGraph(superTypes);
-    }
-
-    private void setupSuperTypesGraph(ImmutableList<String> superTypes)
-    throws MetadataException {
-        Map<String, List<Path>> superTypePaths = new HashMap<String, List<Path>>();
-        Map<String, Path> pathNameToPathMap = new HashMap<String, Path>();
-        Queue<Path> queue = new LinkedList<Path>();
-        queue.add(new Node(getName()));
-        while (!queue.isEmpty()) {
-            Path currentPath = queue.poll();
-
-            ST superType = currentPath.typeName == getName() ? (ST) this :
-                    (ST) typeSystem.getDataType(superTypeClass, currentPath.typeName);
-
-            pathNameToPathMap.put(currentPath.pathName, currentPath);
-            if (superType != this) {
-                List<Path> typePaths = superTypePaths.get(superType.getName());
-                if (typePaths == null) {
-                    typePaths = new ArrayList<Path>();
-                    superTypePaths.put(superType.getName(), typePaths);
-                }
-                typePaths.add(currentPath);
-            }
-
-            ImmutableList<String> sTs = superType == this ? superTypes : superType.superTypes;
-
-            if (sTs != null) {
-                for (String sT : sTs) {
-                    queue.add(new Path(sT, currentPath));
-                }
-            }
-        }
-
-        this.superTypePaths = ImmutableMap.copyOf(superTypePaths);
-        this.pathNameToPathMap = ImmutableMap.copyOf(pathNameToPathMap);
-
-    }
-
-    protected Pair<FieldMapping, ImmutableMap<String, String>> constructFieldMapping(ImmutableList<String> superTypes,
-                                                 AttributeInfo... fields)
-    throws MetadataException {
-
-        Map<String, AttributeInfo> fieldsMap = new LinkedHashMap<String, AttributeInfo>();
-        Map<String, Integer> fieldPos = new HashMap<String, Integer>();
-        Map<String, Integer> fieldNullPos = new HashMap<String, Integer>();
-        Map<String, String> attributeNameToType = new HashMap<>();
-
-        int numBools = 0;
-        int numBytes = 0;
-        int numShorts = 0;
-        int numInts = 0;
-        int numLongs = 0;
-        int numFloats = 0;
-        int numDoubles = 0;
-        int numBigInts = 0;
-        int numBigDecimals = 0;
-        int numDates = 0;
-        int numStrings = 0;
-        int numArrays = 0;
-        int numMaps = 0;
-        int numStructs = 0;
-        int numReferenceables = 0;
-
-        setupSuperTypesGraph(superTypes);
-
-        Iterator<Path> pathItr = pathIterator();
-        while (pathItr.hasNext()) {
-            Path currentPath = pathItr.next();
-
-            ST superType = currentPath.typeName == getName() ? (ST) this :
-                    (ST) typeSystem.getDataType(superTypeClass, currentPath.typeName);
-
-            ImmutableList<AttributeInfo> superTypeFields = superType == this ?
-                    ImmutableList.copyOf(fields) : superType.immediateAttrs;
-
-            Set<String> immediateFields = new HashSet<String>();
-
-            for (AttributeInfo i : superTypeFields) {
-                if (superType == this) {
-                    if (immediateFields.contains(i.name)) {
-                        throw new MetadataException(
-                                String.format(
-                                        "Struct defintion cannot contain multiple fields with the" +
-                                                " same name %s",
-                                        i.name));
-                    }
-                    immediateFields.add(i.name);
-                }
-
-                String attrName = i.name;
-                if (fieldsMap.containsKey(attrName)) {
-                    attrName = currentPath.addOverrideAttr(attrName);
-                }
-                attributeNameToType.put(attrName, superType.getName());
-
-                fieldsMap.put(attrName, i);
-                fieldNullPos.put(attrName, fieldNullPos.size());
-                if (i.dataType() == DataTypes.BOOLEAN_TYPE) {
-                    fieldPos.put(attrName, numBools);
-                    numBools++;
-                } else if (i.dataType() == DataTypes.BYTE_TYPE) {
-                    fieldPos.put(attrName, numBytes);
-                    numBytes++;
-                } else if (i.dataType() == DataTypes.SHORT_TYPE) {
-                    fieldPos.put(attrName, numShorts);
-                    numShorts++;
-                } else if (i.dataType() == DataTypes.INT_TYPE) {
-                    fieldPos.put(attrName, numInts);
-                    numInts++;
-                } else if (i.dataType() == DataTypes.LONG_TYPE) {
-                    fieldPos.put(attrName, numLongs);
-                    numLongs++;
-                } else if (i.dataType() == DataTypes.FLOAT_TYPE) {
-                    fieldPos.put(attrName, numFloats);
-                    numFloats++;
-                } else if (i.dataType() == DataTypes.DOUBLE_TYPE) {
-                    fieldPos.put(attrName, numDoubles);
-                    numDoubles++;
-                } else if (i.dataType() == DataTypes.BIGINTEGER_TYPE) {
-                    fieldPos.put(attrName, numBigInts);
-                    numBigInts++;
-                } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) {
-                    fieldPos.put(attrName, numBigDecimals);
-                    numBigDecimals++;
-                } else if (i.dataType() == DataTypes.DATE_TYPE) {
-                    fieldPos.put(attrName, numDates);
-                    numDates++;
-                } else if (i.dataType() == DataTypes.STRING_TYPE) {
-                    fieldPos.put(attrName, numStrings);
-                    numStrings++;
-                } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ENUM) {
-                    fieldPos.put(i.name, numInts);
-                    numInts++;
-                } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) {
-                    fieldPos.put(attrName, numArrays);
-                    numArrays++;
-                } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) {
-                    fieldPos.put(attrName, numMaps);
-                    numMaps++;
-                } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT ||
-                        i.dataType().getTypeCategory() == DataTypes.TypeCategory.TRAIT) {
-                    fieldPos.put(attrName, numStructs);
-                    numStructs++;
-                } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) {
-                    fieldPos.put(attrName, numReferenceables);
-                    numReferenceables++;
-                } else {
-                    throw new MetadataException(String.format("Unknown datatype %s", i.dataType()));
-                }
-            }
-        }
-
-        this.superTypePaths = ImmutableMap.copyOf(superTypePaths);
-        this.pathNameToPathMap = ImmutableMap.copyOf(pathNameToPathMap);
-
-        FieldMapping fm =  new FieldMapping(fieldsMap,
-                fieldPos,
-                fieldNullPos,
-                numBools,
-                numBytes,
-                numShorts,
-                numInts,
-                numLongs,
-                numFloats,
-                numDoubles,
-                numBigInts,
-                numBigDecimals,
-                numDates,
-                numStrings,
-                numArrays,
-                numMaps,
-                numStructs,
-                numReferenceables);
-
-        return new Pair(fm, ImmutableMap.copyOf(attributeNameToType));
-    }
-
-    public IStruct castAs(IStruct s, String superTypeName) throws MetadataException {
-
-        if (!superTypePaths.containsKey(superTypeName)) {
-            throw new MetadataException(
-                    String.format("Cannot downcast to %s from type %s", superTypeName, getName()));
-        }
-
-        if (s != null) {
-            if (s.getTypeName() != getName()) {
-                throw new MetadataException(
-                        String.format("Downcast called on wrong type %s, instance type is %s",
-                                getName(), s.getTypeName()));
-            }
-
-            List<Path> pathToSuper = superTypePaths.get(superTypeName);
-            if (pathToSuper.size() > 1) {
-                throw new MetadataException(
-                        String.format(
-                                "Cannot downcast called to %s, from %s: there are multiple paths " +
-                                        "to SuperType",
-                                superTypeName, getName()));
-            }
-
-            ST superType = (ST) typeSystem.getDataType(superTypeClass, superTypeName);
-            Map<String, String> downCastMap = superType
-                    .constructDowncastFieldMap(this, pathToSuper.get(0));
-            return new DownCastStructInstance(superTypeName,
-                    new DownCastFieldMapping(ImmutableMap.copyOf(downCastMap)),
-                    s);
-        }
-
-        return null;
-    }
-
-    public ST getDefinedType(String attrName) throws MetadataException {
-        if (!attributeNameToType.containsKey(attrName)) {
-            throw new MetadataException(String.format("Unknown attribute %s in type %s", attrName, getName()));
-        }
-        return typeSystem.getDataType(superTypeClass, attributeNameToType.get(attrName));
-    }
-
-    public String getDefinedTypeName(String attrName) throws MetadataException {
-        return getDefinedType(attrName).getName();
-    }
-
-    public String getQualifiedName(String attrName) throws MetadataException {
-        String attrTypeName = getDefinedTypeName(attrName);
-        return attrName.contains(".") ? attrName : String.format("%s.%s", attrTypeName, attrName);
-    }
-
-    protected Map<String, String> constructDowncastFieldMap(ST subType, Path pathToSubType) {
-
-        String pathToSubTypeName = pathToSubType.pathAfterThis;
-        /*
-         * the downcastMap;
-         */
-        Map<String, String> dCMap = new HashMap<String, String>();
-        Iterator<Path> itr = pathIterator();
-        while (itr.hasNext()) {
-            Path p = itr.next();
-            Path pInSubType = (Path) subType.pathNameToPathMap
-                    .get(p.pathName + "." + pathToSubTypeName);
-
-            if (pInSubType.hiddenAttributeMap != null) {
-                for (Map.Entry<String, String> e : pInSubType.hiddenAttributeMap.entrySet()) {
-                    String mappedInThisType =
-                            p.hiddenAttributeMap != null ? p.hiddenAttributeMap.get(e.getKey())
-                                    : null;
-                    if (mappedInThisType == null) {
-                        dCMap.put(e.getKey(), e.getValue());
-                    } else {
-                        dCMap.put(mappedInThisType, e.getValue());
-                    }
-                }
-            }
-        }
-        return dCMap;
-    }
-
-    @Override
-    public int compareTo(ST o) {
-        String oName = o.getName();
-        if (superTypes.contains(oName)) {
-            return 1;
-        } else if (o.superTypes.contains(getName())) {
-            return -1;
-        } else {
-            return getName().compareTo(oName);
-        }
-    }
-
-    public Set<String> getAllSuperTypeNames() {
-        return superTypePaths.keySet();
-    }
-
-    public Iterator<Path> pathIterator() {
-        return new PathItr();
-    }
-
-    static class Path {
-        public final String typeName;
-        public final String pathName;
-        public final String pathAfterThis;
-        private final Path subTypePath;
-        /*
-         * name mapping for attributes hidden by a SubType.
-         */
-        Map<String, String> hiddenAttributeMap;
-
-        Path(String typeName, Path childPath) throws MetadataException {
-            this.typeName = typeName;
-            this.subTypePath = childPath;
-            if (childPath.contains(typeName)) {
-                throw new CyclicTypeDefinition(this);
-            }
-            pathName = String.format("%s.%s", typeName, childPath.pathName);
-            pathAfterThis = childPath.pathName;
-        }
-
-        Path(String typeName) {
-            assert getClass() == Node.class;
-            this.typeName = typeName;
-            this.subTypePath = null;
-            pathName = typeName;
-            pathAfterThis = null;
-        }
-
-        public boolean contains(String typeName) {
-            return this.typeName.equals(typeName) ||
-                    (subTypePath != null && subTypePath.contains(typeName));
-        }
-
-        public String pathString(String nodeSep) {
-
-            StringBuilder b = new StringBuilder();
-            Path p = this;
-
-            while (p != null) {
-                b.append(p.typeName);
-                p = p.subTypePath;
-                if (p != null) {
-                    b.append(nodeSep);
-                }
-            }
-            return b.toString();
-        }
-
-        String addOverrideAttr(String name) {
-            hiddenAttributeMap = hiddenAttributeMap == null ? new HashMap<String, String>()
-                    : hiddenAttributeMap;
-            String oName = pathName + "." + name;
-            hiddenAttributeMap.put(name, oName);
-            return oName;
-        }
-    }
-
-    static class Node extends Path {
-        Node(String typeName) {
-            super(typeName);
-        }
-    }
-
-    static class CyclicTypeDefinition extends MetadataException {
-
-        CyclicTypeDefinition(Path p) {
-            super(String.format("Cycle in Type Definition %s", p.pathString(" -> ")));
-        }
-    }
-
-    class PathItr implements Iterator<Path> {
-
-        Queue<Path> pathQueue;
-
-        PathItr() {
-            pathQueue = new LinkedList<Path>();
-            pathQueue.add(pathNameToPathMap.get(getName()));
-        }
-
-        @Override
-        public boolean hasNext() {
-            return !pathQueue.isEmpty();
-        }
-
-        @Override
-        public Path next() {
-            Path p = pathQueue.poll();
-            ST t = null;
-            try {
-                t = (ST) typeSystem.getDataType(superTypeClass, p.typeName);
-            } catch (MetadataException me) {
-                throw new RuntimeException(me);
-            }
-            if (t.superTypes != null) {
-                ImmutableList<String> sTs = t.superTypes;
-                for (String sT : sTs) {
-                    String nm = sT + "." + p.pathName;
-                    pathQueue.add(pathNameToPathMap.get(nm));
-                }
-            }
-            return p;
-        }
-
-        @Override
-        public void remove() {
-            throw new UnsupportedOperationException();
-        }
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/HierarchicalTypeDefinition.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/HierarchicalTypeDefinition.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/HierarchicalTypeDefinition.java
deleted file mode 100755
index 08c8a07..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/HierarchicalTypeDefinition.java
+++ /dev/null
@@ -1,76 +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.typesystem.types;
-
-import com.google.common.collect.ImmutableList;
-import org.apache.hadoop.metadata.classification.InterfaceAudience;
-
-public class HierarchicalTypeDefinition<T extends HierarchicalType> extends StructTypeDefinition {
-
-    public final ImmutableList<String> superTypes;
-    public final String hierarchicalMetaTypeName;
-
-    /**
-     * Used for json deserialization only.
-     * not intended public consumption
-     * @param hierarchicalMetaTypeName
-     * @param typeName
-     * @param superTypes
-     * @param attributeDefinitions
-     * @throws ClassNotFoundException
-     */
-    @InterfaceAudience.Private
-    public HierarchicalTypeDefinition(String hierarchicalMetaTypeName,
-                                      String typeName, String[] superTypes,
-                                      AttributeDefinition[] attributeDefinitions)
-            throws ClassNotFoundException {
-        this((Class<T>) Class.forName(hierarchicalMetaTypeName),
-                typeName, ImmutableList.copyOf(superTypes), attributeDefinitions);
-    }
-
-    public HierarchicalTypeDefinition(Class<T> hierarchicalMetaType,
-                                      String typeName, ImmutableList<String> superTypes,
-                                      AttributeDefinition[] attributeDefinitions) {
-        super(typeName, false, attributeDefinitions);
-        hierarchicalMetaTypeName = hierarchicalMetaType.getName();
-        this.superTypes = superTypes == null ? ImmutableList.<String>of() : superTypes;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        if (!super.equals(o)) return false;
-
-        HierarchicalTypeDefinition that = (HierarchicalTypeDefinition) o;
-
-        if (!hierarchicalMetaTypeName.equals(that.hierarchicalMetaTypeName)) return false;
-        if (!superTypes.equals(that.superTypes)) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = super.hashCode();
-        result = 31 * result + superTypes.hashCode();
-        result = 31 * result + hierarchicalMetaTypeName.hashCode();
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/IConstructableType.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/IConstructableType.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/IConstructableType.java
deleted file mode 100755
index fb5fafb..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/IConstructableType.java
+++ /dev/null
@@ -1,34 +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.typesystem.types;
-
-
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.typesystem.ITypedInstance;
-
-import java.util.List;
-
-public interface IConstructableType<U, T extends ITypedInstance> extends IDataType<U> {
-
-    T createInstance() throws MetadataException;
-
-    FieldMapping fieldMapping();
-
-    List<String> getNames(AttributeInfo info);
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/IDataType.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/IDataType.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/IDataType.java
deleted file mode 100755
index bce2f9f..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/IDataType.java
+++ /dev/null
@@ -1,31 +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.typesystem.types;
-
-import org.apache.hadoop.metadata.MetadataException;
-
-public interface IDataType<T> {
-    String getName();
-
-    T convert(Object val, Multiplicity m) throws MetadataException;
-
-    DataTypes.TypeCategory getTypeCategory();
-
-    void output(T val, Appendable buf, String prefix) throws MetadataException;
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/Multiplicity.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/Multiplicity.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/Multiplicity.java
deleted file mode 100755
index c28e08a..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/Multiplicity.java
+++ /dev/null
@@ -1,90 +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.typesystem.types;
-
-import org.codehaus.jettison.json.JSONException;
-import org.codehaus.jettison.json.JSONObject;
-
-public final class Multiplicity {
-
-    public static final Multiplicity OPTIONAL = new Multiplicity(0, 1, false);
-    public static final Multiplicity REQUIRED = new Multiplicity(1, 1, false);
-    public static final Multiplicity COLLECTION = new Multiplicity(1, Integer.MAX_VALUE, false);
-    public static final Multiplicity SET = new Multiplicity(1, Integer.MAX_VALUE, true);
-
-    public final int lower;
-    public final int upper;
-    public final boolean isUnique;
-    public Multiplicity(int lower, int upper, boolean isUnique) {
-        assert lower >= 0;
-        assert upper >= 1;
-        assert upper >= lower;
-        this.lower = lower;
-        this.upper = upper;
-        this.isUnique = isUnique;
-    }
-
-    public boolean nullAllowed() {
-        return lower == 0;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Multiplicity that = (Multiplicity) o;
-
-        if (isUnique != that.isUnique) return false;
-        if (lower != that.lower) return false;
-        if (upper != that.upper) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = lower;
-        result = 31 * result + upper;
-        result = 31 * result + (isUnique ? 1 : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "Multiplicity{" +
-                "lower=" + lower +
-                ", upper=" + upper +
-                ", isUnique=" + isUnique +
-                '}';
-    }
-
-    public String toJson() throws JSONException {
-        JSONObject json = new JSONObject();
-        json.put("lower", lower);
-        json.put("upper", upper);
-        json.put("isUnique", isUnique);
-        return json.toString();
-    }
-
-    public static Multiplicity fromJson(String jsonStr) throws JSONException {
-        JSONObject json = new JSONObject(jsonStr);
-        return new Multiplicity(json.getInt("lower"), json.getInt("upper"), json.getBoolean("isUnique"));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/ObjectGraphTraversal.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/ObjectGraphTraversal.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/ObjectGraphTraversal.java
deleted file mode 100755
index dea469f..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/ObjectGraphTraversal.java
+++ /dev/null
@@ -1,198 +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.typesystem.types;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.typesystem.IReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.IStruct;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-
-public class ObjectGraphTraversal implements Iterator<ObjectGraphTraversal.InstanceTuple> {
-
-    final Queue<InstanceTuple> queue;
-    final TypeSystem typeSystem;
-    Set<Id> processedIds;
-
-    public ObjectGraphTraversal(TypeSystem typeSystem, IReferenceableInstance start)
-    throws MetadataException {
-        this.typeSystem = typeSystem;
-        queue = new LinkedList<InstanceTuple>();
-        processedIds = new HashSet<Id>();
-        processReferenceableInstance(start);
-    }
-
-    void processValue(IDataType dT, Object val) throws MetadataException {
-        if (val != null) {
-            if (dT.getTypeCategory() == DataTypes.TypeCategory.ARRAY) {
-                IDataType elemType = ((DataTypes.ArrayType) dT).getElemType();
-                processCollection(elemType, val);
-            } else if (dT.getTypeCategory() == DataTypes.TypeCategory.MAP) {
-                IDataType keyType = ((DataTypes.MapType) dT).getKeyType();
-                IDataType valueType = ((DataTypes.MapType) dT).getKeyType();
-                processMap(keyType, valueType, val);
-            } else if (dT.getTypeCategory() == DataTypes.TypeCategory.STRUCT ||
-                    dT.getTypeCategory() == DataTypes.TypeCategory.TRAIT) {
-                processStruct(val);
-            } else if (dT.getTypeCategory() == DataTypes.TypeCategory.CLASS) {
-                processReferenceableInstance(val);
-            }
-        }
-    }
-
-    void processMap(IDataType keyType, IDataType valueType, Object val) throws MetadataException {
-        if (keyType.getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE &&
-                valueType.getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE) {
-            return;
-        }
-
-        if (val != null) {
-            Iterator<Map.Entry> it = null;
-            if (Map.class.isAssignableFrom(val.getClass())) {
-                it = ((Map) val).entrySet().iterator();
-                ImmutableMap.Builder b = ImmutableMap.builder();
-                while (it.hasNext()) {
-                    Map.Entry e = it.next();
-                    processValue(keyType, e.getKey());
-                    processValue(valueType, e.getValue());
-                }
-            }
-        }
-    }
-
-    void processCollection(IDataType elemType, Object val) throws MetadataException {
-
-        if (elemType.getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE) {
-            return;
-        }
-
-        if (val != null) {
-            Iterator it = null;
-            if (val instanceof Collection) {
-                it = ((Collection) val).iterator();
-            } else if (val instanceof Iterable) {
-                it = ((Iterable) val).iterator();
-            } else if (val instanceof Iterator) {
-                it = (Iterator) val;
-            }
-            if (it != null) {
-                DataTypes.TypeCategory elemCategory = elemType.getTypeCategory();
-                while (it.hasNext()) {
-                    Object elem = it.next();
-                    processValue(elemType, elem);
-                }
-            }
-        }
-    }
-
-    void processStruct(Object val) throws MetadataException {
-
-        if (val == null || !(val instanceof IStruct)) {
-            return;
-        }
-
-        IStruct i = (IStruct) val;
-
-        IConstructableType type = typeSystem.getDataType(IConstructableType.class, i.getTypeName());
-
-        for (Map.Entry<String, AttributeInfo> e : type.fieldMapping().fields.entrySet()) {
-            AttributeInfo aInfo = e.getValue();
-            String attrName = e.getKey();
-            if (aInfo.dataType().getTypeCategory() != DataTypes.TypeCategory.PRIMITIVE) {
-                processValue(aInfo.dataType(), i.get(attrName));
-            }
-        }
-    }
-
-    void processReferenceableInstance(Object val) throws MetadataException {
-
-        if (val == null || !(val instanceof IReferenceableInstance || val instanceof Id)) {
-            return;
-        }
-
-        if (val instanceof Id) {
-            Id id = (Id) val;
-            if (id.isUnassigned()) {
-                add(id, null);
-            }
-            return;
-        }
-
-        IReferenceableInstance ref = (IReferenceableInstance) val;
-        Id id = ref.getId();
-        if (id.isUnassigned()) {
-            add(id, ref);
-            if (!processedIds.contains(id)) {
-                processedIds.add(id);
-                processStruct(val);
-
-                ImmutableList<String> traits = ref.getTraits();
-                for (String trait : traits) {
-                    processStruct(ref.getTrait(trait));
-                }
-            }
-        }
-    }
-
-    void add(Id id, IReferenceableInstance ref) {
-        queue.add(new InstanceTuple(id, ref));
-    }
-
-
-    @Override
-    public boolean hasNext() {
-        return !queue.isEmpty();
-    }
-
-    @Override
-    public InstanceTuple next() {
-        try {
-            InstanceTuple t = queue.poll();
-            processReferenceableInstance(t.instance);
-            return t;
-        } catch (MetadataException me) {
-            throw new RuntimeException(me);
-        }
-    }
-
-    @Override
-    public void remove() {
-        throw new UnsupportedOperationException();
-    }
-
-    public static class InstanceTuple {
-        public final Id id;
-        public final IReferenceableInstance instance;
-
-        public InstanceTuple(Id id, IReferenceableInstance instance) {
-            this.id = id;
-            this.instance = instance;
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/30711973/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/ObjectGraphWalker.java
----------------------------------------------------------------------
diff --git a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/ObjectGraphWalker.java b/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/ObjectGraphWalker.java
deleted file mode 100755
index b3f2062..0000000
--- a/typesystem/src/main/java/org/apache/hadoop/metadata/typesystem/types/ObjectGraphWalker.java
+++ /dev/null
@@ -1,221 +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.typesystem.types;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import org.apache.hadoop.metadata.MetadataException;
-import org.apache.hadoop.metadata.typesystem.IReferenceableInstance;
-import org.apache.hadoop.metadata.typesystem.IStruct;
-import org.apache.hadoop.metadata.typesystem.persistence.Id;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-
-/**
- * Given a IReferenceableInstance, a Walker will traverse the Object Graph
- * reachable form the instance. It will invoke the process call on the provided NodeProcessor
- * for each non-primitive attribute (Structs, Traits, References, Arrays of Non-Primitives, Maps
- * of Non-Primitives)
- */
-public class ObjectGraphWalker {
-
-    final Queue<IReferenceableInstance> queue;
-    final TypeSystem typeSystem;
-    final NodeProcessor nodeProcessor;
-    Set<Id> processedIds;
-
-    public ObjectGraphWalker(TypeSystem typeSystem, NodeProcessor nodeProcessor)
-    throws MetadataException {
-        this(typeSystem, nodeProcessor, (IReferenceableInstance) null);
-    }
-
-    public ObjectGraphWalker(TypeSystem typeSystem, NodeProcessor nodeProcessor,
-                             IReferenceableInstance start)
-    throws MetadataException {
-        this.typeSystem = typeSystem;
-        this.nodeProcessor = nodeProcessor;
-        queue = new LinkedList<IReferenceableInstance>();
-        processedIds = new HashSet<Id>();
-        if (start != null) {
-            visitReferenceableInstance(start);
-        }
-    }
-
-    public ObjectGraphWalker(TypeSystem typeSystem, NodeProcessor nodeProcessor,
-                             List<? extends IReferenceableInstance> roots)
-    throws MetadataException {
-        this.typeSystem = typeSystem;
-        this.nodeProcessor = nodeProcessor;
-        queue = new LinkedList<IReferenceableInstance>();
-        processedIds = new HashSet<Id>();
-        for (IReferenceableInstance r : roots) {
-            visitReferenceableInstance(r);
-        }
-    }
-
-    public void walk() throws MetadataException {
-        while (!queue.isEmpty()) {
-            IReferenceableInstance r = queue.poll();
-            processReferenceableInstance(r);
-        }
-    }
-
-    public void addRoot(IReferenceableInstance root) {
-        visitReferenceableInstance(root);
-    }
-
-    void traverseValue(IDataType dT, Object val) throws MetadataException {
-        if (val != null) {
-            if (dT.getTypeCategory() == DataTypes.TypeCategory.ARRAY) {
-                IDataType elemType = ((DataTypes.ArrayType) dT).getElemType();
-                visitCollection(elemType, val);
-            } else if (dT.getTypeCategory() == DataTypes.TypeCategory.MAP) {
-                IDataType keyType = ((DataTypes.MapType) dT).getKeyType();
-                IDataType valueType = ((DataTypes.MapType) dT).getKeyType();
-                visitMap(keyType, valueType, val);
-            } else if (dT.getTypeCategory() == DataTypes.TypeCategory.STRUCT ||
-                    dT.getTypeCategory() == DataTypes.TypeCategory.TRAIT) {
-                visitStruct(val);
-            } else if (dT.getTypeCategory() == DataTypes.TypeCategory.CLASS) {
-                visitReferenceableInstance(val);
-            }
-        }
-    }
-
-    void visitMap(IDataType keyType, IDataType valueType, Object val) throws MetadataException {
-        if (keyType.getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE &&
-                valueType.getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE) {
-            return;
-        }
-
-        if (val != null) {
-            Iterator<Map.Entry> it = null;
-            if (Map.class.isAssignableFrom(val.getClass())) {
-                it = ((Map) val).entrySet().iterator();
-                ImmutableMap.Builder b = ImmutableMap.builder();
-                while (it.hasNext()) {
-                    Map.Entry e = it.next();
-                    traverseValue(keyType, e.getKey());
-                    traverseValue(valueType, e.getValue());
-                }
-            }
-        }
-    }
-
-    void visitCollection(IDataType elemType, Object val) throws MetadataException {
-
-        if (elemType.getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE) {
-            return;
-        }
-
-        if (val != null) {
-            Iterator it = null;
-            if (val instanceof Collection) {
-                it = ((Collection) val).iterator();
-            } else if (val instanceof Iterable) {
-                it = ((Iterable) val).iterator();
-            } else if (val instanceof Iterator) {
-                it = (Iterator) val;
-            }
-            if (it != null) {
-                DataTypes.TypeCategory elemCategory = elemType.getTypeCategory();
-                while (it.hasNext()) {
-                    Object elem = it.next();
-                    traverseValue(elemType, elem);
-                }
-            }
-        }
-    }
-
-    void visitStruct(Object val) throws MetadataException {
-
-        if (val == null || !(val instanceof IStruct)) {
-            return;
-        }
-
-        IStruct i = (IStruct) val;
-
-        IConstructableType type = typeSystem.getDataType(IConstructableType.class, i.getTypeName());
-
-        for (Map.Entry<String, AttributeInfo> e : type.fieldMapping().fields.entrySet()) {
-            AttributeInfo aInfo = e.getValue();
-            String attrName = e.getKey();
-            if (aInfo.dataType().getTypeCategory() != DataTypes.TypeCategory.PRIMITIVE) {
-                Object aVal = i.get(attrName);
-                nodeProcessor.processNode(new Node(i, attrName, aInfo, aVal));
-                traverseValue(aInfo.dataType(), aVal);
-            }
-        }
-    }
-
-    void visitReferenceableInstance(Object val) {
-
-        if (val == null || !(val instanceof IReferenceableInstance)) {
-            return;
-        }
-
-        IReferenceableInstance ref = (IReferenceableInstance) val;
-
-        if (!processedIds.contains(ref.getId())) {
-            processedIds.add(ref.getId());
-            if (!(ref instanceof Id)) {
-                queue.add(ref);
-            }
-        }
-    }
-
-    void processReferenceableInstance(IReferenceableInstance ref) throws MetadataException {
-
-        nodeProcessor.processNode(new Node(ref, null, null, null));
-        visitStruct(ref);
-        ImmutableList<String> traits = ref.getTraits();
-        for (String trait : traits) {
-            visitStruct(ref.getTrait(trait));
-        }
-    }
-
-    public static interface NodeProcessor {
-
-        void processNode(Node nd) throws MetadataException;
-    }
-
-    /**
-     * Represents a non-primitive value of an instance.
-     */
-    public static class Node {
-        public final IStruct instance;
-        public final String attributeName;
-        public final AttributeInfo aInfo;
-        public final Object value;
-
-        public Node(IStruct instance, String attributeName, AttributeInfo aInfo, Object value) {
-            this.instance = instance;
-            this.attributeName = attributeName;
-            this.aInfo = aInfo;
-            this.value = value;
-        }
-    }
-}


Mime
View raw message