@SuppressWarnings("unchecked") private final XmlAdapter<Object,Object> checkAdapter(XmlJavaTypeAdapter adapterInfo, Class<?> typeNeeded, boolean forSerialization) { // if annotation has no type, it's applicable; if it has, must match Class<?> adaptedType = adapterInfo.type(); if (adaptedType == XmlJavaTypeAdapter.DEFAULT.class) { JavaType type = _typeFactory.constructType(adapterInfo.value()); JavaType[] params = _typeFactory.findTypeParameters(type, XmlAdapter.class); adaptedType = params[1].getRawClass(); } if (adaptedType.isAssignableFrom(typeNeeded)) { @SuppressWarnings("rawtypes") Class<? extends XmlAdapter> cls = adapterInfo.value(); // true -> yes, force access if need be return ClassUtil.createInstance(cls, true); } return null; }
private void generateXmlJavaTypeAdapter(AnnotationVisitor av, XmlJavaTypeAdapter adapter) { if (adapter.value() != null) { av.visit("value", getType(getClassCode(adapter.value()))); } if (adapter.type() != javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter.DEFAULT.class) { av.visit("type", getType(getClassCode(adapter.type()))); } }
@Override public Class<?> call() throws Exception { return adaptedTypeInfo.type(); } }, context.getContext().getProcessingEnvironment(), XmlJavaTypeAdapter.DEFAULT.class);
@Override public Class<?> call() throws Exception { return adaptedTypeInfo.type(); } }, context.getContext().getProcessingEnvironment(), XmlJavaTypeAdapter.DEFAULT.class);
@Override public Class<?> call() throws Exception { return adaptedTypeInfo.type(); } }, context.getContext().getProcessingEnvironment(), XmlJavaTypeAdapter.DEFAULT.class);
@Override public Class<?> call() throws Exception { return adaptedTypeInfo.type(); } }, context.getContext().getProcessingEnvironment(), XmlJavaTypeAdapter.DEFAULT.class);
public static Class<?> getTypeFromAdapter(XmlJavaTypeAdapter adapter, Class<?> theType, boolean boundType) { if (adapter != null) { if (adapter.type() != XmlJavaTypeAdapter.DEFAULT.class) { theType = adapter.type(); } else { Type[] types = InjectionUtils.getActualTypes(adapter.value().getGenericSuperclass()); if (types != null && types.length == 2) { int index = boundType ? 1 : 0; theType = InjectionUtils.getActualType(types[index]); } } } return theType; }
static XmlJavaTypeAdapter getFieldXJTA(final Field f) { XmlJavaTypeAdapter adapter = f.getAnnotation(XmlJavaTypeAdapter.class); if (adapter == null) { adapter = f.getType().getAnnotation(XmlJavaTypeAdapter.class); } if (adapter == null) { Package packageDeclaration = f.getDeclaringClass().getPackage(); if (packageDeclaration != null) { XmlJavaTypeAdapters adapters = packageDeclaration.getAnnotation(XmlJavaTypeAdapters.class); if (adapters != null) { for (XmlJavaTypeAdapter candidate : adapters.value()) { if (candidate != null && candidate.type().equals(f.getType())) { adapter = candidate; break; } } } } } return adapter; }
public static Class<?> getTypeFromAdapter(XmlJavaTypeAdapter adapter, Class<?> theType, boolean boundType) { if (adapter != null) { if (adapter.type() != XmlJavaTypeAdapter.DEFAULT.class) { theType = adapter.type(); } else { Type topAdapterType = adapter.value().getGenericSuperclass(); Class<?> superClass = adapter.value().getSuperclass(); while (superClass != null) { Class<?> nextSuperClass = superClass.getSuperclass(); if (nextSuperClass != null && !Object.class.equals(nextSuperClass)) { topAdapterType = superClass.getGenericSuperclass(); } superClass = nextSuperClass; } Type[] types = InjectionUtils.getActualTypes(topAdapterType); if (types != null && types.length == 2) { int index = boundType ? 1 : 0; theType = InjectionUtils.getActualType(types[index]); } } } return theType; }
private void generateXmlJavaTypeAdapter(AnnotationVisitor av, XmlJavaTypeAdapter adapter) { if (adapter.value() != null) { av.visit("value", getType(getClassCode(adapter.value()))); } if (adapter.type() != javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter.DEFAULT.class) { av.visit("type", getType(getClassCode(adapter.type()))); } }
@SuppressWarnings("unchecked") private final XmlAdapter<Object,Object> checkAdapter(XmlJavaTypeAdapter adapterInfo, Class<?> typeNeeded, boolean forSerialization) { // if annotation has no type, it's applicable; if it has, must match Class<?> adaptedType = adapterInfo.type(); if (adaptedType == XmlJavaTypeAdapter.DEFAULT.class) { JavaType type = _typeFactory.constructType(adapterInfo.value()); JavaType[] params = _typeFactory.findTypeParameters(type, XmlAdapter.class); adaptedType = params[1].getRawClass(); } if (adaptedType.isAssignableFrom(typeNeeded)) { @SuppressWarnings("rawtypes") Class<? extends XmlAdapter> cls = adapterInfo.value(); // true -> yes, force access if need be return ClassUtil.createInstance(cls, true); } return null; }
@SuppressWarnings("unchecked") private final XmlAdapter<Object,Object> checkAdapter(XmlJavaTypeAdapter adapterInfo, Class<?> typeNeeded, boolean forSerialization) { // if annotation has no type, it's applicable; if it has, must match Class<?> adaptedType = adapterInfo.type(); if (adaptedType == XmlJavaTypeAdapter.DEFAULT.class) { JavaType type = _typeFactory.constructType(adapterInfo.value()); JavaType[] params = _typeFactory.findTypeParameters(type, XmlAdapter.class); adaptedType = params[1].getRawClass(); } if (adaptedType.isAssignableFrom(typeNeeded)) { @SuppressWarnings("rawtypes") Class<? extends XmlAdapter> cls = adapterInfo.value(); // true -> yes, force access if need be return ClassUtil.createInstance(cls, true); } return null; }
private final XmlAdapter<Object,Object> checkAdapter(XmlJavaTypeAdapter adapterInfo, Class<?> typeNeeded, boolean forSerialization) { // if annotation has no type, it's applicable; if it has, must match Class<?> adaptedType = adapterInfo.type(); if (adapterInfo.value().isAssignableFrom(JaxbUnknownAdapter.class)) { return null; } if (adaptedType == XmlJavaTypeAdapter.DEFAULT.class) { JavaType[] params = _typeFactory.findTypeParameters(adapterInfo.value(), XmlAdapter.class); adaptedType = params[1].getRawClass(); } if (adaptedType.isAssignableFrom(typeNeeded)) { @SuppressWarnings("rawtypes") Class<? extends XmlAdapter> cls = adapterInfo.value(); return ClassUtil.createInstance(cls, true); } return null; }
@SuppressWarnings("unchecked") private final XmlAdapter<Object,Object> checkAdapter(XmlJavaTypeAdapter adapterInfo, Class<?> typeNeeded, boolean forSerialization) { // if annotation has no type, it's applicable; if it has, must match Class<?> adaptedType = adapterInfo.type(); if (adaptedType == XmlJavaTypeAdapter.DEFAULT.class) { JavaType[] params = _typeFactory.findTypeParameters(adapterInfo.value(), XmlAdapter.class); adaptedType = params[1].getRawClass(); } if (adaptedType.isAssignableFrom(typeNeeded)) { @SuppressWarnings("rawtypes") Class<? extends XmlAdapter> cls = adapterInfo.value(); // true -> yes, force access if need be return ClassUtil.createInstance(cls, true); } return null; }
@SuppressWarnings("unchecked") private final XmlAdapter<Object,Object> checkAdapter(XmlJavaTypeAdapter adapterInfo, Class<?> typeNeeded, boolean forSerialization) { // if annotation has no type, it's applicable; if it has, must match Class<?> adaptedType = adapterInfo.type(); if (adaptedType == XmlJavaTypeAdapter.DEFAULT.class) { JavaType[] params = _typeFactory.findTypeParameters(adapterInfo.value(), XmlAdapter.class); adaptedType = params[1].getRawClass(); } if (adaptedType.isAssignableFrom(typeNeeded)) { @SuppressWarnings("rawtypes") Class<? extends XmlAdapter> cls = adapterInfo.value(); // true -> yes, force access if need be return ClassUtil.createInstance(cls, true); } return null; }
/** * Process any class-level @XmlJavaTypeAdapters. * * @param javaClass * @param info */ private void processClassLevelAdapters(JavaClass javaClass, TypeInfo info) { if (helper.isAnnotationPresent(javaClass, XmlJavaTypeAdapter.class)) { XmlJavaTypeAdapter adapter = (XmlJavaTypeAdapter) helper.getAnnotation(javaClass, XmlJavaTypeAdapter.class); String boundType = adapter.type().getName(); if (boundType == null || boundType.equals("javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter.DEFAULT")) { boundType = javaClass.getRawName(); } org.eclipse.persistence.jaxb.xmlmodel.XmlJavaTypeAdapter xja = new org.eclipse.persistence.jaxb.xmlmodel.XmlJavaTypeAdapter(); xja.setValue(adapter.value().getName()); xja.setType(boundType); info.setXmlJavaTypeAdapter(xja); } }
/** * Process any class-level @XmlJavaTypeAdapters. * * @param javaClass * @param info */ private void processClassLevelAdapters(JavaClass javaClass, TypeInfo info) { if (helper.isAnnotationPresent(javaClass, XmlJavaTypeAdapter.class)) { XmlJavaTypeAdapter adapter = (XmlJavaTypeAdapter) helper.getAnnotation(javaClass, XmlJavaTypeAdapter.class); String boundType = adapter.type().getName(); if (boundType == null || boundType.equals("javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter.DEFAULT")) { boundType = javaClass.getRawName(); } org.eclipse.persistence.jaxb.xmlmodel.XmlJavaTypeAdapter xja = new org.eclipse.persistence.jaxb.xmlmodel.XmlJavaTypeAdapter(); xja.setValue(adapter.value().getName()); xja.setType(boundType); info.setXmlJavaTypeAdapter(xja); } }
@SuppressWarnings("unchecked") private final XmlAdapter<Object,Object> checkAdapter(XmlJavaTypeAdapter adapterInfo, Class<?> typeNeeded, boolean forSerialization) { // if annotation has no type, it's applicable; if it has, must match Class<?> adaptedType = adapterInfo.type(); if (adaptedType == XmlJavaTypeAdapter.DEFAULT.class) { JavaType type = _typeFactory.constructType(adapterInfo.value()); JavaType[] params = _typeFactory.findTypeParameters(type, XmlAdapter.class); adaptedType = params[1].getRawClass(); } if (adaptedType.isAssignableFrom(typeNeeded)) { @SuppressWarnings("rawtypes") Class<? extends XmlAdapter> cls = adapterInfo.value(); // true -> yes, force access if need be return ClassUtil.createInstance(cls, true); } return null; }
private void processPackageLevelAdapter(XmlJavaTypeAdapter next, TypeInfo info) { JavaClass adapterClass = helper.getJavaClass(next.value()); JavaClass boundType = helper.getJavaClass(next.type()); if (boundType != null) { info.addPackageLevelAdapterClass(adapterClass, boundType); } else { getLogger().logWarning(JAXBMetadataLogger.INVALID_BOUND_TYPE, new Object[] { boundType, adapterClass }); } }
private void processPackageLevelAdapter(XmlJavaTypeAdapter next, TypeInfo info) { JavaClass adapterClass = helper.getJavaClass(next.value()); JavaClass boundType = helper.getJavaClass(next.type()); if (boundType != null) { info.addPackageLevelAdapterClass(adapterClass, boundType); } else { getLogger().logWarning(JAXBMetadataLogger.INVALID_BOUND_TYPE, new Object[] { null, adapterClass }); } }