예제 #1
0
 /**
  * 是否数值
  *
  * @param clazz
  * @return
  */
 public static boolean isNumber(Class<?> clazz) {
   return (clazz != null)
       && ((Byte.TYPE.isAssignableFrom(clazz))
           || (Short.TYPE.isAssignableFrom(clazz))
           || (Integer.TYPE.isAssignableFrom(clazz))
           || (Long.TYPE.isAssignableFrom(clazz))
           || (Float.TYPE.isAssignableFrom(clazz))
           || (Double.TYPE.isAssignableFrom(clazz))
           || (Number.class.isAssignableFrom(clazz)));
 }
예제 #2
0
 /** Tests if Class represents a primitive number or wrapper.<br> */
 public static boolean isNumber(Class clazz) {
   return clazz != null
       && (Byte.TYPE.isAssignableFrom(clazz)
           || Short.TYPE.isAssignableFrom(clazz)
           || Integer.TYPE.isAssignableFrom(clazz)
           || Long.TYPE.isAssignableFrom(clazz)
           || Float.TYPE.isAssignableFrom(clazz)
           || Double.TYPE.isAssignableFrom(clazz)
           || Number.class.isAssignableFrom(clazz));
 }
예제 #3
0
 private boolean compare_PrimitiveArray(
     int operation, Class<?> type, Object primarray, Object value2) {
   if (Integer.TYPE.isAssignableFrom(type)) {
     int[] array = (int[]) primarray;
     for (int value1 : array) {
       if (compare_Integer(operation, value1, value2)) {
         return true;
       }
     }
     return false;
   }
   if (Long.TYPE.isAssignableFrom(type)) {
     long[] array = (long[]) primarray;
     for (long value1 : array) {
       if (compare_Long(operation, value1, value2)) {
         return true;
       }
     }
     return false;
   }
   if (Byte.TYPE.isAssignableFrom(type)) {
     byte[] array = (byte[]) primarray;
     for (byte value1 : array) {
       if (compare_Byte(operation, value1, value2)) {
         return true;
       }
     }
     return false;
   }
   if (Short.TYPE.isAssignableFrom(type)) {
     short[] array = (short[]) primarray;
     for (short value1 : array) {
       if (compare_Short(operation, value1, value2)) {
         return true;
       }
     }
     return false;
   }
   if (Character.TYPE.isAssignableFrom(type)) {
     char[] array = (char[]) primarray;
     for (char value1 : array) {
       if (compare_Character(operation, value1, value2)) {
         return true;
       }
     }
     return false;
   }
   if (Float.TYPE.isAssignableFrom(type)) {
     float[] array = (float[]) primarray;
     for (float value1 : array) {
       if (compare_Float(operation, value1, value2)) {
         return true;
       }
     }
     return false;
   }
   if (Double.TYPE.isAssignableFrom(type)) {
     double[] array = (double[]) primarray;
     for (double value1 : array) {
       if (compare_Double(operation, value1, value2)) {
         return true;
       }
     }
     return false;
   }
   if (Boolean.TYPE.isAssignableFrom(type)) {
     boolean[] array = (boolean[]) primarray;
     for (boolean value1 : array) {
       if (compare_Boolean(operation, value1, value2)) {
         return true;
       }
     }
     return false;
   }
   return false;
 }
