use of org.eclipse.persistence.jaxb.javamodel.reflection.JavaClassImpl in project eclipselink by eclipse-ee4j.
the class CompilerHelper method createAccessorFor.
public static Object createAccessorFor(JavaClass jClass, Property property, Helper helper, AccessorFactoryWrapper accessorFactory) {
if (!(jClass.getClass() == JavaClassImpl.class)) {
return null;
}
Class<?> beanClass = ((JavaClassImpl) jClass).getJavaClass();
if (property.isMethodProperty()) {
try {
Method getMethod = null;
Method setMethod = null;
if (property.getGetMethodName() != null) {
getMethod = PrivilegedAccessHelper.getMethod(beanClass, property.getGetMethodName(), new Class<?>[] {}, true);
}
if (property.getSetMethodName() != null) {
String setMethodParamTypeName = property.getType().getName();
JavaClassImpl paramType = (JavaClassImpl) helper.getJavaClass(setMethodParamTypeName);
Class<?>[] setMethodParams = new Class<?>[] { paramType.getJavaClass() };
setMethod = PrivilegedAccessHelper.getMethod(beanClass, property.getSetMethodName(), setMethodParams, true);
}
return accessorFactory.createPropertyAccessor(beanClass, getMethod, setMethod);
} catch (Exception ex) {
}
} else {
try {
Field field = PrivilegedAccessHelper.getField(beanClass, ((JavaField) property.getElement()).getName(), true);
return accessorFactory.createFieldAccessor(beanClass, field, property.isReadOnly());
} catch (Exception ex) {
ex.printStackTrace();
}
}
return null;
}
use of org.eclipse.persistence.jaxb.javamodel.reflection.JavaClassImpl in project eclipselink by eclipse-ee4j.
the class OXMMetadata method createClassModelFromOXM.
private JavaClass[] createClassModelFromOXM(DynamicClassLoader dynamicClassLoader) throws JAXBException {
List<JavaClass> oxmJavaClasses = new ArrayList<JavaClass>();
Iterator<String> keys = bindings.keySet().iterator();
while (keys.hasNext()) {
String pkgName = keys.next();
XmlBindings b = bindings.get(pkgName);
if (b.getJavaTypes() != null) {
List<JavaType> javaTypes = b.getJavaTypes().getJavaType();
for (Iterator<JavaType> iterator = javaTypes.iterator(); iterator.hasNext(); ) {
JavaType type = iterator.next();
// Check to see if it's a static class or if should be treated as dynamic
try {
Class<?> staticClass = dynamicClassLoader.getParent().loadClass(Helper.getQualifiedJavaTypeName(type.getName(), pkgName));
oxmJavaClasses.add(new JavaClassImpl(staticClass, null));
} catch (Exception ex) {
type.setName(Helper.getQualifiedJavaTypeName(type.getName(), pkgName));
oxmJavaClasses.add(new OXMJavaClassImpl(type));
}
}
}
if (b.getXmlRegistries() != null) {
List<XmlRegistry> registries = b.getXmlRegistries().getXmlRegistry();
for (Iterator<XmlRegistry> iterator = registries.iterator(); iterator.hasNext(); ) {
XmlRegistry reg = iterator.next();
oxmJavaClasses.add(new OXMObjectFactoryImpl(reg));
}
}
if (b.getXmlEnums() != null) {
List<XmlEnum> enums = b.getXmlEnums().getXmlEnum();
for (Iterator<XmlEnum> iterator = enums.iterator(); iterator.hasNext(); ) {
XmlEnum xmlEnum = iterator.next();
List<XmlEnumValue> enumValues = xmlEnum.getXmlEnumValue();
List<String> enumValueStrings = new ArrayList<String>();
for (Iterator<XmlEnumValue> iterator2 = enumValues.iterator(); iterator2.hasNext(); ) {
XmlEnumValue xmlEnumValue = iterator2.next();
enumValueStrings.add(xmlEnumValue.getJavaEnumValue());
}
oxmJavaClasses.add(new OXMJavaClassImpl(xmlEnum.getJavaEnum(), enumValueStrings));
// Trigger a dynamic class generation, because we won't
// be creating a descriptor for this
dynamicClassLoader.addEnum(xmlEnum.getJavaEnum(), enumValueStrings.toArray());
}
}
}
JavaClass[] javaClasses = new JavaClass[oxmJavaClasses.size()];
for (int i = 0; i < javaClasses.length; i++) {
javaClasses[i] = oxmJavaClasses.get(i);
}
return javaClasses;
}
use of org.eclipse.persistence.jaxb.javamodel.reflection.JavaClassImpl in project eclipselink by eclipse-ee4j.
the class OXMJavaModelImpl method getClass.
/**
* Obtain the <code>JavaClass</code> given the corresponding Java <code>Class'</code> name.
*
* @param className - the name of the Java <code>Class</code> to search for.
*
* @return the <code>JavaClass</code> corresponding to <code>className</code>.
*/
@Override
public JavaClass getClass(String className) {
if (className == null) {
return null;
}
// jakarta.xml.bind.annotation.XmlElement.DEFAULT
if (className.contains(DEFAULT)) {
return getClass(JAVA_LANG_OBJECT);
}
JavaClass cachedClass = this.javaModelClasses.get(className);
if (cachedClass != null) {
return cachedClass;
}
// try actually finding the class, might be concrete
try {
Class<?> realClass = PrivilegedAccessHelper.getClassForName(className, true, classLoader);
if (realClass != null) {
JavaModelImpl jm = new JavaModelImpl(this.classLoader);
JavaClassImpl jc = new JavaClassImpl(realClass, jm);
return jc;
}
} catch (Exception e) {
}
return new OXMJavaClassImpl(className);
}
Aggregations