- /**
- * 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.record.meta;
- import java.io.IOException;
- import org.apache.hadoop.record.RecordOutput;
- /**
- * Represents typeID for basic types.
- */
- public class TypeID {
- /**
- * constants representing the IDL types we support
- */
- public static final class RIOType {
- public static final byte BOOL = 1;
- public static final byte BUFFER = 2;
- public static final byte BYTE = 3;
- public static final byte DOUBLE = 4;
- public static final byte FLOAT = 5;
- public static final byte INT = 6;
- public static final byte LONG = 7;
- public static final byte MAP = 8;
- public static final byte STRING = 9;
- public static final byte STRUCT = 10;
- public static final byte VECTOR = 11;
- }
- /**
- * Constant classes for the basic types, so we can share them.
- */
- public static final TypeID BoolTypeID = new TypeID(RIOType.BOOL);
- public static final TypeID BufferTypeID = new TypeID(RIOType.BUFFER);
- public static final TypeID ByteTypeID = new TypeID(RIOType.BYTE);
- public static final TypeID DoubleTypeID = new TypeID(RIOType.DOUBLE);
- public static final TypeID FloatTypeID = new TypeID(RIOType.FLOAT);
- public static final TypeID IntTypeID = new TypeID(RIOType.INT);
- public static final TypeID LongTypeID = new TypeID(RIOType.LONG);
- public static final TypeID StringTypeID = new TypeID(RIOType.STRING);
- protected byte typeVal;
- /**
- * Create a TypeID object
- */
- TypeID(byte typeVal) {
- this.typeVal = typeVal;
- }
- /**
- * Get the type value. One of the constants in RIOType.
- */
- public byte getTypeVal() {
- return typeVal;
- }
- /**
- * Serialize the TypeID object
- */
- void write(RecordOutput rout, String tag) throws IOException {
- rout.writeByte(typeVal, tag);
- }
- /**
- * Two base typeIDs are equal if they refer to the same type
- */
- public boolean equals(Object o) {
- if (this == o)
- return true;
- if (o == null)
- return false;
- if (this.getClass() != o.getClass())
- return false;
- TypeID oTypeID = (TypeID) o;
- return (this.typeVal == oTypeID.typeVal);
- }
- /**
- * We use a basic hashcode implementation, since this class will likely not
- * be used as a hashmap key
- */
- public int hashCode() {
- // See 'Effectve Java' by Joshua Bloch
- return 37*17+(int)typeVal;
- }
- }