Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014-2015 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.util.Map;

Helper class for incrementing version attributes.
 
 
     private final Map<MethodIncrementorcache =
             new HashMap<MethodIncrementor>();

    
Increments a version attribute.

Parameters:
getter the attribute getter method
object the current value of the attribute
Returns:
the incremented value of the attribute
 
     public Object increment(Method getterObject object) {
         Incrementor incrementor = getIncrementor(getter);
         return incrementor.increment(object);
     }
 
     private Incrementor getIncrementor(Method getter) {
         synchronized () {
             Incrementor result = .get(getter);
             if (result != null) {
                 return result;
             }
 
             Class<?> returnType = getter.getReturnType();
             if (matches(returnTypeBigInteger.class)) {
                 result = ;
 
             } else if (matches(returnTypeLong.classlong.class)) {
                 result = ;
 
             } else if (matches(returnTypeInteger.classint.class)) {
                 result = ;
 
             } else if (matches(returnTypeShort.classshort.class)) {
                 result = ;
 
             } else if (matches(returnTypeByte.classbyte.class)) {
                 result = ;
 
             } else {
                 throw new DynamoDBMappingException(
                         "Unsupported parameter type for "
                         + DynamoDBVersionAttribute.class + ": " + returnType
                         + ". Must be a whole-number type.");
             }
 
             .put(getterresult);
             return result;
         }
     }
 
     private static boolean matches(Class<?> needleClass<?>... haystack) {
         for (Class<?> clazz : haystack) {
             if (clazz.isAssignableFrom(needle)) {
                 return true;
             }
         }
         return false;
     }
 
     private static interface Incrementor {
         Object increment(Object o);
     }
 
     private static final Incrementor BIG_INTEGER = new Incrementor() {
         @Override
         public Object increment(Object o) {
             if (o == null) {
                 return .;
             }
             return ((BigIntegero).add(.);
         }
     };
 
    private static final Incrementor LONG = new Incrementor() {
        @Override
        public Object increment(Object o) {
            if (o == null) {
                return Long.valueOf(1);
            }
            long next = ((Longo) + 1L;
            return next;
        }
    };
    private static final Incrementor INTEGER = new Incrementor() {
        @Override
        public Object increment(Object o) {
            if (o == null) {
                return Integer.valueOf(1);
            }
            int next = ((Integero) + 1;
            return next;
        }
    };
    private static final Incrementor SHORT = new Incrementor() {
        @Override
        public Object increment(Object o) {
            if (o == null) {
                return Short.valueOf((short) 1);
            }
            short next = (short) (((Shorto) + 1);
            return next;
        }
    };
    private static final Incrementor BYTE = new Incrementor() {
        @Override
        public Object increment(Object o) {
            if (o == null) {
                return Byte.valueOf((byte) 1);
            }
            // Mod MAX_VALUE since that's what the DynamoDBReflector used to
            // do.
            byte next = (byte) ((((Byteo) + 1) % .);
            return next;
        }
    };
New to GrepCode? Check out our FAQ X