예제 #4
0
 private boolean compare_PrimitiveArray(
     int operation, Class type, Object primarray, Object value2) {
   if (Integer.TYPE.isAssignableFrom(type)) {
     int[] array = (int[]) primarray;
     for (int i = 0, size = array.length; i < size; i++) {
       if (compare_Integer(operation, array[i], value2)) {
         return true;
       }
     }
     return false;
   }
   if (Long.TYPE.isAssignableFrom(type)) {
     long[] array = (long[]) primarray;
     for (int i = 0, size = array.length; i < size; i++) {
       if (compare_Long(operation, array[i], value2)) {
         return true;
       }
     }
     return false;
   }
   if (Byte.TYPE.isAssignableFrom(type)) {
     byte[] array = (byte[]) primarray;
     for (int i = 0, size = array.length; i < size; i++) {
       if (compare_Byte(operation, array[i], value2)) {
         return true;
       }
     }
     return false;
   }
   if (Short.TYPE.isAssignableFrom(type)) {
     short[] array = (short[]) primarray;
     for (int i = 0, size = array.length; i < size; i++) {
       if (compare_Short(operation, array[i], value2)) {
         return true;
       }
     }
     return false;
   }
   if (Character.TYPE.isAssignableFrom(type)) {
     char[] array = (char[]) primarray;
     for (int i = 0, size = array.length; i < size; i++) {
       if (compare_Character(operation, array[i], value2)) {
         return true;
       }
     }
     return false;
   }
   if (Float.TYPE.isAssignableFrom(type)) {
     float[] array = (float[]) primarray;
     for (int i = 0, size = array.length; i < size; i++) {
       if (compare_Float(operation, array[i], value2)) {
         return true;
       }
     }
     return false;
   }
   if (Double.TYPE.isAssignableFrom(type)) {
     double[] array = (double[]) primarray;
     for (int i = 0, size = array.length; i < size; i++) {
       if (compare_Double(operation, array[i], value2)) {
         return true;
       }
     }
     return false;
   }
   if (Boolean.TYPE.isAssignableFrom(type)) {
     boolean[] array = (boolean[]) primarray;
     for (int i = 0, size = array.length; i < size; i++) {
       if (compare_Boolean(operation, array[i], value2)) {
         return true;
       }
     }
     return false;
   }
   return false;
 }
 public Coercer<Float> accept(final Class<?> clazz) {
   if (Float.class.isAssignableFrom(clazz) || Float.TYPE.isAssignableFrom(clazz)) {
     return DefaultCoercibles.FLOAT_COERCER;
   }
   return null;
 }
예제 #6
0
    private static void linkGlobalProperty(Class clz, Map<String, String> propertiesMap) {
        for (Field f : clz.getDeclaredFields()) {
            GlobalProperty at = f.getAnnotation(GlobalProperty.class);
            if (at == null) {
                continue;
            }

            if (!Modifier.isStatic(f.getModifiers())) {
                throw new CloudRuntimeException(String.format("%s.%s is annotated by @GlobalProperty but it's not defined with static modifier", clz.getName(), f.getName()));
            }

            Object valueToSet = null;
            String name = at.name();
            if (Map.class.isAssignableFrom(f.getType())) {
                Map ret = linkGlobalPropertyMap(name);
                if (ret.isEmpty() && at.required()) {
                    throw new IllegalArgumentException(String.format("A required global property[%s] missing in zstack.properties", name));
                }
                valueToSet = ret;
            }  else if (List.class.isAssignableFrom(f.getType())) {
                List ret = linkGlobalPropertyList(name);
                if (ret.isEmpty() && at.required()) {
                    throw new IllegalArgumentException(String.format("A required global property[%s] missing in zstack.properties", name));
                }
                valueToSet = ret;
            } else {
                String value = getGlobalProperty(name);
                if (value == null && at.defaultValue().equals(GlobalProperty.DEFAULT_NULL_STRING) && at.required()) {
                    throw new IllegalArgumentException(String.format("A required global property[%s] missing in zstack.properties", name));
                }

                if (value == null) {
                    value = at.defaultValue();
                }

                if (GlobalProperty.DEFAULT_NULL_STRING.equals(value)) {
                    value = null;
                }

                if (value != null) {
                    value = StringTemplate.subsititute(value, propertiesMap);
                }

                if (Integer.class.isAssignableFrom(f.getType()) || Integer.TYPE.isAssignableFrom(f.getType())) {
                    valueToSet =  TypeUtils.stringToValue(value, Integer.class, 0);
                } else if (Long.class.isAssignableFrom(f.getType()) || Long.TYPE.isAssignableFrom(f.getType())) {
                    valueToSet =  TypeUtils.stringToValue(value, Long.class, 0L);
                } else if (Float.class.isAssignableFrom(f.getType()) || Float.TYPE.isAssignableFrom(f.getType())) {
                    valueToSet = TypeUtils.stringToValue(value, Float.class, 0F);
                } else if (Double.class.isAssignableFrom(f.getType()) || Double.TYPE.isAssignableFrom(f.getType())) {
                    valueToSet = TypeUtils.stringToValue(value, Double.class, 0D);
                } else if (String.class.isAssignableFrom(f.getType())) {
                    valueToSet = value;
                } else if (Boolean.class.isAssignableFrom(f.getType()) || Boolean.TYPE.isAssignableFrom(f.getType())) {
                    valueToSet = TypeUtils.stringToValue(value, Boolean.class);
                } else {
                    throw new CloudRuntimeException(String.format("%s.%s of type[%s] is unsupported by global property. try use Platform.getGlobalProperty() and parse by yourself",
                            clz.getName(), f.getName(), f.getType().getName()));
                }
            }

            f.setAccessible(true);
            try {
                f.set(null, valueToSet);
                globalProperties.put(name, valueToSet == null ? "null" : valueToSet.toString());
                logger.debug(String.format("linked global property[%s.%s], value: %s", clz.getName(), f.getName(), valueToSet));
            } catch (IllegalAccessException e) {
                throw new CloudRuntimeException(String.format("unable to link global property[%s.%s]", clz.getName(), f.getName()), e);
            }
        }
    }
