private PropertyData()

in jmx/jmx-core/src/main/java/org/apache/aries/jmx/codec/PropertyData.java [85:151]


    private PropertyData(String key, T value, String preservedBaseType) throws IllegalArgumentException {
        if (key == null) {
            throw new IllegalArgumentException("Argument key cannot be null");
        }
        if (value == null) {
            throw new IllegalArgumentException("Argument value cannot be null");
        }
        this.key = key;
        this.value = value;
        Class<T> type = (Class<T>) value.getClass();
        if (type.isArray()) {
            this.encodedType = ARRAY_OF + type.getComponentType().getSimpleName();
            StringBuilder builder = new StringBuilder();
            int length = Array.getLength(value);
            boolean useDelimiter = false;
            for (int i = 0; i < length; i++) {
                if (useDelimiter) {
                    builder.append(",");
                } else {
                    useDelimiter = true;
                }
                builder.append(Array.get(value, i));
            }
            this.encodedValue = builder.toString();
        } else if (type.equals(Vector.class)) {
            Vector<?> vector = (Vector<?>) value;
            Class<? extends Object> componentType = Object.class;
            if (vector.size() > 0) {
                componentType = vector.firstElement().getClass();
            }
            this.encodedType = VECTOR_OF + componentType.getSimpleName();
            StringBuilder builder = new StringBuilder();
            Vector<?> valueVector = (Vector<?>) value;
            boolean useDelimiter = false;
            for (Object val : valueVector) {
                if (useDelimiter) {
                    builder.append(",");
                } else {
                    useDelimiter = true;
                }
                builder.append(val);
            }
            this.encodedValue = builder.toString();
        } else if (List.class.isAssignableFrom(type)) {
            // Lists are encoded as Arrays...
            List<?> list = (List<?>) value;
            Class<?> componentType = Object.class;
            if (list.size() > 0)
                componentType = list.get(0).getClass();

            this.encodedType = ARRAY_OF + componentType.getSimpleName();
            StringBuilder builder = new StringBuilder();
            boolean useDelimiter = false;
            for (Object o : list) {
                if (useDelimiter) {
                    builder.append(",");
                } else {
                    useDelimiter = true;
                }
                builder.append(o);
            }
            this.encodedValue = builder.toString();
        } else {
            this.encodedType = (preservedBaseType == null) ? type.getSimpleName() : preservedBaseType;
            this.encodedValue = value.toString();
        }
    }