All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.persistence.jaxb.javamodel.oxm.OXMObjectFactoryImpl Maven / Gradle / Ivy

There is a newer version: 4.0.2
Show newest version
/*
 * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0,
 * or the Eclipse Distribution License v. 1.0 which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */

// Contributors:
//     Rick Barkhouse - 2.2 - Initial implementation
package org.eclipse.persistence.jaxb.javamodel.oxm;

import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.eclipse.persistence.internal.oxm.XMLConversionManager;
import org.eclipse.persistence.jaxb.javamodel.AnnotationProxy;
import org.eclipse.persistence.jaxb.javamodel.JavaAnnotation;
import org.eclipse.persistence.jaxb.javamodel.JavaClass;
import org.eclipse.persistence.jaxb.javamodel.JavaClassInstanceOf;
import org.eclipse.persistence.jaxb.javamodel.JavaConstructor;
import org.eclipse.persistence.jaxb.javamodel.JavaField;
import org.eclipse.persistence.jaxb.javamodel.JavaMethod;
import org.eclipse.persistence.jaxb.javamodel.JavaModel;
import org.eclipse.persistence.jaxb.javamodel.JavaPackage;
import org.eclipse.persistence.jaxb.javamodel.reflection.JavaAnnotationImpl;
import org.eclipse.persistence.jaxb.xmlmodel.XmlRegistry;
import org.eclipse.persistence.jaxb.xmlmodel.XmlRegistry.XmlElementDecl;

/**
 * INTERNAL:
 * 

* Purpose: Specialized JavaClass implementation wrapping * MOXy's xmlmodel.XmlRegistry, used to represent a JAXB * ObjectFactory. Used when bootstrapping a DynamicJAXBContext * from XML Bindings. *

* *

* Responsibilities: *

*
    *
  • Provide Class information to the JavaModel.
  • *
* * @since EclipseLink 2.2 * * @see org.eclipse.persistence.jaxb.javamodel.JavaClass * @see org.eclipse.persistence.jaxb.javamodel.oxm.OXMJAXBElementImpl */ public class OXMObjectFactoryImpl implements JavaClass { private XmlRegistry registry; private JavaModel javaModel; private ArrayList methods = new ArrayList(); private ArrayList annotations = new ArrayList(); public OXMObjectFactoryImpl(XmlRegistry xmlRegistry) { this.registry = xmlRegistry; } public void init() { // Build annotations and methods List decls = this.registry.getXmlElementDecl(); for (Iterator iterator = decls.iterator(); iterator.hasNext();) { XmlElementDecl xmlElementDecl = iterator.next(); String paramType = xmlElementDecl.getType(); JavaClass jaxbElementClass = new OXMJAXBElementImpl(paramType, this.javaModel); methods.add(new OXMJavaMethodImpl(xmlElementDecl.getJavaMethod(), jaxbElementClass, this)); HashMap components = new HashMap(); components.put(NAME, xmlElementDecl.getName()); components.put(NAMESPACE, xmlElementDecl.getNamespace()); components.put(SUBSTITUTION_HEAD_NAME, xmlElementDecl.getSubstitutionHeadName()); components.put(SUBSTITUTION_HEAD_NAMESPACE, xmlElementDecl.getSubstitutionHeadNamespace()); Annotation anno = AnnotationProxy.getProxy(components, jakarta.xml.bind.annotation.XmlElementDecl.class, this.javaModel.getClassLoader(), XMLConversionManager.getDefaultManager()); annotations.add(new JavaAnnotationImpl(anno)); } } @Override public Collection getActualTypeArguments() { return new ArrayList(); } @Override public JavaClass getComponentType() { return null; } @Override public JavaConstructor getConstructor(JavaClass[] parameterTypes) { return new OXMJavaConstructorImpl(this); } @Override public Collection getConstructors() { ArrayList constructors = new ArrayList(1); constructors.add(new OXMJavaConstructorImpl(this)); return constructors; } @Override public Collection getDeclaredClasses() { return new ArrayList(); } @Override public JavaConstructor getDeclaredConstructor(JavaClass[] parameterTypes) { return new OXMJavaConstructorImpl(this); } @Override public Collection getDeclaredConstructors() { ArrayList constructors = new ArrayList(1); constructors.add(new OXMJavaConstructorImpl(this)); return constructors; } @Override public JavaField getDeclaredField(String arg0) { return null; } @Override public Collection getDeclaredFields() { return null; } @Override public JavaMethod getDeclaredMethod(String arg0, JavaClass[] arg1) { return null; } @Override public Collection getDeclaredMethods() { return methods; } @Override public JavaMethod getMethod(String arg0, JavaClass[] arg1) { return null; } @Override public Collection getMethods() { return methods; } @Override public int getModifiers() { return 0; } @Override public String getName() { return getQualifiedName(); } @Override public JavaPackage getPackage() { return new OXMJavaPackageImpl(getPackageName()); } @Override public String getPackageName() { int lastDotIndex = getQualifiedName().lastIndexOf(DOT); if (lastDotIndex == -1) { return EMPTY_STRING; } return getQualifiedName().substring(0, lastDotIndex); } @Override public String getQualifiedName() { return this.registry.getName(); } @Override public String getRawName() { return getQualifiedName(); } @Override public JavaClass getSuperclass() { return this.javaModel.getClass(JAVA_LANG_OBJECT); } @Override public Type[] getGenericInterfaces() { return new Type[0]; } @Override public Type getGenericSuperclass() { return null; } @Override public boolean hasActualTypeArguments() { return false; } @Override public boolean isAbstract() { return false; } @Override public boolean isAnnotation() { return false; } @Override public boolean isArray() { return false; } @Override public boolean isAssignableFrom(JavaClass arg0) { return false; } @Override public boolean isEnum() { return false; } @Override public boolean isFinal() { return false; } @Override public boolean isInterface() { return false; } @Override public boolean isMemberClass() { return false; } @Override public boolean isPrimitive() { return false; } @Override public boolean isPrivate() { return false; } @Override public boolean isProtected() { return false; } @Override public boolean isPublic() { return true; } @Override public boolean isStatic() { return false; } @Override public boolean isSynthetic() { return false; } @Override public JavaClassInstanceOf instanceOf() { return JavaClassInstanceOf.OXM_OBJECT_FACTORY_IMPL; } @Override public JavaAnnotation getAnnotation(JavaClass arg0) { return null; } @Override public Collection getAnnotations() { return null; } @Override public JavaAnnotation getDeclaredAnnotation(JavaClass arg0) { return null; } @Override public Collection getDeclaredAnnotations() { return null; } public JavaModel getJavaModel() { return javaModel; } public void setJavaModel(JavaModel javaModel) { this.javaModel = javaModel; } private static String EMPTY_STRING = ""; private static char DOT = '.'; private static String JAVA_LANG_OBJECT = "java.lang.Object"; private static String NAME = "name"; private static String NAMESPACE = "namespace"; private static String SUBSTITUTION_HEAD_NAME = "substitutionHeadName"; private static String SUBSTITUTION_HEAD_NAMESPACE = "substitutionHeadNamespace"; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy