Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* Copyright (c) 2008, Nathan Sweet
   * All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
   * conditions are met:
   * 
   * - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
   * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
   * disclaimer in the documentation and/or other materials provided with the distribution.
  * - Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived
  * from this software without specific prior written permission.
  * 
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
  * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
 
 package com.esotericsoftware.kryo.serializers;
 
 import static com.esotericsoftware.minlog.Log.TRACE;
 import static com.esotericsoftware.minlog.Log.trace;
 
 import java.util.Map;
 
A few utility methods for processing field annotations.

Author(s):
Roman Levenstein <romixlev@gmail.com>
 
 	}

Process annotated fields and set serializers according to the provided annotation.

 
 	public void processAnnotatedFields (FieldSerializer fieldSerializer) {
 		CachedField[] fields = fieldSerializer.getFields();
 		for (int i = 0, n = fields.lengthi < ni++) {
 			Field field = fields[i].getField();
 
 			// Set a specific serializer for a particular field
 			if (field.isAnnotationPresent(FieldSerializer.Bind.class)) {
 				Class<? extends SerializerserializerClass = field.getAnnotation(FieldSerializer.Bind.class).value();
 				Serializer s = ReflectionSerializerFactory.makeSerializer(fieldSerializer.getKryo(), serializerClassfield.getClass());
 				fields[i].setSerializer(s);
 			}
 
 
 			}
 			// Set a specific collection serializer for a particular field
 				if (fields[i]. != null)
 					throw new RuntimeException("CollectionSerialier.Bind cannot be used with field "
 						+ fields[i].getField().getDeclaringClass().getName() + "." + fields[i].getField().getName()
 						+ ", because it has a serializer already.");
 				CollectionSerializer.BindCollection annotation = field
 				if (Collection.class.isAssignableFrom(fields[i]..getType())) {
 					Class<? extends SerializerelementSerializerClass = annotation.elementSerializer();
 					if (elementSerializerClass == Serializer.classelementSerializerClass = null;
 					Serializer elementSerializer = (elementSerializerClass == null) ? null : ReflectionSerializerFactory
 						.makeSerializer(fieldSerializer.getKryo(), elementSerializerClassfield.getClass());
 					boolean elementsCanBeNull = annotation.elementsCanBeNull();
 					Class<?> elementClass = annotation.elementClass();
 					if (elementClass == Object.classelementClass = null;
 					CollectionSerializer serializer = new CollectionSerializer();
 					serializer.setElementsCanBeNull(elementsCanBeNull);
 					serializer.setElementClass(elementClasselementSerializer);
 					fields[i].setSerializer(serializer);
 				} else {
 					throw new RuntimeException(
 						"CollectionSerialier.Bind should be used only with fields implementing java.util.Collection, but field "
fields[i].getField().getDeclaringClass().getName() + "." + fields[i].getField().getName()
" does not implement it.");
				}
			}
			// Set a specific map serializer for a particular field
				if (fields[i]. != null)
					throw new RuntimeException("MapSerialier.Bind cannot be used with field "
fields[i].getField().getDeclaringClass().getName() + "." + fields[i].getField().getName()
", because it has a serializer already.");
				if (Map.class.isAssignableFrom(fields[i]..getType())) {
					Class<? extends SerializervalueSerializerClass = annotation.valueSerializer();
					Class<? extends SerializerkeySerializerClass = annotation.keySerializer();
					if (valueSerializerClass == Serializer.classvalueSerializerClass = null;
					if (keySerializerClass == Serializer.classkeySerializerClass = null;
					Serializer valueSerializer = (valueSerializerClass == null) ? null : ReflectionSerializerFactory.makeSerializer(
						fieldSerializer.getKryo(), valueSerializerClassfield.getClass());
					Serializer keySerializer = (keySerializerClass == null) ? null : ReflectionSerializerFactory.makeSerializer(
						fieldSerializer.getKryo(), keySerializerClassfield.getClass());
					boolean valuesCanBeNull = annotation.valuesCanBeNull();
					boolean keysCanBeNull = annotation.keysCanBeNull();
					Class<?> keyClass = annotation.keyClass();
					Class<?> valueClass = annotation.valueClass();
					if (keyClass == Object.classkeyClass = null;
					if (valueClass == Object.classvalueClass = null;
					MapSerializer serializer = new MapSerializer();
					serializer.setKeysCanBeNull(keysCanBeNull);
					serializer.setValuesCanBeNull(valuesCanBeNull);
					serializer.setKeyClass(keyClasskeySerializer);
					serializer.setValueClass(valueClassvalueSerializer);
					fields[i].setSerializer(serializer);
else {
					throw new RuntimeException(
						"MapSerialier.Bind should be used only with fields implementing java.util.Map, but field "
fields[i].getField().getDeclaringClass().getName() + "." + fields[i].getField().getName()
" does not implement it.");
				}
			}
		}
	}
New to GrepCode? Check out our FAQ X