org.eclipse.persistence.sessions.factories.OracleDirectToXMLTypeMappingHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction 774c696
/*******************************************************************************
* Copyright (c) 1998, 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:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.sessions.factories;
import org.eclipse.persistence.internal.codegen.NonreflectiveMethodDefinition;
import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl;
import org.eclipse.persistence.internal.sessions.factories.DirectToXMLTypeMappingHelper;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.DirectToFieldMapping;
import org.eclipse.persistence.oxm.NamespaceResolver;
import org.eclipse.persistence.oxm.XMLDescriptor;
import org.eclipse.persistence.oxm.mappings.XMLDirectMapping;
import org.eclipse.persistence.mappings.xdb.DirectToXMLTypeMapping;
/**
* Helper class to abstract the XML mapping for DirectToXMLType.
*
* @author djclarke
* @since EclipseLink 0.1
*/
public class OracleDirectToXMLTypeMappingHelper extends DirectToXMLTypeMappingHelper {
protected String namespaceXPath;
/**
* Add the XMLType mapping indicator to the DatabaseMapping descriptor.
*/
@Override
public void addClassIndicator(XMLDescriptor descriptor, String namespaceXPath) {
this.namespaceXPath = namespaceXPath;
descriptor.getInheritancePolicy().addClassIndicator(DirectToXMLTypeMapping.class,
namespaceXPath + "direct-xml-type-mapping");
}
/**
* Write the Project.class code for the XMLType property.
*/
public void writeShouldreadWholeDocument(NonreflectiveMethodDefinition method, String mappingName, DatabaseMapping mapping) {
method.addLine(mappingName + ".setShouldReadWholeDocument(" + ((DirectToXMLTypeMapping)mapping).shouldReadWholeDocument() + ");");
}
/**
* Invoked from a descriptor is not found.
*/
@Override
public void addXDBDescriptors(String name, DatabaseSessionImpl session,
NamespaceResolver namespaceResolver) {
if (session.getDescriptorForAlias(name) == null){
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClass(DirectToXMLTypeMapping.class);
descriptor.descriptorIsAggregate();
descriptor.getInheritancePolicy().setParentClass(DirectToFieldMapping.class);
XMLDirectMapping directtofieldmapping = new XMLDirectMapping();
directtofieldmapping.setAttributeName("shouldReadWholeDocument");
directtofieldmapping.setGetMethodName("shouldReadWholeDocument");
directtofieldmapping.setSetMethodName("setShouldReadWholeDocument");
directtofieldmapping.setXPath(namespaceXPath + "read-whole-document/text()");
directtofieldmapping.setNullValue(Boolean.FALSE);
descriptor.addMapping(directtofieldmapping);
// Need to set the namespace resolver.
descriptor.setNamespaceResolver(namespaceResolver);
session.addDescriptor(descriptor);
}
}
}