예제 #7
0
 private static void assertExpectedPrimitiveArrays(
     String message,
     Object expected,
     Object actual,
     Class expectedInnerType,
     Class actualInnerType) {
   if (Boolean.TYPE.isAssignableFrom(expectedInnerType)) {
     if (Boolean.TYPE.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (boolean[]) expected, (boolean[]) actual);
     } else if (Boolean.class.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (boolean[]) expected, (Boolean[]) actual);
     } else if (!actualInnerType.isPrimitive()) {
       ArrayAssertions.assertEquals(message, (boolean[]) expected, (Object[]) actual);
     } else {
       failNotEquals(message, expected, actual);
     }
   } else if (Byte.TYPE.isAssignableFrom(expectedInnerType)) {
     if (Byte.TYPE.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (byte[]) expected, (byte[]) actual);
     } else if (Byte.class.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (byte[]) expected, (Byte[]) actual);
     } else if (!actualInnerType.isPrimitive()) {
       ArrayAssertions.assertEquals(message, (byte[]) expected, (Object[]) actual);
     } else {
       failNotEquals(message, expected, actual);
     }
   } else if (Short.TYPE.isAssignableFrom(expectedInnerType)) {
     if (Short.TYPE.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (short[]) expected, (short[]) actual);
     } else if (Short.class.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (short[]) expected, (Short[]) actual);
     } else if (!actualInnerType.isPrimitive()) {
       ArrayAssertions.assertEquals(message, (short[]) expected, (Object[]) actual);
     } else {
       failNotEquals(message, expected, actual);
     }
   } else if (Integer.TYPE.isAssignableFrom(expectedInnerType)) {
     if (Integer.TYPE.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (int[]) expected, (int[]) actual);
     } else if (Integer.class.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (int[]) expected, (Integer[]) actual);
     } else if (!actualInnerType.isPrimitive()) {
       ArrayAssertions.assertEquals(message, (int[]) expected, (Object[]) actual);
     } else {
       failNotEquals(message, expected, actual);
     }
   } else if (Long.TYPE.isAssignableFrom(expectedInnerType)) {
     if (Long.TYPE.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (long[]) expected, (long[]) actual);
     } else if (Long.class.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (long[]) expected, (Long[]) actual);
     } else if (!actualInnerType.isPrimitive()) {
       ArrayAssertions.assertEquals(message, (long[]) expected, (Object[]) actual);
     } else {
       failNotEquals(message, expected, actual);
     }
   } else if (Float.TYPE.isAssignableFrom(expectedInnerType)) {
     if (Float.TYPE.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (float[]) expected, (float[]) actual);
     } else if (Float.class.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (float[]) expected, (Float[]) actual);
     } else if (!actualInnerType.isPrimitive()) {
       ArrayAssertions.assertEquals(message, (float[]) expected, (Object[]) actual);
     } else {
       failNotEquals(message, expected, actual);
     }
   } else if (Double.TYPE.isAssignableFrom(expectedInnerType)) {
     if (Double.TYPE.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (double[]) expected, (double[]) actual);
     } else if (Double.class.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (double[]) expected, (Double[]) actual);
     } else if (!actualInnerType.isPrimitive()) {
       ArrayAssertions.assertEquals(message, (double[]) expected, (Object[]) actual);
     } else {
       failNotEquals(message, expected, actual);
     }
   } else if (Character.TYPE.isAssignableFrom(expectedInnerType)) {
     if (Character.TYPE.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (char[]) expected, (char[]) actual);
     } else if (Character.class.isAssignableFrom(actualInnerType)) {
       ArrayAssertions.assertEquals(message, (char[]) expected, (Character[]) actual);
     } else if (!actualInnerType.isPrimitive()) {
       ArrayAssertions.assertEquals(message, (char[]) expected, (Object[]) actual);
     } else {
       failNotEquals(message, expected, actual);
     }
   }
 }