blob: f210168b707a4b534bd35c3afe4ab1fe15062860 [file] [log] [blame]
/*
* Copyright (c) 1998, 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:
// rbarkhouse - 2009-11-16 14:08:13 - initial implementation
package org.eclipse.persistence.testing.oxm.dynamic;
import java.util.ArrayList;
import org.eclipse.persistence.internal.queries.ContainerPolicy;
import org.eclipse.persistence.oxm.XMLDescriptor;
import org.eclipse.persistence.oxm.mappings.XMLInverseReferenceMapping;
import org.eclipse.persistence.oxm.mappings.XMLCollectionReferenceMapping;
import org.eclipse.persistence.oxm.mappings.XMLCompositeCollectionMapping;
import org.eclipse.persistence.oxm.mappings.XMLCompositeObjectMapping;
import org.eclipse.persistence.oxm.mappings.XMLDirectMapping;
import org.eclipse.persistence.oxm.mappings.XMLObjectReferenceMapping;
import org.eclipse.persistence.sessions.Project;
import org.eclipse.persistence.testing.oxm.mappings.collectionreference.reuse.Address;
import org.eclipse.persistence.testing.oxm.mappings.collectionreference.reuse.Employee;
import org.eclipse.persistence.testing.oxm.mappings.collectionreference.reuse.Root;
public class DynamicTestProject extends Project {
public DynamicTestProject() {
super();
addEmployeeDescriptor();
addAddressDescriptor();
addPhoneNumberDescriptor();
addEmailDescriptor();
addSecurityCredentialDescriptor();
addRootDescriptor();
}
private void addEmployeeDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmployee");
XMLDirectMapping name = new XMLDirectMapping();
name.setAttributeName("name");
name.setXPath("name/text()");
descriptor.addMapping(name);
XMLCompositeObjectMapping addr = new XMLCompositeObjectMapping();
addr.setAttributeName("address");
addr.setXPath("address");
addr.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XAddress");
descriptor.addMapping(addr);
XMLCompositeCollectionMapping phone = new XMLCompositeCollectionMapping();
phone.setAttributeName("phoneNumbers");
phone.setXPath("phone-numbers/number");
phone.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XPhoneNumber");
phone.useCollectionClass(ArrayList.class);
phone.setContainerPolicy(ContainerPolicy.buildPolicyFor(ArrayList.class));
descriptor.addMapping(phone);
XMLCollectionReferenceMapping emails = new XMLCollectionReferenceMapping();
emails.setAttributeName("emails");
emails.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmail");
emails.addSourceToTargetKeyFieldAssociation("email-id/text()", "@id");
descriptor.addMapping(emails);
XMLObjectReferenceMapping secCred = new XMLObjectReferenceMapping();
secCred.setAttributeName("securityCredential");
secCred.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XSecurityCredential");
secCred.addSourceToTargetKeyFieldAssociation("sec-cred-id/text()", "@id");
descriptor.addMapping(secCred);
this.addDescriptor(descriptor);
}
private void addAddressDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.testing.oxm.dynamic.XAddress");
XMLDirectMapping street = new XMLDirectMapping();
street.setAttributeName("street");
street.setXPath("street/text()");
descriptor.addMapping(street);
XMLInverseReferenceMapping owningEmployee = new XMLInverseReferenceMapping();
owningEmployee.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmployee");
owningEmployee.setMappedBy("address");
owningEmployee.setAttributeName("owningEmployee");
owningEmployee.setSetMethodName("setOwningEmployee");
owningEmployee.setGetMethodName("getOwningEmployee");
descriptor.addMapping(owningEmployee);
this.addDescriptor(descriptor);
}
private void addPhoneNumberDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.testing.oxm.dynamic.XPhoneNumber");
XMLDirectMapping num = new XMLDirectMapping();
num.setAttributeName("number");
num.setXPath("text()");
descriptor.addMapping(num);
XMLInverseReferenceMapping owningEmployee = new XMLInverseReferenceMapping();
owningEmployee.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmployee");
owningEmployee.setMappedBy("phoneNumbers");
owningEmployee.setAttributeName("owningEmployee");
owningEmployee.setSetMethodName("setOwningEmployee");
owningEmployee.setGetMethodName("getOwningEmployee");
descriptor.addMapping(owningEmployee);
this.addDescriptor(descriptor);
}
private void addSecurityCredentialDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.testing.oxm.dynamic.XSecurityCredential");
descriptor.addPrimaryKeyFieldName("@id");
XMLDirectMapping id = new XMLDirectMapping();
id.setAttributeName("id");
id.setXPath("@id");
descriptor.addMapping(id);
XMLDirectMapping zone = new XMLDirectMapping();
zone.setAttributeName("zone");
zone.setXPath("zone/text()");
descriptor.addMapping(zone);
XMLDirectMapping keyNumber = new XMLDirectMapping();
keyNumber.setAttributeName("keyNumber");
keyNumber.setXPath("key-number/text()");
descriptor.addMapping(keyNumber);
XMLInverseReferenceMapping owningEmployee = new XMLInverseReferenceMapping();
owningEmployee.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmployee");
owningEmployee.setMappedBy("securityCredential");
owningEmployee.setAttributeName("owningEmployee");
owningEmployee.setSetMethodName("setOwningEmployee");
owningEmployee.setGetMethodName("getOwningEmployee");
descriptor.addMapping(owningEmployee);
this.addDescriptor(descriptor);
}
private void addEmailDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmail");
descriptor.addPrimaryKeyFieldName("@id");
XMLDirectMapping id = new XMLDirectMapping();
id.setAttributeName("id");
id.setXPath("@id");
descriptor.addMapping(id);
XMLDirectMapping username = new XMLDirectMapping();
username.setAttributeName("username");
username.setXPath("username/text()");
descriptor.addMapping(username);
XMLDirectMapping domain = new XMLDirectMapping();
domain.setAttributeName("domain");
domain.setXPath("domain/text()");
descriptor.addMapping(domain);
XMLInverseReferenceMapping owningEmployee = new XMLInverseReferenceMapping();
owningEmployee.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmployee");
owningEmployee.setMappedBy("emails");
owningEmployee.setAttributeName("owningEmployee");
owningEmployee.setSetMethodName("setOwningEmployee");
owningEmployee.setGetMethodName("getOwningEmployee");
descriptor.addMapping(owningEmployee);
this.addDescriptor(descriptor);
}
private void addRootDescriptor() {
XMLDescriptor descriptor = new XMLDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.testing.oxm.dynamic.XRoot");
descriptor.setDefaultRootElement("root");
XMLCompositeObjectMapping employee = new XMLCompositeObjectMapping();
employee.setAttributeName("employee");
employee.setXPath("employee");
employee.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmployee");
descriptor.addMapping(employee);
XMLCompositeCollectionMapping projects = new XMLCompositeCollectionMapping();
projects.setAttributeName("emails");
projects.setXPath("email");
projects.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XEmail");
descriptor.addMapping(projects);
XMLCompositeObjectMapping secCred = new XMLCompositeObjectMapping();
secCred.setAttributeName("securityCredential");
secCred.setXPath("security-credential");
secCred.setReferenceClassName("org.eclipse.persistence.testing.oxm.dynamic.XSecurityCredential");
descriptor.addMapping(secCred);
this.addDescriptor(descriptor);
}
}