http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/Id.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/Id.java b/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/Id.java deleted file mode 100755 index ba05a45..0000000 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/Id.java +++ /dev/null @@ -1,307 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.atlas.typesystem.persistence; - -import com.google.common.collect.ImmutableList; -import org.apache.atlas.AtlasException; -import org.apache.atlas.utils.ParamChecker; -import org.apache.atlas.typesystem.IStruct; -import org.apache.atlas.typesystem.ITypedReferenceableInstance; -import org.apache.atlas.typesystem.types.FieldMapping; -import org.apache.atlas.utils.SHA256Utils; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.nio.charset.Charset; -import java.security.MessageDigest; -import java.util.Date; -import java.util.Map; -import java.util.Objects; -import java.util.UUID; -import java.util.concurrent.atomic.AtomicLong; - -public class Id implements ITypedReferenceableInstance { - public enum EntityState { - ACTIVE, DELETED - } - - public final String id; - public final String typeName; - public final int version; - public EntityState state; - private static AtomicLong s_nextId = new AtomicLong(System.nanoTime()); - public final AtlasSystemAttributes systemAttributes; - - public Id(String id, int version, String typeName, String state) { - id = ParamChecker.notEmpty(id, "id"); - typeName = ParamChecker.notEmpty(typeName, "typeName"); - state = ParamChecker.notEmptyIfNotNull(state, "state"); - this.id = id; - this.typeName = typeName; - this.version = version; - if (state == null) { - this.state = EntityState.ACTIVE; - } else { - this.state = EntityState.valueOf(state.toUpperCase()); - } - this.systemAttributes = new AtlasSystemAttributes(); - } - - public Id(String id, int version, String typeName) { - this(id, version, typeName, null); - } - - public Id(long id, int version, String typeName) { - this("" + id, version, typeName); - } - - public Id(long id, int version, String typeName, String state) { - this("" + id, version, typeName, state); - } - - public Id(String typeName) { - this("" + Id.nextNegativeLong(), 0, typeName); - } - - public boolean isUnassigned() { - try { - long l = Long.parseLong(id); - return l < 0; - } catch (NumberFormatException ne) { - return false; - } - } - - public boolean isAssigned() { - try { - UUID.fromString(id); - } catch (IllegalArgumentException e) { - return false; - } - - return true; - } - - @Override - public String toString() { - return String.format("(type: %s, id: %s)", typeName, isUnassigned() ? "<unassigned>" : "" + id); - } - - @Override - public String toShortString() { - return String.format("id[type=%s guid=%s state=%s]", typeName, id, state); - } - - @Override - public AtlasSystemAttributes getSystemAttributes(){ - return systemAttributes; - } - - public String getClassName() { - return typeName; - } - - public int getVersion() { - return version; - } - - public String _getId() { - return id; - } - - public EntityState getState() { - return state; - } - - public String getStateAsString() { - return state == null ? null : state.name(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Id id1 = (Id) o; - return version == id1.version && - Objects.equals(id, id1.id) && - Objects.equals(typeName, id1.typeName) && - state == id1.state; - } - - @Override - public int hashCode() { - return Objects.hash(id, typeName, version, state); - } - - @Override - public ImmutableList<String> getTraits() { - return null; - } - - @Override - public Id getId() { - return this; - } - - @Override - public IStruct getTrait(String typeName) { - return null; - } - - @Override - public String getTypeName() { - return typeName; - } - - @Override - public Object get(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - @Override - public void set(String attrName, Object val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - @Override - public FieldMapping fieldMapping() { - return null; - } - - @Override - public Map<String, Object> getValuesMap() throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setNull(String attrName) throws AtlasException { - set(attrName, null); - } - - public boolean getBoolean(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public byte getByte(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public short getShort(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public int getInt(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public long getLong(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public float getFloat(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public double getDouble(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public BigInteger getBigInt(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public BigDecimal getBigDecimal(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public Date getDate(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public String getString(String attrName) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setBoolean(String attrName, boolean val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setByte(String attrName, byte val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setShort(String attrName, short val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setInt(String attrName, int val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setLong(String attrName, long val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setFloat(String attrName, float val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setDouble(String attrName, double val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setBigInt(String attrName, BigInteger val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setBigDecimal(String attrName, BigDecimal val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setDate(String attrName, Date val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public void setString(String attrName, String val) throws AtlasException { - throw new AtlasException("Get/Set not supported on an Id object"); - } - - public boolean isValueSet(String attrName) throws AtlasException { - throw new AtlasException("Attributes not set on an Id object"); - } - - @Override - public String getSignatureHash(MessageDigest digester) throws AtlasException { - digester.update(id.getBytes(Charset.forName("UTF-8"))); - digester.update(typeName.getBytes(Charset.forName("UTF-8"))); - byte[] digest = digester.digest(); - return SHA256Utils.toString(digest); - } - - private static long nextNegativeLong() { - long ret = s_nextId.getAndDecrement(); - - if (ret > 0) { - ret *= -1; - } else if (ret == 0) { - ret = Long.MIN_VALUE; - } - - return ret; - } -}
http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/MapIds.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/MapIds.java b/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/MapIds.java deleted file mode 100755 index e62f29d..0000000 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/MapIds.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.atlas.typesystem.persistence; - -import com.google.common.collect.ImmutableCollection; -import com.google.common.collect.ImmutableMap; -import org.apache.atlas.AtlasException; -import org.apache.atlas.typesystem.IReferenceableInstance; -import org.apache.atlas.typesystem.types.DataTypes; -import org.apache.atlas.typesystem.types.ObjectGraphWalker; - -import java.util.Map; - -public class MapIds implements ObjectGraphWalker.NodeProcessor { - - final Map<Id, Id> idToNewIdMap; - - public MapIds(Map<Id, Id> idToNewIdMap) { - this.idToNewIdMap = idToNewIdMap; - } - - @Override - public void processNode(ObjectGraphWalker.Node nd) throws AtlasException { - - IReferenceableInstance ref = null; - Id id = null; - - if (nd.attributeName == null) { - ref = (IReferenceableInstance) nd.instance; - Id newId = idToNewIdMap.get(ref.getId()); - if (newId != null) { - ((ReferenceableInstance) ref).replaceWithNewId(newId); - } - } else if (nd.aInfo.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) { - if (nd.value != null && nd.value instanceof IReferenceableInstance) { - Id oldId = ((IReferenceableInstance) nd.value).getId(); - Id newId = idToNewIdMap.get(oldId); - /* - * Replace Instances with Ids, irrespective of whether they map to newIds or not. - */ - newId = newId == null ? oldId : newId; - nd.instance.set(nd.attributeName, newId); - } - } else if (nd.aInfo.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { - DataTypes.ArrayType aT = (DataTypes.ArrayType) nd.aInfo.dataType(); - Object v = aT.mapIds((ImmutableCollection) nd.value, nd.aInfo.multiplicity, idToNewIdMap); - nd.instance.set(nd.attributeName, v); - } else if (nd.aInfo.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { - DataTypes.MapType mT = (DataTypes.MapType) nd.aInfo.dataType(); - Object v = mT.mapIds((ImmutableMap) nd.value, nd.aInfo.multiplicity, idToNewIdMap); - nd.instance.set(nd.attributeName, v); - } - } -} http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/ReferenceableInstance.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/ReferenceableInstance.java b/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/ReferenceableInstance.java deleted file mode 100755 index be2634d..0000000 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/ReferenceableInstance.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.atlas.typesystem.persistence; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -import org.apache.atlas.AtlasException; -import org.apache.atlas.typesystem.IReferenceableInstance; -import org.apache.atlas.typesystem.IStruct; -import org.apache.atlas.typesystem.ITypedReferenceableInstance; -import org.apache.atlas.typesystem.ITypedStruct; -import org.apache.atlas.typesystem.types.ClassType; -import org.apache.atlas.typesystem.types.FieldMapping; -import org.apache.atlas.typesystem.types.TypeSystem; -import org.apache.atlas.utils.SHA256Utils; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.security.MessageDigest; -import java.util.Date; -import java.util.HashSet; - -/* - * @todo handle names prefixed by traitName. - */ -public class ReferenceableInstance extends StructInstance implements ITypedReferenceableInstance { - - private final ImmutableMap<String, ITypedStruct> traits; - private final ImmutableList<String> traitNames; - private Id id; - private AtlasSystemAttributes systemAttributes; - - - public ReferenceableInstance(Id id, String dataTypeName, AtlasSystemAttributes systemAttributes, FieldMapping fieldMapping, boolean[] nullFlags, - boolean[] explicitSets, boolean[] bools, byte[] bytes, short[] shorts, int[] ints, long[] longs, float[] floats, double[] doubles, - BigDecimal[] bigDecimals, BigInteger[] bigIntegers, Date[] dates, String[] strings, - ImmutableList<Object>[] arrays, ImmutableMap<Object, Object>[] maps, StructInstance[] structs, - ReferenceableInstance[] referenceableInstances, Id[] ids, ImmutableMap<String, ITypedStruct> traits) { - super(dataTypeName, fieldMapping, nullFlags, explicitSets, bools, bytes, shorts, ints, longs, floats, doubles, bigDecimals, - bigIntegers, dates, strings, arrays, maps, structs, referenceableInstances, ids); - this.id = id; - this.traits = traits; - ImmutableList.Builder<String> b = new ImmutableList.Builder<>(); - for (String t : traits.keySet()) { - b.add(t); - } - this.traitNames = b.build(); - if (systemAttributes == null){ - this.systemAttributes = new AtlasSystemAttributes(); - } - else { - this.systemAttributes = systemAttributes; - } - } - - @Override - public ImmutableList<String> getTraits() { - return traitNames; - } - - @Override - public Id getId() { - return id; - } - - @Override - public IStruct getTrait(String typeName) { - return traits.get(typeName); - } - - @Override - public AtlasSystemAttributes getSystemAttributes(){ - return systemAttributes; - } - - /** - * @nopub - * @param id - */ - public void replaceWithNewId(Id id) { - this.id = id; - } - - @Override - public String toString() { - try { - StringBuilder buf = new StringBuilder(); - String prefix = ""; - - fieldMapping.output(this, buf, prefix, new HashSet<IReferenceableInstance>()); - return buf.toString(); - - } catch (AtlasException me) { - throw new RuntimeException(me); - } - } - - @Override - public String toShortString() { - String name = null; - if (fieldMapping().fields.containsKey("name")) { - try { - name = getString("name"); - } catch (AtlasException e) { - //ignore if there is no field name - } - } - return String.format("entity[type=%s guid=%s name=%s]", getTypeName(), getId()._getId(), name); - } - - @Override - public String getSignatureHash(MessageDigest digester) throws AtlasException { - ClassType classType = TypeSystem.getInstance().getDataType(ClassType.class, getTypeName()); - classType.updateSignatureHash(digester, this); - byte[] digest = digester.digest(); - return SHA256Utils.toString(digest); - } -} http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/StructInstance.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/StructInstance.java b/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/StructInstance.java deleted file mode 100755 index 766d2d0..0000000 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/persistence/StructInstance.java +++ /dev/null @@ -1,790 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.atlas.typesystem.persistence; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; - -import org.apache.atlas.AtlasException; -import org.apache.atlas.typesystem.ITypedStruct; -import org.apache.atlas.typesystem.types.AttributeInfo; -import org.apache.atlas.typesystem.types.ClassType; -import org.apache.atlas.typesystem.types.DataTypes; -import org.apache.atlas.typesystem.types.EnumType; -import org.apache.atlas.typesystem.types.EnumValue; -import org.apache.atlas.typesystem.types.FieldMapping; -import org.apache.atlas.typesystem.types.StructType; -import org.apache.atlas.typesystem.types.TypeSystem; -import org.apache.atlas.typesystem.types.ValueConversionException; -import org.apache.atlas.utils.SHA256Utils; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.security.MessageDigest; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -public class StructInstance implements ITypedStruct { - public final String dataTypeName; - public final FieldMapping fieldMapping; - public final boolean nullFlags[]; - public final boolean explicitSets[]; - public final boolean[] bools; - public final byte[] bytes; - public final short[] shorts; - public final int[] ints; - public final long[] longs; - public final float[] floats; - public final double[] doubles; - public final BigDecimal[] bigDecimals; - public final BigInteger[] bigIntegers; - public final Date[] dates; - public final String[] strings; - public final ImmutableList<Object>[] arrays; - public final ImmutableMap<Object, Object>[] maps; - public final StructInstance[] structs; - public final ReferenceableInstance[] referenceables; - public final Id[] ids; - - public StructInstance(String dataTypeName, FieldMapping fieldMapping, boolean[] nullFlags, boolean[] explicitSets, boolean[] bools, - byte[] bytes, short[] shorts, int[] ints, long[] longs, float[] floats, double[] doubles, - BigDecimal[] bigDecimals, BigInteger[] bigIntegers, Date[] dates, String[] strings, - ImmutableList<Object>[] arrays, ImmutableMap<Object, Object>[] maps, StructInstance[] structs, - ReferenceableInstance[] referenceables, Id[] ids) { - assert dataTypeName != null; - this.dataTypeName = dataTypeName; - this.fieldMapping = fieldMapping; - this.nullFlags = nullFlags; - this.explicitSets = explicitSets; - this.bools = bools; - this.bytes = bytes; - this.shorts = shorts; - this.ints = ints; - this.longs = longs; - this.floats = floats; - this.doubles = doubles; - this.bigDecimals = bigDecimals; - this.bigIntegers = bigIntegers; - this.dates = dates; - this.strings = strings; - this.arrays = arrays; - this.maps = maps; - this.structs = structs; - this.referenceables = referenceables; - this.ids = ids; - - for (int i = 0; i < nullFlags.length; i++) { - nullFlags[i] = true; - } - - for (int i = 0; i < explicitSets.length; i++) { - explicitSets[i] = false; - } - } - - @Override - public String getTypeName() { - return dataTypeName; - } - - @Override - public FieldMapping fieldMapping() { - return fieldMapping; - } - - public void set(String attrName, Object val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new ValueConversionException(getTypeName(), val, "Unknown field " + attrName); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - Object cVal = null; - - explicitSets[nullPos] = true; - - if (val != null && val instanceof Id) { - ClassType clsType = TypeSystem.getInstance().getDataType(ClassType.class, i.dataType().getName()); - clsType.validateId((Id) val); - cVal = val; - } else { - try { - cVal = i.dataType().convert(val, i.multiplicity); - } catch(ValueConversionException.NullConversionException e) { - throw new ValueConversionException.NullConversionException("For field '" + attrName + "'", e); - } - } - if (cVal == null) { - nullFlags[nullPos] = true; - return; - } - nullFlags[nullPos] = false; - if (i.dataType() == DataTypes.BOOLEAN_TYPE) { - bools[pos] = (Boolean) cVal; - } else if (i.dataType() == DataTypes.BYTE_TYPE) { - bytes[pos] = (Byte) cVal; - } else if (i.dataType() == DataTypes.SHORT_TYPE) { - shorts[pos] = (Short) cVal; - } else if (i.dataType() == DataTypes.INT_TYPE) { - ints[pos] = (Integer) cVal; - } else if (i.dataType() == DataTypes.LONG_TYPE) { - longs[pos] = (Long) cVal; - } else if (i.dataType() == DataTypes.FLOAT_TYPE) { - floats[pos] = (Float) cVal; - } else if (i.dataType() == DataTypes.DOUBLE_TYPE) { - doubles[pos] = (Double) cVal; - } else if (i.dataType() == DataTypes.BIGINTEGER_TYPE) { - bigIntegers[pos] = (BigInteger) cVal; - } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) { - bigDecimals[pos] = (BigDecimal) cVal; - } else if (i.dataType() == DataTypes.DATE_TYPE) { - dates[pos] = (Date) cVal; - } else if (i.dataType() == DataTypes.STRING_TYPE) { - strings[pos] = (String) cVal; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ENUM) { - ints[pos] = ((EnumValue) cVal).ordinal; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { - arrays[pos] = (ImmutableList) cVal; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { - maps[pos] = (ImmutableMap) cVal; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT - || i.dataType().getTypeCategory() == DataTypes.TypeCategory.TRAIT) { - structs[pos] = (StructInstance) cVal; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) { - if (cVal instanceof Id) { - ids[pos] = (Id) cVal; - } else { - referenceables[pos] = (ReferenceableInstance) cVal; - } - } else { - throw new AtlasException(String.format("Unknown datatype %s", i.dataType())); - } - } - - public Object get(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - if ( i.dataType().getTypeCategory() == DataTypes.TypeCategory.PRIMITIVE) { - return ((DataTypes.PrimitiveType) i.dataType()).nullValue(); - } else { - return null; - } - } - - if (i.dataType() == DataTypes.BOOLEAN_TYPE) { - return bools[pos]; - } else if (i.dataType() == DataTypes.BYTE_TYPE) { - return bytes[pos]; - } else if (i.dataType() == DataTypes.SHORT_TYPE) { - return shorts[pos]; - } else if (i.dataType() == DataTypes.INT_TYPE) { - return ints[pos]; - } else if (i.dataType() == DataTypes.LONG_TYPE) { - return longs[pos]; - } else if (i.dataType() == DataTypes.FLOAT_TYPE) { - return floats[pos]; - } else if (i.dataType() == DataTypes.DOUBLE_TYPE) { - return doubles[pos]; - } else if (i.dataType() == DataTypes.BIGINTEGER_TYPE) { - return bigIntegers[pos]; - } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) { - return bigDecimals[pos]; - } else if (i.dataType() == DataTypes.DATE_TYPE) { - return dates[pos]; - } else if (i.dataType() == DataTypes.STRING_TYPE) { - return strings[pos]; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ENUM) { - return ((EnumType) i.dataType()).fromOrdinal(ints[pos]); - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { - return arrays[pos]; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { - return maps[pos]; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT - || i.dataType().getTypeCategory() == DataTypes.TypeCategory.TRAIT) { - return structs[pos]; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) { - if (ids[pos] != null) { - return ids[pos]; - } else { - return referenceables[pos]; - } - } else { - throw new AtlasException(String.format("Unknown datatype %s", i.dataType())); - } - } - - public void setNull(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - int nullPos = fieldMapping.fieldNullPos.get(attrName); - nullFlags[nullPos] = true; - explicitSets[nullPos] = true; - - int pos = fieldMapping.fieldPos.get(attrName); - - if (i.dataType() == DataTypes.BIGINTEGER_TYPE) { - bigIntegers[pos] = null; - } else if (i.dataType() == DataTypes.BIGDECIMAL_TYPE) { - bigDecimals[pos] = null; - } else if (i.dataType() == DataTypes.DATE_TYPE) { - dates[pos] = null; - } else if (i.dataType() == DataTypes.INT_TYPE) { - ints[pos] = 0; - } else if (i.dataType() == DataTypes.BOOLEAN_TYPE) { - bools[pos] = false; - } else if (i.dataType() == DataTypes.STRING_TYPE) { - strings[pos] = null; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.ARRAY) { - arrays[pos] = null; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.MAP) { - maps[pos] = null; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.STRUCT - || i.dataType().getTypeCategory() == DataTypes.TypeCategory.TRAIT) { - structs[pos] = null; - } else if (i.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) { - ids[pos] = null; - referenceables[pos] = null; - } else { - throw new AtlasException(String.format("Unknown datatype %s", i.dataType())); - } - } - - /* - * Use only for json serialization - * @nonpublic - */ - @Override - public Map<String, Object> getValuesMap() throws AtlasException { - Map<String, Object> m = new HashMap<>(); - for (String attr : fieldMapping.fields.keySet()) { -// int pos = fieldMapping.fieldNullPos.get(attr); -// if ( explicitSets[pos] ) { - m.put(attr, get(attr)); -// } - } - return m; - } - - public boolean getBoolean(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.BOOLEAN_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.BOOLEAN_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.BOOLEAN_TYPE.nullValue(); - } - - return bools[pos]; - } - - public byte getByte(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.BYTE_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.BYTE_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.BYTE_TYPE.nullValue(); - } - - return bytes[pos]; - } - - public short getShort(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.SHORT_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.SHORT_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.SHORT_TYPE.nullValue(); - } - - return shorts[pos]; - } - - public int getInt(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - - if (i.dataType() != DataTypes.INT_TYPE && !(i.dataType() instanceof EnumType)) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.INT_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.INT_TYPE.nullValue(); - } - - return ints[pos]; - } - - public long getLong(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.LONG_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.LONG_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.LONG_TYPE.nullValue(); - } - - return longs[pos]; - } - - public float getFloat(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.FLOAT_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.FLOAT_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.FLOAT_TYPE.nullValue(); - } - - return floats[pos]; - } - - public double getDouble(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.DOUBLE_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.DOUBLE_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.DOUBLE_TYPE.nullValue(); - } - - return doubles[pos]; - } - - public BigInteger getBigInt(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.BIGINTEGER_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.BIGINTEGER_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.BIGINTEGER_TYPE.nullValue(); - } - - return bigIntegers[pos]; - } - - public BigDecimal getBigDecimal(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.BIGDECIMAL_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.BIGDECIMAL_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.BIGDECIMAL_TYPE.nullValue(); - } - - return bigDecimals[pos]; - } - - public Date getDate(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.DATE_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.DATE_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.DATE_TYPE.nullValue(); - } - - return dates[pos]; - } - - public String getString(String attrName) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.STRING_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic get method", attrName, - getTypeName(), DataTypes.STRING_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - if (nullFlags[nullPos]) { - return DataTypes.STRING_TYPE.nullValue(); - } - - return strings[pos]; - } - - public void setBoolean(String attrName, boolean val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.BOOLEAN_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.BOOLEAN_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = false; - bools[pos] = val; - explicitSets[nullPos] = true; - } - - public void setByte(String attrName, byte val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.BYTE_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.BYTE_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = false; - bytes[pos] = val; - explicitSets[nullPos] = true; - } - - public void setShort(String attrName, short val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.SHORT_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.SHORT_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = false; - shorts[pos] = val; - explicitSets[nullPos] = true; - } - - public void setInt(String attrName, int val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.INT_TYPE && !(i.dataType() instanceof EnumType)) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.INT_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = false; - ints[pos] = val; - explicitSets[nullPos] = true; - } - - public void setLong(String attrName, long val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.LONG_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.LONG_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = false; - longs[pos] = val; - explicitSets[nullPos] = true; - } - - public void setFloat(String attrName, float val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.FLOAT_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.FLOAT_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = false; - floats[pos] = val; - explicitSets[nullPos] = true; - } - - public void setDouble(String attrName, double val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.DOUBLE_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.DOUBLE_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = false; - doubles[pos] = val; - explicitSets[nullPos] = true; - } - - public void setBigInt(String attrName, BigInteger val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.BIGINTEGER_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.BIGINTEGER_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = val == null; - bigIntegers[pos] = val; - explicitSets[nullPos] = true; - } - - public void setBigDecimal(String attrName, BigDecimal val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.BIGDECIMAL_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.BIGDECIMAL_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = val == null; - bigDecimals[pos] = val; - explicitSets[nullPos] = true; - } - - public void setDate(String attrName, Date val) throws AtlasException { - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.DATE_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.DATE_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = val == null; - dates[pos] = val; - explicitSets[nullPos] = true; - } - - public void setString(String attrName, String val) throws AtlasException { - - AttributeInfo i = fieldMapping.fields.get(attrName); - if (i == null) { - throw new AtlasException(String.format("Unknown field %s for Struct %s", attrName, getTypeName())); - } - - if (i.dataType() != DataTypes.STRING_TYPE) { - throw new AtlasException( - String.format("Field %s for Struct %s is not a %s, call generic set method", attrName, - getTypeName(), DataTypes.STRING_TYPE.getName())); - } - - int pos = fieldMapping.fieldPos.get(attrName); - int nullPos = fieldMapping.fieldNullPos.get(attrName); - - nullFlags[nullPos] = val == null; - strings[pos] = val; - explicitSets[nullPos] = true; - } - - @Override - public String toString() { - try { - StringBuilder buf = new StringBuilder(); - String prefix = ""; - - fieldMapping.output(this, buf, prefix, null); - return buf.toString(); - - } catch (AtlasException me) { - throw new RuntimeException(me); - } - } - - @Override - public String getSignatureHash(MessageDigest digester) throws AtlasException { - StructType structType = TypeSystem.getInstance().getDataType(StructType.class, getTypeName()); - structType.updateSignatureHash(digester, this); - byte[] digest = digester.digest(); - return SHA256Utils.toString(digest); - } - - @Override - public boolean isValueSet(final String attrName) throws AtlasException { - int nullPos = fieldMapping.fieldNullPos.get(attrName); - return explicitSets[nullPos]; - } - - @Override - public String toShortString() { - return String.format("struct[type=%s]", dataTypeName); - } -} http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/typesystem/src/main/java/org/apache/atlas/typesystem/types/AbstractDataType.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/types/AbstractDataType.java b/typesystem/src/main/java/org/apache/atlas/typesystem/types/AbstractDataType.java deleted file mode 100755 index 874138b..0000000 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/types/AbstractDataType.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.atlas.typesystem.types; - -import com.google.common.collect.ImmutableSortedMap; - -import org.apache.atlas.AtlasConstants; -import org.apache.atlas.AtlasException; - -import java.io.IOException; -import java.util.Map; -import java.util.Set; - -abstract class AbstractDataType<T> implements IDataType<T> { - - public final String name; - public final String description; - public final String version; - - public AbstractDataType(String name, String description) { - - super(); - this.name = name; - this.description = description; - this.version = AtlasConstants.DEFAULT_TYPE_VERSION; - } - - public AbstractDataType(String name, String description, String version) { - - super(); - this.name = name; - this.description = description; - this.version = version; - } - - protected T convertNull(Multiplicity m) throws AtlasException { - if (!m.nullAllowed()) { - throw new ValueConversionException.NullConversionException(m); - } - return null; - } - - @Override - public void output(T val, Appendable buf, String prefix, Set<T> inProcess) throws AtlasException { - final String strValue; - - if (val == null) { - strValue = "<null>"; - } else if (val instanceof Map) { - ImmutableSortedMap immutableSortedMap = ImmutableSortedMap.copyOf((Map) val); - strValue = immutableSortedMap.toString(); - } else { - strValue = val.toString(); - } - - TypeUtils.outputVal(strValue, buf, prefix); - } - - @Override - public void output(Appendable buf, Set<String> typesInProcess) throws AtlasException { - - try { - buf.append(toString()); - } catch (IOException e) { - throw new AtlasException(e); - } - } - - /* (non-Javadoc) - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return "{name=" + name + ", description=" + description + "}"; - } - - /** - * Validate that current definition can be updated with the new definition - * @param newType - */ - @Override - public void validateUpdate(IDataType newType) throws TypeUpdateException { - if (!getName().equals(newType.getName()) || !getClass().getName().equals(newType.getClass().getName())) { - throw new TypeUpdateException(newType); - } - } - - @Override - public String getName() { - return name; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public String getVersion() { - return version; - } -} - http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/typesystem/src/main/java/org/apache/atlas/typesystem/types/AttributeDefinition.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/types/AttributeDefinition.java b/typesystem/src/main/java/org/apache/atlas/typesystem/types/AttributeDefinition.java deleted file mode 100755 index 5561f0b..0000000 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/types/AttributeDefinition.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.atlas.typesystem.types; - -import org.apache.atlas.utils.ParamChecker; - -import java.util.Objects; - -public final class AttributeDefinition { - - public final String name; - public final String dataTypeName; - public final Multiplicity multiplicity; - //A composite is the one whose lifecycle is dependent on the enclosing type and is not just a reference - public final boolean isComposite; - public final boolean isUnique; - public final boolean isIndexable; - - /** - * If this is a reference attribute, then the name of the attribute on the Class - * that this refers to. - */ - public final String reverseAttributeName; - - public AttributeDefinition(String name, String dataTypeName, Multiplicity multiplicity, boolean isComposite, - String reverseAttributeName) { - this(name, dataTypeName, multiplicity, isComposite, false, false, reverseAttributeName); - - } - - public AttributeDefinition(String name, String dataTypeName, Multiplicity multiplicity, boolean isComposite, - boolean isUnique, boolean isIndexable, String reverseAttributeName) { - this.name = ParamChecker.notEmpty(name, "Attribute name"); - this.dataTypeName = ParamChecker.notEmpty(dataTypeName, "Attribute type"); - this.multiplicity = multiplicity; - this.isComposite = isComposite; - this.isUnique = isUnique; - this.isIndexable = isIndexable; - this.reverseAttributeName = ParamChecker.notEmptyIfNotNull(reverseAttributeName, "Reverse attribute name"); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - AttributeDefinition that = (AttributeDefinition) o; - return isComposite == that.isComposite && - isUnique == that.isUnique && - isIndexable == that.isIndexable && - Objects.equals(name, that.name) && - Objects.equals(dataTypeName, that.dataTypeName) && - Objects.equals(multiplicity, that.multiplicity) && - Objects.equals(reverseAttributeName, that.reverseAttributeName); - } - - @Override - public int hashCode() { - return Objects.hash(name, dataTypeName, multiplicity, isComposite, isUnique, isIndexable, reverseAttributeName); - } - - @Override - public String toString() { - return name; - } -} http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/typesystem/src/main/java/org/apache/atlas/typesystem/types/AttributeInfo.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/types/AttributeInfo.java b/typesystem/src/main/java/org/apache/atlas/typesystem/types/AttributeInfo.java deleted file mode 100755 index c24a55f..0000000 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/types/AttributeInfo.java +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.atlas.typesystem.types; - -import org.apache.atlas.AtlasException; -import org.codehaus.jettison.json.JSONException; -import org.codehaus.jettison.json.JSONObject; - -import java.io.IOException; -import java.util.HashSet; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -public class AttributeInfo { - public final String name; - public final Multiplicity multiplicity; - //A composite is the one whose lifecycle is dependent on the enclosing type and is not just a reference - public final boolean isComposite; - public final boolean isUnique; - public final boolean isIndexable; - /** - * If this is a reference attribute, then the name of the attribute on the Class - * that this refers to. - */ - public final String reverseAttributeName; - private IDataType dataType; - - public AttributeInfo(TypeSystem t, AttributeDefinition def, Map<String, IDataType> tempTypes) throws AtlasException { - this.name = def.name; - this.dataType = - (tempTypes != null && tempTypes.containsKey(def.dataTypeName)) ? tempTypes.get(def.dataTypeName) : - t.getDataType(IDataType.class, def.dataTypeName); - this.multiplicity = def.multiplicity; - this.isComposite = def.isComposite; - this.isUnique = def.isUnique; - this.isIndexable = def.isIndexable; - this.reverseAttributeName = def.reverseAttributeName; - } - - public IDataType dataType() { - return dataType; - } - - void setDataType(IDataType dT) { - dataType = dT; - } - - @Override - public String toString() { - StringBuilder buf = new StringBuilder(); - try { - output(buf, new HashSet<String>()); - } catch (AtlasException e) { - throw new RuntimeException(e); - } - return buf.toString(); - } - - public void output(Appendable buf, Set<String> typesInProcess) throws AtlasException { - try { - buf.append("{name=").append(name); - buf.append(", dataType="); - dataType.output(buf, typesInProcess); - buf.append(", multiplicity=").append(multiplicity.toString()); - buf.append(", isComposite=").append(Boolean.toString(isComposite)); - buf.append(", isUnique=").append(Boolean.toString(isUnique)); - buf.append(", isIndexable=").append(Boolean.toString(isIndexable)); - buf.append(", reverseAttributeName=").append(reverseAttributeName); - buf.append('}'); - } - catch(IOException e) { - throw new AtlasException(e); - } - } - - @Override - public int hashCode() { - return Objects.hash(name, multiplicity, isComposite, isUnique, isIndexable, reverseAttributeName, dataType); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - AttributeInfo that = (AttributeInfo) o; - return isComposite == that.isComposite && - isUnique == that.isUnique && - isIndexable == that.isIndexable && - Objects.equals(name, that.name) && - Objects.equals(multiplicity, that.multiplicity) && - Objects.equals(reverseAttributeName, that.reverseAttributeName) && - dataType == null ? that.dataType == null : Objects.equals(dataType.getName(), that.dataType.getName()); - } - - public String toJson() throws JSONException { - JSONObject json = new JSONObject(); - json.put("name", name); - json.put("multiplicity", multiplicity.toJson()); - json.put("isComposite", isComposite); - json.put("isUnique", isUnique); - json.put("isIndexable", isIndexable); - json.put("dataType", dataType.getName()); - json.put("reverseAttributeName", reverseAttributeName); - return json.toString(); - } - - public static AttributeDefinition fromJson(String jsonStr) throws JSONException { - JSONObject json = new JSONObject(jsonStr); - String reverseAttr = null; - if (json.has("reverseAttributeName")) { - reverseAttr = json.getString("reverseAttributeName"); - } - return new AttributeDefinition(json.getString("name"), json.getString("dataType"), - Multiplicity.fromJson(json.getString("multiplicity")), json.getBoolean("isComposite"), - json.getBoolean("isUnique"), json.getBoolean("isIndexable"), reverseAttr); - } -} http://git-wip-us.apache.org/repos/asf/atlas/blob/435fe3fb/typesystem/src/main/java/org/apache/atlas/typesystem/types/ClassType.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/types/ClassType.java b/typesystem/src/main/java/org/apache/atlas/typesystem/types/ClassType.java deleted file mode 100755 index 2f2b090..0000000 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/types/ClassType.java +++ /dev/null @@ -1,259 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.atlas.typesystem.types; - -import com.google.common.collect.ImmutableBiMap; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; - -import org.apache.atlas.AtlasConstants; -import org.apache.atlas.AtlasException; -import org.apache.atlas.typesystem.IReferenceableInstance; -import org.apache.atlas.typesystem.IStruct; -import org.apache.atlas.typesystem.ITypedReferenceableInstance; -import org.apache.atlas.typesystem.ITypedStruct; -import org.apache.atlas.typesystem.Referenceable; -import org.apache.atlas.typesystem.Struct; -import org.apache.atlas.typesystem.persistence.AtlasSystemAttributes; -import org.apache.atlas.typesystem.persistence.Id; -import org.apache.atlas.typesystem.persistence.ReferenceableInstance; -import org.apache.atlas.typesystem.persistence.StructInstance; -import scala.tools.cmd.gen.AnyVals; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.nio.charset.Charset; -import java.security.MessageDigest; -import java.util.*; - -public class ClassType extends HierarchicalType<ClassType, IReferenceableInstance> - implements IConstructableType<IReferenceableInstance, ITypedReferenceableInstance> { - - public static final String TRAIT_NAME_SEP = "::"; - - public final Map<AttributeInfo, List<String>> infoToNameMap; - - ClassType(TypeSystem typeSystem, String name, String description, ImmutableSet<String> superTypes, int numFields) { - this(typeSystem, name, description, AtlasConstants.DEFAULT_TYPE_VERSION, superTypes, numFields); - } - - ClassType(TypeSystem typeSystem, String name, String description, String version, ImmutableSet<String> superTypes, int numFields) { - super(typeSystem, ClassType.class, name, description, version, superTypes, numFields); - infoToNameMap = null; - } - - ClassType(TypeSystem typeSystem, String name, String description, ImmutableSet<String> superTypes, AttributeInfo... fields) - throws AtlasException { - this(typeSystem, name, description, AtlasConstants.DEFAULT_TYPE_VERSION, superTypes, fields); - } - - ClassType(TypeSystem typeSystem, String name, String description, String version, ImmutableSet<String> superTypes, AttributeInfo... fields) - throws AtlasException { - super(typeSystem, ClassType.class, name, description, version, superTypes, fields); - infoToNameMap = TypeUtils.buildAttrInfoToNameMap(fieldMapping); - } - - @Override - public DataTypes.TypeCategory getTypeCategory() { - return DataTypes.TypeCategory.CLASS; - } - - public void validateId(Id id) throws AtlasException { - if (id != null) { - ClassType cType = typeSystem.getDataType(ClassType.class, id.typeName); - if (isSubType(cType.getName())) { - return; - } - throw new AtlasException(String.format("Id %s is not valid for class %s", id, getName())); - } - } - - protected Id getId(Object val) throws AtlasException { - if (val instanceof Referenceable) { - return ((Referenceable) val).getId(); - } - throw new AtlasException(String.format("Cannot get id from class %s", val.getClass())); - } - - @Override - public ITypedReferenceableInstance convert(Object val, Multiplicity m) throws AtlasException { - - if (val != null) { - if (val instanceof ITypedReferenceableInstance) { - ITypedReferenceableInstance tr = (ITypedReferenceableInstance) val; - if (!tr.getTypeName().equals(getName())) { - /* - * If val is a subType instance; invoke convert on it. - */ - ClassType valType = typeSystem.getDataType(superTypeClass, tr.getTypeName()); - if (valType.superTypePaths.containsKey(name)) { - return valType.convert(val, m); - } - throw new ValueConversionException(this, val); - } - return tr; - } else if (val instanceof Struct) { - Struct s = (Struct) val; - Referenceable r = null; - Id id = null; - - if (!s.typeName.equals(getName())) { - /* - * If val is a subType instance; invoke convert on it. - */ - ClassType valType = typeSystem.getDataType(superTypeClass, s.typeName); - if (valType.superTypePaths.containsKey(name)) { - return valType.convert(s, m); - } - throw new ValueConversionException(this, val); - } - - if (val instanceof Referenceable) { - r = (Referenceable) val; - id = r.getId(); - } - - ITypedReferenceableInstance tr = - r != null ? createInstanceWithTraits(id, null, r, r.getTraits().toArray(new String[0])) : - createInstance(id); - - if (id != null && id.isAssigned()) { - return tr; - } - - for (Map.Entry<String, AttributeInfo> e : fieldMapping.fields.entrySet()) { - String attrKey = e.getKey(); - AttributeInfo i = e.getValue(); - Object aVal = s.get(attrKey); - if (aVal != null && i.dataType().getTypeCategory() == DataTypes.TypeCategory.CLASS) { - if (!i.isComposite) { - aVal = ((IReferenceableInstance) aVal).getId(); - } - } - - if(!i.multiplicity.nullAllowed() && !s.getValuesMap().containsKey(attrKey)){ - throw new ValueConversionException.NullConversionException(i.multiplicity, - String.format(" Value expected for required attribute %s", i.name)); - } else { - try { - if (s.getValuesMap().containsKey(attrKey)) { - tr.set(attrKey, aVal); - } - } catch (ValueConversionException ve) { - throw new ValueConversionException(this, val, ve); - } - } - } - - return tr; - } else if (val instanceof ReferenceableInstance) { - validateId(((ReferenceableInstance) val).getId()); - return (ReferenceableInstance) val; - } else { - throw new ValueConversionException(this, val, "value's class is " + val.getClass().getName()); - } - } - if (!m.nullAllowed()) { - throw new ValueConversionException.NullConversionException(m); - } - return null; - } - - @Override - public ITypedReferenceableInstance createInstance() throws AtlasException { - return createInstance((String[]) null); - } - - public ITypedReferenceableInstance createInstance(String... traitNames) throws AtlasException { - return createInstance(null, traitNames); - } - - public ITypedReferenceableInstance createInstance(Id id, String... traitNames) throws AtlasException { - return createInstanceWithTraits(id, null, null, traitNames); - } - - public ITypedReferenceableInstance createInstance(Id id, AtlasSystemAttributes systemAttributes, String... traitNames) throws AtlasException{ - return createInstanceWithTraits(id, systemAttributes, null, traitNames); - } - - public ITypedReferenceableInstance createInstanceWithTraits(Id id, AtlasSystemAttributes systemAttributes, Referenceable r, String... traitNames) - throws AtlasException { - - ImmutableMap.Builder<String, ITypedStruct> b = new ImmutableBiMap.Builder<>(); - if (traitNames != null) { - for (String t : traitNames) { - TraitType tType = typeSystem.getDataType(TraitType.class, t); - IStruct iTraitObject = r == null ? null : r.getTrait(t); - ITypedStruct trait = iTraitObject == null ? tType.createInstance() : - tType.convert(iTraitObject, Multiplicity.REQUIRED); - b.put(t, trait); - } - } - - return new ReferenceableInstance(id == null ? new Id(getName()) : id, getName(), systemAttributes, fieldMapping, - new boolean[fieldMapping.fields.size()], new boolean[fieldMapping.fields.size()], - fieldMapping.numBools == 0 ? null : new boolean[fieldMapping.numBools], - fieldMapping.numBytes == 0 ? null : new byte[fieldMapping.numBytes], - fieldMapping.numShorts == 0 ? null : new short[fieldMapping.numShorts], - fieldMapping.numInts == 0 ? null : new int[fieldMapping.numInts], - fieldMapping.numLongs == 0 ? null : new long[fieldMapping.numLongs], - fieldMapping.numFloats == 0 ? null : new float[fieldMapping.numFloats], - fieldMapping.numDoubles == 0 ? null : new double[fieldMapping.numDoubles], - fieldMapping.numBigDecimals == 0 ? null : new BigDecimal[fieldMapping.numBigDecimals], - fieldMapping.numBigInts == 0 ? null : new BigInteger[fieldMapping.numBigInts], - fieldMapping.numDates == 0 ? null : new Date[fieldMapping.numDates], - fieldMapping.numStrings == 0 ? null : new String[fieldMapping.numStrings], - fieldMapping.numArrays == 0 ? null : new ImmutableList[fieldMapping.numArrays], - fieldMapping.numMaps == 0 ? null : new ImmutableMap[fieldMapping.numMaps], - fieldMapping.numStructs == 0 ? null : new StructInstance[fieldMapping.numStructs], - fieldMapping.numReferenceables == 0 ? null : new ReferenceableInstance[fieldMapping.numReferenceables], - fieldMapping.numReferenceables == 0 ? null : new Id[fieldMapping.numReferenceables], b.build()); - } - - @Override - public void output(IReferenceableInstance s, Appendable buf, String prefix, Set<IReferenceableInstance> inProcess) throws AtlasException { - fieldMapping.output(s, buf, prefix, inProcess); - } - - @Override - public List<String> getNames(AttributeInfo info) { - return infoToNameMap.get(info); - } - - @Override - public void updateSignatureHash(MessageDigest digester, Object val) throws AtlasException { - if( !(val instanceof ITypedReferenceableInstance)) { - throw new IllegalArgumentException("Unexpected value type " + val.getClass().getSimpleName() + ". Expected instance of ITypedStruct"); - } - digester.update(getName().getBytes(Charset.forName("UTF-8"))); - - if(fieldMapping.fields != null && val != null) { - IReferenceableInstance typedValue = (IReferenceableInstance) val; - if(fieldMapping.fields.values() != null) { - for (AttributeInfo aInfo : fieldMapping.fields.values()) { - Object attrVal = typedValue.get(aInfo.name); - if (attrVal != null) { - aInfo.dataType().updateSignatureHash(digester, attrVal); - } - } - } - } - } -} \ No newline at end of file
