Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
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.avro.specific;
 
 import java.util.Map;
 import java.util.List;
 
Utilities for generated Java classes and interfaces.
 
 public class SpecificData extends GenericData {
 
   private static final SpecificData INSTANCE = new SpecificData();
 
   protected SpecificData() {}
  
  
Return the singleton instance.
 
   public static SpecificData get() { return ; }
 
   @Override
   protected boolean isRecord(Object datum) {
     return datum instanceof SpecificRecord;
   }
 
   @Override
   protected Schema getRecordSchema(Object record) {
     return ((SpecificRecord)record).getSchema();
   }
 
   @Override
   protected boolean isEnum(Object datum) {
     return datum instanceof Enum;
   }
 
   @Override
   public boolean validate(Schema schemaObject datum) {
     switch (schema.getType()) {
     case :
       return datum instanceof Enum
         && schema.getEnumSymbols().contains(((Enum)datum).name());
     default:
       return super.validate(schemadatum);
     }
   }
 
   private Map<String,ClassclassCache = new ConcurrentHashMap<String,Class>();
 
   private static final Schema NULL_SCHEMA = Schema.create(..);

  
Return the class that implements a schema.
 
   public Class getClass(Schema schema) {
     switch (schema.getType()) {
     case :
     case :
     case :
       String name = schema.getFullName();
       Class c = .get(name);
       if (c == null) {
         try {
           c = Class.forName(getClassName(schema));
           .put(namec);
         } catch (ClassNotFoundException e) {
           throw new AvroRuntimeException(e);
         }
       }
       return c;
     case :   return GenericArray.class;
     case :     return Map.class;
     case :
       List<Schematypes = schema.getTypes();     // elide unions with null
       if ((types.size() == 2) && types.contains())
         return getClass(types.get(types.get(0).equals() ? 1 : 0));
      return Object.class;
    case :  return Utf8.class;
    case :   return ByteBuffer.class;
    case :     return .;
    case :    return .;
    case :   return .;
    case :  return .;
    case return .;
    case :    return .;
    defaultthrow new AvroRuntimeException("Unknown type: "+schema);
    }
  }

  
Returns the Java class name indicated by a schema's name and namespace.
  public String getClassName(Schema schema) {
    String namespace = schema.getNamespace();
    String name = schema.getName();
    if (namespace == null)
      return name;
    String dot = namespace.endsWith("$") ? "" : ".";
    return namespace + dot + name;
  }
    new WeakHashMap<java.lang.reflect.Type,Schema>();

  
Find the schema for a Java type.
  public Schema getSchema(java.lang.reflect.Type type) {
    Schema schema = .get(type);
    if (schema == null) {
      schema = createSchema(typenew LinkedHashMap<String,Schema>());
      .put(typeschema);
    }
    return schema;
  }

  
Create the schema for a Java type.
  @SuppressWarnings(value="unchecked")
  protected Schema createSchema(java.lang.reflect.Type type,
                                Map<String,Schemanames) {
    if (type == Utf8.class)
      return Schema.create(.);
    else if (type == ByteBuffer.class)
      return Schema.create(.);
    else if ((type == Integer.class) || (type == .))
      return Schema.create(.);
    else if ((type == Long.class) || (type == .))
      return Schema.create(.);
    else if ((type == Float.class) || (type == .))
      return Schema.create(.);
    else if ((type == Double.class) || (type == .))
      return Schema.create(.);
    else if ((type == Boolean.class) || (type == .))
      return Schema.create(.);
    else if ((type == Void.class) || (type == .))
      return Schema.create(.);
    else if (type instanceof ParameterizedType) {
      ParameterizedType ptype = (ParameterizedType)type;
      Class raw = (Class)ptype.getRawType();
      java.lang.reflect.Type[] params = ptype.getActualTypeArguments();
      if (GenericArray.class.isAssignableFrom(raw)) { // array
        if (params.length != 1)
          throw new AvroTypeException("No array type specified.");
        return Schema.createArray(createSchema(params[0], names));
      } else if (Map.class.isAssignableFrom(raw)) {   // map
        java.lang.reflect.Type key = params[0];
        java.lang.reflect.Type value = params[1];
        if (!(key == Utf8.class))
          throw new AvroTypeException("Map key class not Utf8: "+key);
        return Schema.createMap(createSchema(valuenames));
      } else {
        return createSchema(rawnames);
      }
    } else if (type instanceof Class) {               // class
      Class c = (Class)type;
      String fullName = c.getName();
      Schema schema = names.get(fullName);
      if (schema == null)
        try {
          schema = (Schema)(c.getDeclaredField("SCHEMA$").get(null));
        } catch (NoSuchFieldException e) {
          throw new AvroRuntimeException(e);
        } catch (IllegalAccessException e) {
          throw new AvroRuntimeException(e);
        }
      names.put(fullNameschema);
      return schema;
    }
    throw new AvroTypeException("Unknown type: "+type);
  }

  
Return the protocol for a Java interface.
  public Protocol getProtocol(Class iface) {
    try {
      return (Protocol)(iface.getDeclaredField("PROTOCOL").get(null));
    } catch (NoSuchFieldException e) {
      throw new AvroRuntimeException(e);
    } catch (IllegalAccessException e) {
      throw new AvroRuntimeException(e);
    }
  }
  public int compare(Object o1Object o2Schema s) {
    switch (s.getType()) {
    case :
      return ((Enum)o1).ordinal() - ((Enum)o2).ordinal();
    default:
      return super.compare(o1o2s);
    }
  }
New to GrepCode? Check out our FAQ X