Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright 2015-2016 Amazon Technologies, Inc.
*
* Licensed 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://aws.amazon.com/apache2.0
*
* This file 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 com.amazonaws.services.dynamodbv2.datamodeling;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.amazonaws.annotation.SdkInternalApi;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAnnotationRegistry.AnnotationMap;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAutoGeneratorRegistry.Generator;;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig.SaveBehavior;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBReflectionRegistry.BeanProperty;
import com.amazonaws.services.dynamodbv2.datamodeling.marshallers.BooleanToBooleanMarshaller;
import com.amazonaws.services.dynamodbv2.datamodeling.marshallers.CustomMarshaller;
import com.amazonaws.services.dynamodbv2.datamodeling.unmarshallers.CustomUnmarshaller;
/**
* Reflection assistant for {@link DynamoDBMapper}
*/
@SdkInternalApi
final class DynamoDBMappingsRegistry {
/**
* The logging utility.
*/
private static final Log log = LogFactory.getLog(DynamoDBMappingsRegistry.class);
/**
* The default instance.
*/
private static final DynamoDBMappingsRegistry INSTANCE = new DynamoDBMappingsRegistry();
/**
* Gets the default instance.
* @return The default instance.
*/
static final DynamoDBMappingsRegistry instance() {
return INSTANCE;
}
/**
* The cache of class to mapping definition.
*/
private final ConcurrentMap, Mappings> mappings = new ConcurrentHashMap, Mappings>();
/**
* The reflection registry.
*/
private final DynamoDBReflectionRegistry reflectionRegistry = new DynamoDBReflectionRegistry();
/**
* The annotation registry.
*/
private final DynamoDBAnnotationRegistry annotationRegistry = new DynamoDBAnnotationRegistry();
/**
* The auto-generator registry.
*/
private final DynamoDBAutoGeneratorRegistry generatorRegistry = new DynamoDBAutoGeneratorRegistry();
/**
* Gets the mapping definition for a given class.
* @param clazz The class.
* @return The mapping definition.
*/
final Mappings mappingsOf(final Class> clazz) {
if (!mappings.containsKey(clazz)) {
mappings.putIfAbsent(clazz, new Mappings(clazz, this));
}
return mappings.get(clazz);
}
/**
* Gets the mapping definition for a given method.
* @param method The method.
* @return The mapping definition.
*/
final Mapping mappingOf(final Method method) {
return mappingsOf(method.getDeclaringClass()).getMapping(method);
}
/**
* Get the collection of mappings for the given clazz.
* @param clazz The class.
* @param mappings The mappings.
* @return The mappings.
*/
private final Collection map(final Class> clazz, final Mappings mappings) {
final Collection properties = reflectionRegistry.beanPropertiesOf(clazz);
final Collection map = new ArrayList(properties.size());
for (final BeanProperty property : properties) {
if (!clazz.equals(property.getDeclaringType())) {
final AnnotationMap annotations = annotationRegistry.annotationsOf(property.getDeclaringType());
if (!annotations.isTable() && !annotations.isDocument()) {
continue;
}
}
final AnnotationMap annotations = annotationRegistry.annotationsOf(property.getGetter(), property.getField());
if (annotations.isIgnore()) {
continue;
}
final Generator