Package com.sun.codemodel

Examples of com.sun.codemodel.JAnnotationValue


   * Returns the value of annotation element as {@href JExpression}. For example, for annotation
   * <code>@XmlElementRef(name = "last-name", namespace = "http://mycompany.org/exchange", type = JAXBElement.class)</code>
   * for member <code>name</code> the value <code>last-name</code> will be returned.
   */
  public static JExpression getAnnotationMemberExpression(JAnnotationUse annotation, String annotationMember) {
    JAnnotationValue annotationValue = getAnnotationMember(annotation, annotationMember);

    if (annotationValue == null) {
      return null;
    }

View Full Code Here


   * For the given annotatable check that all annotations (and all annotations within annotations recursively) do not
   * refer any candidate for removal.
   */
  private void checkAnnotationReference(Map<String, Candidate> candidatesMap, JAnnotatable annotatable) {
    for (JAnnotationUse annotation : annotatable.annotations()) {
      JAnnotationValue annotationMember = getAnnotationMember(annotation, "value");

      if (annotationMember instanceof JAnnotationArrayMember) {
        checkAnnotationReference(candidatesMap, (JAnnotationArrayMember) annotationMember);

        continue;
View Full Code Here

            }
        };
    }

    private static String loadExistingBoundaryValue(JAnnotationUse jAnnotationUse) {
        JAnnotationValue jAnnotationValue = jAnnotationUse.getAnnotationMembers().get("value");
        Class<? extends JAnnotationValue> clazz = jAnnotationValue.getClass();
        try {
            Field theValueField = clazz.getDeclaredField("value");
            theValueField.setAccessible(true);
            return ((JStringLiteral) theValueField.get(jAnnotationValue)).str;
        } catch (Exception e) {
View Full Code Here

                return AnnotationProxy.getProxy(components, annotationClass, dynamicClassLoader, XMLConversionManager.getDefaultManager());
            }

            // Now overwrite the default values with anything we find in the XJC annotation instance.
            for (Object key : memberValues.keySet()) {
                JAnnotationValue xjcValue = (JAnnotationValue) memberValues.get(key);
                if (xjcValue instanceof JAnnotationArrayMember) {
                    List<Object> values = (List<Object>) PrivilegedAccessHelper.getValueFromField(JANNOTATIONARRAYMEMBER_VALUES, xjcValue);
                    Object[] valuesArray = new Object[values.size()];
                    for (int i = 0; i < values.size(); i++) {
                        if (values.get(i) instanceof JAnnotationUse) {
                            JAnnotationUse xjcAnno = (JAnnotationUse) values.get(i);
                            XJCJavaAnnotationImpl anno = new XJCJavaAnnotationImpl(xjcAnno, dynamicClassLoader);
                            valuesArray[i] = anno.getJavaAnnotation();
                        } else {
                            Field valueField = PrivilegedAccessHelper.getDeclaredField(values.get(i).getClass(), "value", true);
                            Object value = PrivilegedAccessHelper.getValueFromField(valueField, values.get(i));
                            if (value instanceof JStringLiteral) {
                                JStringLiteral strvalue = (JStringLiteral) value;
                                valuesArray[i] = strvalue.str;
                            } else {
                                // XmlSeeAlso.value = Array of JDefinedClasses
                                Field valClField = PrivilegedAccessHelper.getDeclaredField(value.getClass(), "val$cl", true);
                                JDefinedClass wrappedValue = (JDefinedClass) PrivilegedAccessHelper.getValueFromField(valClField, value);
                                Class<?> tempDynClass = dynamicClassLoader.createDynamicClass(wrappedValue.fullName());
                                valuesArray[i] = tempDynClass;
                            }
                        }
                    }
                    components.put(key.toString(), valuesArray);
                } else if (xjcValue.getClass().getName().contains("JAnnotationStringValue")) {
                    // JAnnotationStringValue is a package-protected class so need to compare class name.
                    // Cannot cache this field because JAnnotationStringValue is a protected class.
                    Field valueField = PrivilegedAccessHelper.getDeclaredField(xjcValue.getClass(), "value", true);
                    Object objValue = PrivilegedAccessHelper.getValueFromField(valueField, xjcValue);
                    if (objValue instanceof JStringLiteral) {
                        JStringLiteral value = (JStringLiteral) objValue;
                        String stringValue = value == null ? null : value.str;
                        components.put(key.toString(), stringValue);
                    } else if (objValue.getClass().getName().contains("JAtom")) {
                        // e.g. XmlElement.required = JAtom
                        // Cannot cache this field because JAtom is a protected class.
                        Field whatField = PrivilegedAccessHelper.getDeclaredField(objValue.getClass(), "what", true);
                        String value = (String) PrivilegedAccessHelper.getValueFromField(whatField, objValue);
                        components.put(key.toString(), value);
                    } else if (objValue.getClass().getName().contains("JExpr$1")) {
                        // XmlJavaTypeAdapter contains a JDefinedClass
                        Field valClField = PrivilegedAccessHelper.getDeclaredField(objValue.getClass(), "val$cl", true);
                        JClass wrappedValue = (JClass) PrivilegedAccessHelper.getValueFromField(valClField, objValue);
                        Object tempDynClass = null;

                        if (!(wrappedValue.getTypeParameters().isEmpty())) {
                            // Parameterized type, so get the actual parameter type and create that.
                            wrappedValue = wrappedValue.getTypeParameters().get(0);
                        }

                        try {
                            // Attempt to look up the class normally
                            tempDynClass = Class.forName(wrappedValue.fullName());
                        } catch (Exception e) {
                            if (annotationClass.equals(XmlEnum.class)) {
                                tempDynClass = String.class;
                            } else {
                                tempDynClass = dynamicClassLoader.createDynamicClass(wrappedValue.fullName());
                            }
                        }
                        components.put(key.toString(), tempDynClass);
                    }
                } else {
                    // e.g. XmlSchema.elementFormDefault = JAnnotationUse$1
                    // Cannot cache this field because JAtom is a protected class.
                    Field valValueField = PrivilegedAccessHelper.getDeclaredField(xjcValue.getClass(), "val$value", true);
                    Object value = PrivilegedAccessHelper.getValueFromField(valValueField, xjcValue);
                    components.put(key.toString(), value);
                }
            }
View Full Code Here

                return AnnotationProxy.getProxy(components, annotationClass, dynamicClassLoader, XMLConversionManager.getDefaultManager());
            }

            // Now overwrite the default values with anything we find in the XJC annotation instance.
            for (Object key : memberValues.keySet()) {
                JAnnotationValue xjcValue = (JAnnotationValue) memberValues.get(key);
                if (xjcValue instanceof JAnnotationArrayMember) {
                    List<Object> values = (List<Object>) PrivilegedAccessHelper.getValueFromField(JANNOTATIONARRAYMEMBER_VALUES, xjcValue);
                    Object[] valuesArray = new Object[values.size()];
                    for (int i = 0; i < values.size(); i++) {
                        if (values.get(i) instanceof JAnnotationUse) {
                            JAnnotationUse xjcAnno = (JAnnotationUse) values.get(i);
                            XJCJavaAnnotationImpl anno = new XJCJavaAnnotationImpl(xjcAnno, dynamicClassLoader);
                            valuesArray[i] = anno.getJavaAnnotation();
                        } else {
                            Field valueField = PrivilegedAccessHelper.getDeclaredField(values.get(i).getClass(), "value", true);
                            Object value = PrivilegedAccessHelper.getValueFromField(valueField, values.get(i));
                            if (value instanceof JStringLiteral) {
                                JStringLiteral strvalue = (JStringLiteral) value;
                                valuesArray[i] = strvalue.str;
                            } else {
                                // XmlSeeAlso.value = Array of JDefinedClasses
                                Field valClField = PrivilegedAccessHelper.getDeclaredField(value.getClass(), "val$cl", true);
                                JDefinedClass wrappedValue = (JDefinedClass) PrivilegedAccessHelper.getValueFromField(valClField, value);
                                Class<?> tempDynClass = dynamicClassLoader.createDynamicClass(wrappedValue.fullName());
                                valuesArray[i] = tempDynClass;
                            }
                        }
                    }
                    components.put(key.toString(), valuesArray);
                } else if (xjcValue.getClass().getName().contains("JAnnotationStringValue")) {
                    // JAnnotationStringValue is a package-protected class so need to compare class name.
                    // Cannot cache this field because JAnnotationStringValue is a protected class.
                    Field valueField = PrivilegedAccessHelper.getDeclaredField(xjcValue.getClass(), "value", true);
                    Object objValue = PrivilegedAccessHelper.getValueFromField(valueField, xjcValue);
                    if (objValue instanceof JStringLiteral) {
                        JStringLiteral value = (JStringLiteral) objValue;
                        String stringValue = value == null ? null : value.str;
                        components.put(key.toString(), stringValue);
                    } else if (objValue.getClass().getName().contains("JAtom")) {
                        // e.g. XmlElement.required = JAtom
                        // Cannot cache this field because JAtom is a protected class.
                        Field whatField = PrivilegedAccessHelper.getDeclaredField(objValue.getClass(), "what", true);
                        String value = (String) PrivilegedAccessHelper.getValueFromField(whatField, objValue);
                        components.put(key.toString(), value);
                    } else if (objValue.getClass().getName().contains("JExpr$1")) {
                        // XmlJavaTypeAdapter contains a JDefinedClass
                        Field valClField = PrivilegedAccessHelper.getDeclaredField(objValue.getClass(), "val$cl", true);
                        JClass wrappedValue = (JClass) PrivilegedAccessHelper.getValueFromField(valClField, objValue);
                        Object tempDynClass = null;

                        if (!(wrappedValue.getTypeParameters().isEmpty())) {
                            // Parameterized type, so get the actual parameter type and create that.
                            wrappedValue = wrappedValue.getTypeParameters().get(0);
                        }

                        try {
                            // Attempt to look up the class normally
                            tempDynClass = Class.forName(wrappedValue.fullName());
                        } catch (Exception e) {
                            if (annotationClass.equals(XmlEnum.class)) {
                                tempDynClass = String.class;
                            } else {
                                tempDynClass = dynamicClassLoader.createDynamicClass(wrappedValue.fullName());
                            }
                        }
                        components.put(key.toString(), tempDynClass);
                    }
                } else {
                    // e.g. XmlSchema.elementFormDefault = JAnnotationUse$1
                    // Cannot cache this field because JAtom is a protected class.
                    Field valValueField = PrivilegedAccessHelper.getDeclaredField(xjcValue.getClass(), "val$value", true);
                    Object value = PrivilegedAccessHelper.getValueFromField(valValueField, xjcValue);
                    components.put(key.toString(), value);
                }
            }
View Full Code Here

TOP

Related Classes of com.sun.codemodel.JAnnotationValue

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.