Example usage for org.eclipse.jdt.core IMemberValuePair K_QUALIFIED_NAME

List of usage examples for org.eclipse.jdt.core IMemberValuePair K_QUALIFIED_NAME

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IMemberValuePair K_QUALIFIED_NAME.

Prototype

int K_QUALIFIED_NAME

To view the source code for org.eclipse.jdt.core IMemberValuePair K_QUALIFIED_NAME.

Click Source Link

Document

Constant indicating that the value is a qualified name represented by a String .

Usage

From source file:at.bestsolution.fxide.jdt.text.viewersupport.JavaElementLabelComposer.java

License:Open Source License

private void appendAnnotationValue(IAnnotation annotation, Object value, int valueKind, long flags)
        throws JavaModelException {
    // Note: To be bug-compatible with Javadoc from Java 5/6/7, we currently don't escape HTML tags in String-valued annotations.
    if (value instanceof Object[]) {
        fBuffer.append('{');
        Object[] values = (Object[]) value;
        for (int j = 0; j < values.length; j++) {
            if (j > 0)
                fBuffer.append(JavaElementLabels.COMMA_STRING);
            value = values[j];/*from   ww  w.j av a 2 s  .c om*/
            appendAnnotationValue(annotation, value, valueKind, flags);
        }
        fBuffer.append('}');
    } else {
        switch (valueKind) {
        case IMemberValuePair.K_CLASS:
            appendTypeSignatureLabel(annotation, Signature.createTypeSignature((String) value, false), flags);
            fBuffer.append(".class"); //$NON-NLS-1$
            break;
        case IMemberValuePair.K_QUALIFIED_NAME:
            String name = (String) value;
            int lastDot = name.lastIndexOf('.');
            if (lastDot != -1) {
                String type = name.substring(0, lastDot);
                String field = name.substring(lastDot + 1);
                appendTypeSignatureLabel(annotation, Signature.createTypeSignature(type, false), flags);
                fBuffer.append('.');
                fBuffer.append(getMemberName(annotation, type, field));
                break;
            }
            //            case IMemberValuePair.K_SIMPLE_NAME: // can't implement, since parent type is not known
            //$FALL-THROUGH$
        case IMemberValuePair.K_ANNOTATION:
            appendAnnotationLabel((IAnnotation) value, flags);
            break;
        case IMemberValuePair.K_STRING:
            fBuffer.append(ASTNodes.getEscapedStringLiteral((String) value));
            break;
        case IMemberValuePair.K_CHAR:
            fBuffer.append(ASTNodes.getEscapedCharacterLiteral(((Character) value).charValue()));
            break;
        default:
            fBuffer.append(String.valueOf(value));
            break;
        }
    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.ClassFileInfo.java

License:Open Source License

private IMemberValuePair[] getTargetElementTypes(long tagBits) {
    ArrayList values = new ArrayList();
    String elementType = new String(
            CharOperation.concatWith(TypeConstants.JAVA_LANG_ANNOTATION_ELEMENTTYPE, '.')) + '.';
    if ((tagBits & TagBits.AnnotationForType) != 0) {
        values.add(elementType + new String(TypeConstants.TYPE));
    }//from w ww .j  a v  a 2  s. c  om
    if ((tagBits & TagBits.AnnotationForField) != 0) {
        values.add(elementType + new String(TypeConstants.UPPER_FIELD));
    }
    if ((tagBits & TagBits.AnnotationForMethod) != 0) {
        values.add(elementType + new String(TypeConstants.UPPER_METHOD));
    }
    if ((tagBits & TagBits.AnnotationForParameter) != 0) {
        values.add(elementType + new String(TypeConstants.UPPER_PARAMETER));
    }
    if ((tagBits & TagBits.AnnotationForConstructor) != 0) {
        values.add(elementType + new String(TypeConstants.UPPER_CONSTRUCTOR));
    }
    if ((tagBits & TagBits.AnnotationForLocalVariable) != 0) {
        values.add(elementType + new String(TypeConstants.UPPER_LOCAL_VARIABLE));
    }
    if ((tagBits & TagBits.AnnotationForAnnotationType) != 0) {
        values.add(elementType + new String(TypeConstants.UPPER_ANNOTATION_TYPE));
    }
    if ((tagBits & TagBits.AnnotationForPackage) != 0) {
        values.add(elementType + new String(TypeConstants.UPPER_PACKAGE));
    }
    final Object value;
    if (values.size() == 0) {
        if ((tagBits & TagBits.AnnotationTarget) != 0)
            value = CharOperation.NO_STRINGS;
        else
            return Annotation.NO_MEMBER_VALUE_PAIRS;
    } else if (values.size() == 1) {
        value = values.get(0);
    } else {
        value = values.toArray(new String[values.size()]);
    }
    return new IMemberValuePair[] { new IMemberValuePair() {
        public int getValueKind() {
            return IMemberValuePair.K_QUALIFIED_NAME;
        }

        public Object getValue() {
            return value;
        }

        public String getMemberName() {
            return new String(TypeConstants.VALUE);
        }
    } };
}

From source file:com.codenvy.ide.ext.java.server.internal.core.ClassFileInfo.java

License:Open Source License

private IMemberValuePair[] getRetentionPolicy(long tagBits) {
    if ((tagBits & TagBits.AnnotationRetentionMASK) == 0)
        return Annotation.NO_MEMBER_VALUE_PAIRS;
    String retention = null;/*from   w  w w.j  a v a  2s  .  co  m*/
    if ((tagBits & TagBits.AnnotationRuntimeRetention) == TagBits.AnnotationRuntimeRetention) {
        // TagBits.AnnotationRuntimeRetention combines both TagBits.AnnotationClassRetention & TagBits.AnnotationSourceRetention
        retention = new String(
                CharOperation.concatWith(TypeConstants.JAVA_LANG_ANNOTATION_RETENTIONPOLICY, '.')) + '.'
                + new String(TypeConstants.UPPER_RUNTIME);
    } else if ((tagBits & TagBits.AnnotationSourceRetention) != 0) {
        retention = new String(
                CharOperation.concatWith(TypeConstants.JAVA_LANG_ANNOTATION_RETENTIONPOLICY, '.')) + '.'
                + new String(TypeConstants.UPPER_SOURCE);
    } else {
        retention = new String(
                CharOperation.concatWith(TypeConstants.JAVA_LANG_ANNOTATION_RETENTIONPOLICY, '.')) + '.'
                + new String(TypeConstants.UPPER_CLASS);
    }
    final String value = retention;
    return new IMemberValuePair[] { new IMemberValuePair() {
        public int getValueKind() {
            return IMemberValuePair.K_QUALIFIED_NAME;
        }

        public Object getValue() {
            return value;
        }

        public String getMemberName() {
            return new String(TypeConstants.VALUE);
        }
    } };
}

From source file:com.codenvy.ide.ext.java.server.internal.core.CompilationUnitStructureRequestor.java

License:Open Source License

protected Object getMemberValue(com.codenvy.ide.ext.java.server.internal.core.MemberValuePair memberValuePair,
        Expression expression) {/*from   ww w. jav  a 2 s  .com*/
    if (expression instanceof NullLiteral) {
        return null;
    } else if (expression instanceof Literal) {
        ((Literal) expression).computeConstant();
        return Util.getAnnotationMemberValue(memberValuePair, expression.constant);
    } else if (expression instanceof org.eclipse.jdt.internal.compiler.ast.Annotation) {
        org.eclipse.jdt.internal.compiler.ast.Annotation annotation = (org.eclipse.jdt.internal.compiler.ast.Annotation) expression;
        Object handle = acceptAnnotation(annotation, null, (JavaElement) this.handleStack.peek());
        memberValuePair.valueKind = IMemberValuePair.K_ANNOTATION;
        return handle;
    } else if (expression instanceof ClassLiteralAccess) {
        ClassLiteralAccess classLiteral = (ClassLiteralAccess) expression;
        char[] name = CharOperation.concatWith(classLiteral.type.getTypeName(), '.');
        memberValuePair.valueKind = IMemberValuePair.K_CLASS;
        return new String(name);
    } else if (expression instanceof QualifiedNameReference) {
        char[] qualifiedName = CharOperation.concatWith(((QualifiedNameReference) expression).tokens, '.');
        memberValuePair.valueKind = IMemberValuePair.K_QUALIFIED_NAME;
        return new String(qualifiedName);
    } else if (expression instanceof SingleNameReference) {
        char[] simpleName = ((SingleNameReference) expression).token;
        if (simpleName == RecoveryScanner.FAKE_IDENTIFIER) {
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            return null;
        }
        memberValuePair.valueKind = IMemberValuePair.K_SIMPLE_NAME;
        return new String(simpleName);
    } else if (expression instanceof ArrayInitializer) {
        memberValuePair.valueKind = -1; // modified below by the first call to getMemberValue(...)
        Expression[] expressions = ((ArrayInitializer) expression).expressions;
        int length = expressions == null ? 0 : expressions.length;
        Object[] values = new Object[length];
        for (int i = 0; i < length; i++) {
            int previousValueKind = memberValuePair.valueKind;
            Object value = getMemberValue(memberValuePair, expressions[i]);
            if (previousValueKind != -1 && memberValuePair.valueKind != previousValueKind) {
                // values are heterogeneous, value kind is thus unknown
                memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            }
            values[i] = value;
        }
        if (memberValuePair.valueKind == -1)
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return values;
    } else if (expression instanceof UnaryExpression) { // to deal with negative numerals (see bug - 248312)
        UnaryExpression unaryExpression = (UnaryExpression) expression;
        if ((unaryExpression.bits & ASTNode.OperatorMASK) >> ASTNode.OperatorSHIFT == OperatorIds.MINUS) {
            if (unaryExpression.expression instanceof Literal) {
                Literal subExpression = (Literal) unaryExpression.expression;
                subExpression.computeConstant();
                return Util.getNegativeAnnotationMemberValue(memberValuePair, subExpression.constant);
            }
        }
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    } else {
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.LocalVariable.java

License:Open Source License

private Object getAnnotationMemberValue(MemberValuePair memberValuePair, Expression expression,
        JavaElement parentElement) {//from   w  w  w  .  ja  va  2s.c  om
    if (expression instanceof NullLiteral) {
        return null;
    } else if (expression instanceof Literal) {
        ((Literal) expression).computeConstant();
        return Util.getAnnotationMemberValue(memberValuePair, expression.constant);
    } else if (expression instanceof org.eclipse.jdt.internal.compiler.ast.Annotation) {
        memberValuePair.valueKind = IMemberValuePair.K_ANNOTATION;
        return getAnnotation((org.eclipse.jdt.internal.compiler.ast.Annotation) expression, parentElement);
    } else if (expression instanceof ClassLiteralAccess) {
        ClassLiteralAccess classLiteral = (ClassLiteralAccess) expression;
        char[] typeName = CharOperation.concatWith(classLiteral.type.getTypeName(), '.');
        memberValuePair.valueKind = IMemberValuePair.K_CLASS;
        return new String(typeName);
    } else if (expression instanceof QualifiedNameReference) {
        char[] qualifiedName = CharOperation.concatWith(((QualifiedNameReference) expression).tokens, '.');
        memberValuePair.valueKind = IMemberValuePair.K_QUALIFIED_NAME;
        return new String(qualifiedName);
    } else if (expression instanceof SingleNameReference) {
        char[] simpleName = ((SingleNameReference) expression).token;
        if (simpleName == RecoveryScanner.FAKE_IDENTIFIER) {
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            return null;
        }
        memberValuePair.valueKind = IMemberValuePair.K_SIMPLE_NAME;
        return new String(simpleName);
    } else if (expression instanceof ArrayInitializer) {
        memberValuePair.valueKind = -1; // modified below by the first call to getMemberValue(...)
        Expression[] expressions = ((ArrayInitializer) expression).expressions;
        int length = expressions == null ? 0 : expressions.length;
        Object[] values = new Object[length];
        for (int i = 0; i < length; i++) {
            int previousValueKind = memberValuePair.valueKind;
            Object value = getAnnotationMemberValue(memberValuePair, expressions[i], parentElement);
            if (previousValueKind != -1 && memberValuePair.valueKind != previousValueKind) {
                // values are heterogeneous, value kind is thus unknown
                memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            }
            values[i] = value;
        }
        if (memberValuePair.valueKind == -1)
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return values;
    } else if (expression instanceof UnaryExpression) { //to deal with negative numerals (see bug - 248312)
        UnaryExpression unaryExpression = (UnaryExpression) expression;
        if ((unaryExpression.bits & ASTNode.OperatorMASK) >> ASTNode.OperatorSHIFT == OperatorIds.MINUS) {
            if (unaryExpression.expression instanceof Literal) {
                Literal subExpression = (Literal) unaryExpression.expression;
                subExpression.computeConstant();
                return Util.getNegativeAnnotationMemberValue(memberValuePair, subExpression.constant);
            }
        }
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    } else {
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.util.Util.java

License:Open Source License

public static Object getAnnotationMemberValue(JavaElement parent, JavaModelManager manager,
        MemberValuePair memberValuePair, Object binaryValue) {
    if (binaryValue instanceof Constant) {
        return getAnnotationMemberValue(memberValuePair, (Constant) binaryValue);
    } else if (binaryValue instanceof IBinaryAnnotation) {
        memberValuePair.valueKind = IMemberValuePair.K_ANNOTATION;
        return getAnnotation(parent, manager, (IBinaryAnnotation) binaryValue, memberValuePair.getMemberName());
    } else if (binaryValue instanceof ClassSignature) {
        memberValuePair.valueKind = IMemberValuePair.K_CLASS;
        char[] className = Signature.toCharArray(
                CharOperation.replaceOnCopy(((ClassSignature) binaryValue).getTypeName(), '/', '.'));
        return new String(className);
    } else if (binaryValue instanceof EnumConstantSignature) {
        memberValuePair.valueKind = IMemberValuePair.K_QUALIFIED_NAME;
        EnumConstantSignature enumConstant = (EnumConstantSignature) binaryValue;
        char[] enumName = Signature
                .toCharArray(CharOperation.replaceOnCopy(enumConstant.getTypeName(), '/', '.'));
        char[] qualifiedName = CharOperation.concat(enumName, enumConstant.getEnumConstantName(), '.');
        return new String(qualifiedName);
    } else if (binaryValue instanceof Object[]) {
        memberValuePair.valueKind = -1; // modified below by the first call to getMemberValue(...)
        Object[] binaryValues = (Object[]) binaryValue;
        int length = binaryValues.length;
        Object[] values = new Object[length];
        for (int i = 0; i < length; i++) {
            int previousValueKind = memberValuePair.valueKind;
            Object value = getAnnotationMemberValue(parent, manager, memberValuePair, binaryValues[i]);
            if (previousValueKind != -1 && memberValuePair.valueKind != previousValueKind) {
                // values are heterogeneous, value kind is thus unknown
                memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            }/*from w  w w.ja v a  2 s . com*/
            if (value instanceof Annotation) {
                Annotation annotation = (Annotation) value;
                for (int j = 0; j < i; j++) {
                    if (annotation.equals(values[j])) {
                        annotation.occurrenceCount++;
                    }
                }
            }
            values[i] = value;
        }
        if (memberValuePair.valueKind == -1)
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return values;
    } else {
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    }
}

From source file:com.codenvy.ide.ext.java.server.SourcesFromBytecodeGenerator.java

License:Open Source License

private void appendAnnotationValue(IAnnotation annotation, Object value, int valueKind, long flags,
        StringBuilder builder) throws JavaModelException {
    // Note: To be bug-compatible with Javadoc from Java 5/6/7, we currently don't escape HTML tags in String-valued annotations.
    if (value instanceof Object[]) {
        builder.append('{');
        Object[] values = (Object[]) value;
        for (int j = 0; j < values.length; j++) {
            if (j > 0)
                builder.append(JavaElementLabels.COMMA_STRING);
            value = values[j];/*  w  w  w  .j av a2 s  .co  m*/
            appendAnnotationValue(annotation, value, valueKind, flags, builder);
        }
        builder.append('}');
    } else {
        switch (valueKind) {
        case IMemberValuePair.K_CLASS:
            appendTypeSignatureLabel(annotation, Signature.createTypeSignature((String) value, false), flags,
                    builder);
            builder.append(".class"); //$NON-NLS-1$
            break;
        case IMemberValuePair.K_QUALIFIED_NAME:
            String name = (String) value;
            int lastDot = name.lastIndexOf('.');
            if (lastDot != -1) {
                String type = name.substring(0, lastDot);
                String field = name.substring(lastDot + 1);
                appendTypeSignatureLabel(annotation, Signature.createTypeSignature(type, false), flags,
                        builder);
                builder.append('.');
                builder.append(getMemberName(annotation, type, field));
                break;
            }
            //            case IMemberValuePair.K_SIMPLE_NAME: // can't implement, since parent type is not known
            //$FALL-THROUGH$
        case IMemberValuePair.K_ANNOTATION:
            appendAnnotationLabel((IAnnotation) value, flags, builder);
            break;
        case IMemberValuePair.K_STRING:
            builder.append(ASTNodes.getEscapedStringLiteral((String) value));
            break;
        case IMemberValuePair.K_CHAR:
            builder.append(ASTNodes.getEscapedCharacterLiteral(((Character) value).charValue()));
            break;
        default:
            builder.append(String.valueOf(value));
            break;
        }
    }
}

From source file:com.microsoft.javapkgsrv.JavaElementLabelComposer.java

License:Open Source License

private void appendAnnotationValue(IAnnotation annotation, Object value, int valueKind, long flags)
        throws JavaModelException {
    // Note: To be bug-compatible with Javadoc from Java 5/6/7, we currently don't escape HTML tags in String-valued annotations.
    if (value instanceof Object[]) {
        fBuffer.append('{');
        Object[] values = (Object[]) value;
        for (int j = 0; j < values.length; j++) {
            if (j > 0)
                fBuffer.append(COMMA_STRING);
            value = values[j];/*from  ww  w . ja  v a2  s .  c om*/
            appendAnnotationValue(annotation, value, valueKind, flags);
        }
        fBuffer.append('}');
    } else {
        switch (valueKind) {
        case IMemberValuePair.K_CLASS:
            appendTypeSignatureLabel(annotation, Signature.createTypeSignature((String) value, false), flags);
            fBuffer.append(".class"); //$NON-NLS-1$
            break;
        case IMemberValuePair.K_QUALIFIED_NAME:
            String name = (String) value;
            int lastDot = name.lastIndexOf('.');
            if (lastDot != -1) {
                String type = name.substring(0, lastDot);
                String field = name.substring(lastDot + 1);
                appendTypeSignatureLabel(annotation, Signature.createTypeSignature(type, false), flags);
                fBuffer.append('.');
                fBuffer.append(getMemberName(annotation, type, field));
                break;
            }
            //            case IMemberValuePair.K_SIMPLE_NAME: // can't implement, since parent type is not known
            //$FALL-THROUGH$
        case IMemberValuePair.K_ANNOTATION:
            appendAnnotationLabel((IAnnotation) value, flags);
            break;
        case IMemberValuePair.K_STRING:
            fBuffer.append(getEscapedStringLiteral((String) value));
            break;
        case IMemberValuePair.K_CHAR:
            fBuffer.append(getEscapedCharacterLiteral(((Character) value).charValue()));
            break;
        default:
            fBuffer.append(String.valueOf(value));
            break;
        }
    }
}

From source file:org.eclipse.che.jdt.internal.core.CompilationUnitStructureRequestor.java

License:Open Source License

protected Object getMemberValue(org.eclipse.che.jdt.internal.core.MemberValuePair memberValuePair,
        Expression expression) {//  w w  w  .  ja  v  a 2  s .  c  o  m
    if (expression instanceof NullLiteral) {
        return null;
    } else if (expression instanceof Literal) {
        ((Literal) expression).computeConstant();
        return Util.getAnnotationMemberValue(memberValuePair, expression.constant);
    } else if (expression instanceof org.eclipse.jdt.internal.compiler.ast.Annotation) {
        org.eclipse.jdt.internal.compiler.ast.Annotation annotation = (org.eclipse.jdt.internal.compiler.ast.Annotation) expression;
        Object handle = acceptAnnotation(annotation, null, (JavaElement) this.handleStack.peek());
        memberValuePair.valueKind = IMemberValuePair.K_ANNOTATION;
        return handle;
    } else if (expression instanceof ClassLiteralAccess) {
        ClassLiteralAccess classLiteral = (ClassLiteralAccess) expression;
        char[] name = CharOperation.concatWith(classLiteral.type.getTypeName(), '.');
        memberValuePair.valueKind = IMemberValuePair.K_CLASS;
        return new String(name);
    } else if (expression instanceof QualifiedNameReference) {
        char[] qualifiedName = CharOperation.concatWith(((QualifiedNameReference) expression).tokens, '.');
        memberValuePair.valueKind = IMemberValuePair.K_QUALIFIED_NAME;
        return new String(qualifiedName);
    } else if (expression instanceof SingleNameReference) {
        char[] simpleName = ((SingleNameReference) expression).token;
        if (simpleName == RecoveryScanner.FAKE_IDENTIFIER) {
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            return null;
        }
        memberValuePair.valueKind = IMemberValuePair.K_SIMPLE_NAME;
        return new String(simpleName);
    } else if (expression instanceof ArrayInitializer) {
        memberValuePair.valueKind = -1; // modified below by the first call to getMemberValue(...)
        Expression[] expressions = ((ArrayInitializer) expression).expressions;
        int length = expressions == null ? 0 : expressions.length;
        Object[] values = new Object[length];
        for (int i = 0; i < length; i++) {
            int previousValueKind = memberValuePair.valueKind;
            Object value = getMemberValue(memberValuePair, expressions[i]);
            if (previousValueKind != -1 && memberValuePair.valueKind != previousValueKind) {
                // values are heterogeneous, value kind is thus unknown
                memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            }
            values[i] = value;
        }
        if (memberValuePair.valueKind == -1)
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return values;
    } else if (expression instanceof UnaryExpression) { // to deal with negative numerals (see bug - 248312)
        UnaryExpression unaryExpression = (UnaryExpression) expression;
        if ((unaryExpression.bits & ASTNode.OperatorMASK) >> ASTNode.OperatorSHIFT == OperatorIds.MINUS) {
            if (unaryExpression.expression instanceof Literal) {
                Literal subExpression = (Literal) unaryExpression.expression;
                subExpression.computeConstant();
                return Util.getNegativeAnnotationMemberValue(memberValuePair, subExpression.constant);
            }
        }
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    } else {
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    }
}

From source file:org.eclipse.modisco.java.discoverer.internal.io.library.ClassFileParser.java

License:Open Source License

private Expression manageMemberValuePair(final IMemberValuePair defaultValue) {

    Expression result = null;//  ww w .j  a  va  2  s. c o  m

    switch (defaultValue.getValueKind()) {
    case IMemberValuePair.K_CLASS:
        result = manageValuePairClassKind(defaultValue);
        break;

    case IMemberValuePair.K_ANNOTATION:
        result = manageValuePairAnnotationKind(defaultValue);
        break;

    case IMemberValuePair.K_QUALIFIED_NAME:
        result = manageValuePairQualifiedNameKind(defaultValue);
        break;

    case IMemberValuePair.K_BOOLEAN:
        if (defaultValue.getValue().getClass().isArray()) {
            Object[] tab = (Object[]) defaultValue.getValue();
            ArrayInitializer array = getFactory().createArrayInitializer();
            initializeNode(array);
            for (Object element : tab) {
                BooleanLiteral bool = getFactory().createBooleanLiteral();
                bool.setValue(((Boolean) element).booleanValue());
                array.getExpressions().add(bool);
            }
            result = array;
        } else {
            BooleanLiteral bool = getFactory().createBooleanLiteral();
            bool.setValue(((Boolean) defaultValue.getValue()).booleanValue());
            result = bool;
        }
        break;

    case IMemberValuePair.K_CHAR:
        if (defaultValue.getValue().getClass().isArray()) {
            Object[] tab = (Object[]) defaultValue.getValue();
            ArrayInitializer array = getFactory().createArrayInitializer();
            initializeNode(array);
            for (Object element : tab) {
                CharacterLiteral ch = getFactory().createCharacterLiteral();
                char value = ((Character) element).charValue();
                ch.setEscapedValue(ClassFileParserUtils.escapeCharacter(value));
                array.getExpressions().add(ch);
            }
            result = array;
        } else {
            CharacterLiteral ch = getFactory().createCharacterLiteral();
            char value = ((Character) defaultValue.getValue()).charValue();
            ch.setEscapedValue(ClassFileParserUtils.escapeCharacter(value));
            result = ch;
        }
        break;

    case IMemberValuePair.K_DOUBLE:
    case IMemberValuePair.K_BYTE:
    case IMemberValuePair.K_FLOAT:
    case IMemberValuePair.K_INT:
    case IMemberValuePair.K_LONG:
        if (defaultValue.getValue().getClass().isArray()) {
            Object[] tab = (Object[]) defaultValue.getValue();
            ArrayInitializer array = getFactory().createArrayInitializer();
            initializeNode(array);
            for (Object element : tab) {
                NumberLiteral number = getFactory().createNumberLiteral();
                number.setTokenValue(element.toString());
                array.getExpressions().add(number);
            }
            result = array;
        } else {
            NumberLiteral number = getFactory().createNumberLiteral();
            number.setTokenValue(defaultValue.getValue().toString());
            result = number;
        }
        break;

    case IMemberValuePair.K_STRING:
        if (defaultValue.getValue().getClass().isArray()) {
            Object[] tab = (Object[]) defaultValue.getValue();
            ArrayInitializer array = getFactory().createArrayInitializer();
            initializeNode(array);
            for (Object element : tab) {
                StringLiteral string = getFactory().createStringLiteral();
                String value = String.valueOf(element);
                string.setEscapedValue(ClassFileParserUtils.escapeString(value));
                array.getExpressions().add(string);
            }
            result = array;
        } else {
            StringLiteral string = getFactory().createStringLiteral();
            String value = String.valueOf(defaultValue.getValue());
            string.setEscapedValue(ClassFileParserUtils.escapeString(value));
            result = string;
        }
        break;

    case IMemberValuePair.K_SIMPLE_NAME: // there should be no K_SIMPLE_NAME
        // in .class files
    case IMemberValuePair.K_UNKNOWN:
    default:
        if (defaultValue.getValue().getClass().isArray()) {
            Object[] tab = (Object[]) defaultValue.getValue();
            ArrayInitializer array = getFactory().createArrayInitializer();
            initializeNode(array);
            for (Object element : tab) {
                UnresolvedItemAccess unrAcc = getFactory().createUnresolvedItemAccess();
                UnresolvedItem item = getFactory().createUnresolvedItem();
                unrAcc.setElement(item);
                item.setName(String.valueOf(element));
                array.getExpressions().add(unrAcc);
            }
            result = array;
        } else {
            UnresolvedItemAccess unrAcc = getFactory().createUnresolvedItemAccess();
            UnresolvedItem item = getFactory().createUnresolvedItem();
            unrAcc.setElement(item);
            item.setName(String.valueOf(defaultValue.getValue()));
            result = unrAcc;
        }
        break;
    }
    return result;
}