Package org.springframework.expression

Examples of org.springframework.expression.TypedValue


  @Override
  protected ValueRef getValueRef(ExpressionState state) throws EvaluationException {
    if (getChildCount()==1) {
      return children[0].getValueRef(state);
    }
    TypedValue result = null;
    SpelNodeImpl nextNode = null;
    try {
      nextNode = children[0];
      result = nextNode.getValueInternal(state);
      int cc = getChildCount();
View Full Code Here


  private final TypedValue value;

  IntLiteral(String payload, int pos, int value) {
    super(payload, pos);
    this.value = new TypedValue(value);
  }
View Full Code Here

   */
  private TypedValue createNewInstance(ExpressionState state) throws EvaluationException {
    Object[] arguments = new Object[getChildCount() - 1];
    List<TypeDescriptor> argumentTypes = new ArrayList<TypeDescriptor>(getChildCount() - 1);
    for (int i = 0; i < arguments.length; i++) {
      TypedValue childValue = this.children[i + 1].getValueInternal(state);
      Object value = childValue.getValue();
      arguments[i] = value;
      argumentTypes.add(TypeDescriptor.forObject(value));
    }

    ConstructorExecutor executorToUse = this.cachedExecutor;
View Full Code Here

      }
      TypeConverter typeConverter = state.getEvaluationContext().getTypeConverter();

      // Shortcut for 1 dimensional
      if (this.dimensions.length == 1) {
        TypedValue o = this.dimensions[0].getTypedValue(state);
        int arraySize = ExpressionUtils.toInt(typeConverter, o);
        newArray = Array.newInstance(componentType, arraySize);
      }
      else {
        // Multi-dimensional - hold onto your hat!
        int[] dims = new int[this.dimensions.length];
        for (int d = 0; d < this.dimensions.length; d++) {
          TypedValue o = this.dimensions[d].getTypedValue(state);
          dims[d] = ExpressionUtils.toInt(typeConverter, o);
        }
        newArray = Array.newInstance(componentType, dims);
      }
    }
    else {
      // There is an initializer
      if (this.dimensions.length > 1) {
        // There is an initializer but this is a multi-dimensional array (e.g. new int[][]{{1,2},{3,4}}) - this
        // is not currently supported
        throw new SpelEvaluationException(getStartPosition(),
            SpelMessage.MULTIDIM_ARRAY_INITIALIZER_NOT_SUPPORTED);
      }
      TypeConverter typeConverter = state.getEvaluationContext().getTypeConverter();
      InlineList initializer = (InlineList) getChild(1);
      // If a dimension was specified, check it matches the initializer length
      if (this.dimensions[0] != null) {
        TypedValue dValue = this.dimensions[0].getTypedValue(state);
        int i = ExpressionUtils.toInt(typeConverter, dValue);
        if (i != initializer.getChildCount()) {
          throw new SpelEvaluationException(getStartPosition(), SpelMessage.INITIALIZER_LENGTH_INCORRECT);
        }
      }
      // Build the array and populate it
      int arraySize = initializer.getChildCount();
      newArray = Array.newInstance(componentType, arraySize);
      if (arrayTypeCode == TypeCode.OBJECT) {
        populateReferenceTypeArray(state, newArray, typeConverter, initializer, componentType);
      }
      else if (arrayTypeCode == TypeCode.INT) {
        populateIntArray(state, newArray, typeConverter, initializer);
      }
      else if (arrayTypeCode == TypeCode.BOOLEAN) {
        populateBooleanArray(state, newArray, typeConverter, initializer);
      }
      else if (arrayTypeCode == TypeCode.CHAR) {
        populateCharArray(state, newArray, typeConverter, initializer);
      }
      else if (arrayTypeCode == TypeCode.LONG) {
        populateLongArray(state, newArray, typeConverter, initializer);
      }
      else if (arrayTypeCode == TypeCode.SHORT) {
        populateShortArray(state, newArray, typeConverter, initializer);
      }
      else if (arrayTypeCode == TypeCode.DOUBLE) {
        populateDoubleArray(state, newArray, typeConverter, initializer);
      }
      else if (arrayTypeCode == TypeCode.FLOAT) {
        populateFloatArray(state, newArray, typeConverter, initializer);
      }
      else if (arrayTypeCode == TypeCode.BYTE) {
        populateByteArray(state, newArray, typeConverter, initializer);
      }
      else {
        throw new IllegalStateException(arrayTypeCode.name());
      }
    }
    return new TypedValue(newArray);
  }
View Full Code Here

  private void populateByteArray(ExpressionState state, Object newArray, TypeConverter typeConverter,
      InlineList initializer) {
    byte[] newByteArray = (byte[]) newArray;
    for (int i = 0; i < newByteArray.length; i++) {
      TypedValue typedValue = initializer.getChild(i).getTypedValue(state);
      newByteArray[i] = ExpressionUtils.toByte(typeConverter, typedValue);
    }
  }
View Full Code Here

  private void populateFloatArray(ExpressionState state, Object newArray, TypeConverter typeConverter,
      InlineList initializer) {
    float[] newFloatArray = (float[]) newArray;
    for (int i = 0; i < newFloatArray.length; i++) {
      TypedValue typedValue = initializer.getChild(i).getTypedValue(state);
      newFloatArray[i] = ExpressionUtils.toFloat(typeConverter, typedValue);
    }
  }
View Full Code Here

  private void populateDoubleArray(ExpressionState state, Object newArray, TypeConverter typeConverter,
      InlineList initializer) {
    double[] newDoubleArray = (double[]) newArray;
    for (int i = 0; i < newDoubleArray.length; i++) {
      TypedValue typedValue = initializer.getChild(i).getTypedValue(state);
      newDoubleArray[i] = ExpressionUtils.toDouble(typeConverter, typedValue);
    }
  }
View Full Code Here

  private void populateShortArray(ExpressionState state, Object newArray,
      TypeConverter typeConverter, InlineList initializer) {
    short[] newShortArray = (short[]) newArray;
    for (int i = 0; i < newShortArray.length; i++) {
      TypedValue typedValue = initializer.getChild(i).getTypedValue(state);
      newShortArray[i] = ExpressionUtils.toShort(typeConverter, typedValue);
    }
  }
View Full Code Here

  private void populateLongArray(ExpressionState state, Object newArray, TypeConverter typeConverter,
      InlineList initializer) {
    long[] newLongArray = (long[]) newArray;
    for (int i = 0; i < newLongArray.length; i++) {
      TypedValue typedValue = initializer.getChild(i).getTypedValue(state);
      newLongArray[i] = ExpressionUtils.toLong(typeConverter, typedValue);
    }
  }
View Full Code Here

  private void populateCharArray(ExpressionState state, Object newArray, TypeConverter typeConverter,
      InlineList initializer) {
    char[] newCharArray = (char[]) newArray;
    for (int i = 0; i < newCharArray.length; i++) {
      TypedValue typedValue = initializer.getChild(i).getTypedValue(state);
      newCharArray[i] = ExpressionUtils.toChar(typeConverter, typedValue);
    }
  }
View Full Code Here

TOP

Related Classes of org.springframework.expression.TypedValue

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.