blob: 29744d211e8369bc2c82f76a62745193b0e6f0e0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2013 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 v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Denise Smith - 2.5
******************************************************************************/
package org.eclipse.persistence.internal.oxm;
import javax.xml.namespace.QName;
/**
* <p>Root is used to hold an Object along with the corresponding QName and some other related information.
* Typically this is used when the object is marshalled/unmarshalled to a QName other than
* the defaultRootElement set on the Descriptor.</p>
*
* <p>Root objects can be returned from Unmarshaller unmarshal operations and
* can be given to Marshaller.marshal operations. They may also be in values
* returned by AnyCollectionMappings and AnyObjectMappings.</p>
*/
public class Root {
protected Object rootObject;
protected String localName;
protected String namespaceUri;
protected String prefix;
protected String encoding;
protected String xmlVersion;
protected String schemaLocation;
protected String noNamespaceSchemaLocation;
protected QName schemaType;
protected Class declaredType;
protected boolean nil;
/**
* Gets the object. This may be null.
*
* @return the object
*/
public Object getObject() {
return rootObject;
}
/**
* Gets the local name. This should not be null.
*
* @return the local name
*/
public String getLocalName() {
return localName;
}
/**
* Gets the namespace uri. This may be null.
*
* @return the namespace uri
*/
public String getNamespaceURI() {
return namespaceUri;
}
/**
* Sets the object associated with this XMLRoot. This may be null.
*
* @param rootObject The object to associate with this XMLRoot.
*/
public void setObject(Object rootObject) {
this.rootObject = rootObject;
}
/**
* Set the element name. This method will parse the qualified
* name in an attempt to set the localName fields. ie: this could be
* set to "someLocalName" or "somePrefix:someLocalName"
*
* @param name the new local name
*/
public void setLocalName(String name) {
if(null == name) {
this.localName = Constants.EMPTY_STRING;
return;
}
int colonIdx = name.indexOf(Constants.COLON);
if(colonIdx > -1){
this.localName = name.substring(colonIdx +1);
}else{
this.localName = name;
}
}
/**
* Sets the namespace uri associated with the QName of this XMLRoot.
*
* @param rootElementUri the new namespace uri
*/
public void setNamespaceURI(String rootElementUri) {
if(rootElementUri != null && rootElementUri.length() ==0){
this.namespaceUri = null;
}else{
this.namespaceUri = rootElementUri;
}
}
/**
* Gets the encoding which will be set on the XMLRoot during unmarshal.
*
* @return the encoding
*/
public String getEncoding() {
return encoding;
}
/**
* Sets the encoding.
*
* @param encoding the new encoding
*/
public void setEncoding(String encoding) {
this.encoding = encoding;
}
/**
* Gets the XML version which will be set on the XMLRoot during unmarshal.
*
* @return the XML version
*/
public String getXMLVersion() {
return xmlVersion;
}
/**
* Sets the version.
*
* @param version the new version
*/
public void setVersion(String version) {
this.xmlVersion = version;
}
/**
* Gets the schema location which will be set on the XMLRoot during unmarshal.
*
* @return the schema location
*/
public String getSchemaLocation() {
return schemaLocation;
}
/**
* Sets the schema location.
*
* @param schemaLocation the new schema location
*/
public void setSchemaLocation(String schemaLocation) {
this.schemaLocation = schemaLocation;
}
/**
* Gets the no namespace schema location which will be set on the XMLRoot during unmarshal.
*
* @return the no namespace schema location
*/
public String getNoNamespaceSchemaLocation() {
return noNamespaceSchemaLocation;
}
/**
* Sets the no namespace schema location.
*
* @param noNamespaceSchemaLocation the new no namespace schema location
*/
public void setNoNamespaceSchemaLocation(String noNamespaceSchemaLocation) {
this.noNamespaceSchemaLocation = noNamespaceSchemaLocation;
}
/**
* Sets the schema type that should be associated with this XMLRoot object.
*
* @param schemaType the new schema type
*/
public void setSchemaType(QName schemaType) {
this.schemaType = schemaType;
}
/**
* Gets the schema type. This schema type will be considering when marshalling XMLRoot objects.
*
* @return the schema type associated with this XMLRoot object or null.
*/
public QName getSchemaType() {
return schemaType;
}
/**
* Sets the declared type. This may be different than the getObject().getClass(), for example,
* in the case where inheritance is used the declared type may be the super class and the actual
* object could be a subclass.
*
* @param type The declared type of this XMLRoot object.
*/
public void setDeclaredType(Class type) {
this.declaredType = type;
}
/**
* Gets the declared type. This may be different than the getObject().getClass(), for example,
* in the case where inheritance is used the declared type may be the super class and the actual
* object could be a subclass.
*
* @return the declared type
*/
public Class getDeclaredType() {
return this.declaredType;
}
/**
* Checks if is nil. Returns true if this XMLRoot has been explicitly set to nil
* or if xmlRoot.getObject() is null.
*
* @return true, if is nil
*/
public boolean isNil() {
return nil || rootObject == null;
}
/**
* Sets that this XMLRoot object is nil. If setNil(true) is explicitly called then isNil() will
* return true even if rootObject is not null.
*
* @param nil
*/
public void setNil(boolean nil) {
this.nil = nil;
}
}