blob: ad1db29346de3e7e0fb72e69915d3a649cd88237 [file] [log] [blame]
/*
* Copyright (c) 2018, 2021 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
*/
package org.eclipse.persistence.testing.oxm.xmllogin;
import java.io.StringReader;
import java.io.StringWriter;
import junit.framework.TestCase;
import org.eclipse.persistence.internal.oxm.documentpreservation.DescriptorLevelDocumentPreservationPolicy;
import org.eclipse.persistence.internal.oxm.documentpreservation.NoDocumentPreservationPolicy;
import org.eclipse.persistence.internal.oxm.documentpreservation.XMLBinderPolicy;
import org.eclipse.persistence.oxm.XMLContext;
import org.eclipse.persistence.oxm.XMLLogin;
import org.eclipse.persistence.oxm.documentpreservation.AppendNewElementsOrderingPolicy;
import org.eclipse.persistence.oxm.documentpreservation.IgnoreNewElementsOrderingPolicy;
import org.eclipse.persistence.oxm.documentpreservation.RelativePositionOrderingPolicy;
import org.eclipse.persistence.oxm.platform.DOMPlatform;
import org.eclipse.persistence.oxm.platform.SAXPlatform;
import org.eclipse.persistence.sessions.Project;
import org.eclipse.persistence.sessions.factories.XMLProjectReader;
import org.eclipse.persistence.sessions.factories.XMLProjectWriter;
public class XMLLoginDeploymentXMLTestCases extends TestCase {
private Project m_project;
private XMLLogin m_login;
public XMLLoginDeploymentXMLTestCases(String name) {
super(name);
}
public static void main(String[] args) {
String[] arguments = { "-c", "org.eclipse.persistence.testing.oxm.xmllogin.XMLLoginDeploymentXMLTestCases" };
junit.textui.TestRunner.main(arguments);
}
@Override
public void setUp() {
m_project = new Project();
m_login = new XMLLogin();
m_project.setLogin(m_login);
}
// Bug 242452 - test 'DatasourcePlatform' in project.xml
public void testDataSourcePlatform() {
Project roundTrippedProject;
XMLLogin roundTrippedLogin;
// DatasourcePlatform = SAXPlatform
// ================================
m_login.setDatasourcePlatform(new SAXPlatform());
roundTrippedProject = writeAndReadProject();
roundTrippedLogin = (XMLLogin) roundTrippedProject.getDatasourceLogin();
assertEquals(m_login.getDatasourcePlatform().getClass(), roundTrippedLogin.getDatasourcePlatform().getClass());
// DatasourcePlatform = DOMPlatform
// ================================
m_login.setDatasourcePlatform(new DOMPlatform());
roundTrippedProject = writeAndReadProject();
roundTrippedLogin = (XMLLogin) roundTrippedProject.getDatasourceLogin();
assertEquals(m_login.getDatasourcePlatform().getClass(), roundTrippedLogin.getDatasourcePlatform().getClass());
}
// Bug - test 'EqualNamespaceResolvers' in project.xml
public void testEqualNamespaceResolvers() {
Project roundTrippedProject;
XMLLogin roundTrippedLogin;
// EqualNamespaceResolvers = true
// ==============================
m_login.setEqualNamespaceResolvers(true);
roundTrippedProject = writeAndReadProject();
roundTrippedLogin = (XMLLogin) roundTrippedProject.getDatasourceLogin();
assertEquals(m_login.hasEqualNamespaceResolvers(), roundTrippedLogin.hasEqualNamespaceResolvers());
// EqualNamespaceResolvers = false
// ===============================
m_login.setEqualNamespaceResolvers(false);
roundTrippedProject = writeAndReadProject();
roundTrippedLogin = (XMLLogin) roundTrippedProject.getDatasourceLogin();
assertEquals(m_login.hasEqualNamespaceResolvers(), roundTrippedLogin.hasEqualNamespaceResolvers());
}
// Bug - test 'DocumentPreservationPolicy' in project.xml
public void testDocumentPreservationPolicy() {
Project roundTrippedProject;
XMLLogin roundTrippedLogin;
// DocumentPreservationPolicy = DescriptorLevelDocumentPreservationPolicy
// NodeOrderingPolicy = AppendNewElementsOrderingPolicy
// ======================================================================
m_login.setDocumentPreservationPolicy(new DescriptorLevelDocumentPreservationPolicy());
m_login.getDocumentPreservationPolicy().setNodeOrderingPolicy(new AppendNewElementsOrderingPolicy());
roundTrippedProject = writeAndReadProject();
roundTrippedLogin = (XMLLogin) roundTrippedProject.getDatasourceLogin();
assertEquals(m_login.getDocumentPreservationPolicy().getClass(), roundTrippedLogin.getDocumentPreservationPolicy().getClass());
assertEquals(m_login.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass(),
roundTrippedLogin.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass());
// NodeOrderingPolicy = IgnoreNewElementsOrderingPolicy
// DocumentPreservationPolicy = NoDocumentPreservationPolicy
// =========================================================
m_login.setDocumentPreservationPolicy(new NoDocumentPreservationPolicy());
m_login.getDocumentPreservationPolicy().setNodeOrderingPolicy(new IgnoreNewElementsOrderingPolicy());
roundTrippedProject = writeAndReadProject();
roundTrippedLogin = (XMLLogin) roundTrippedProject.getDatasourceLogin();
assertEquals(m_login.getDocumentPreservationPolicy().getClass(), roundTrippedLogin.getDocumentPreservationPolicy().getClass());
assertEquals(m_login.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass(),
roundTrippedLogin.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass());
// DocumentPreservationPolicy = XMLBinderPolicy
// NodeOrderingPolicy = RelativePositionOrderingPolicy
// ===================================================
m_login.setDocumentPreservationPolicy(new XMLBinderPolicy());
m_login.getDocumentPreservationPolicy().setNodeOrderingPolicy(new RelativePositionOrderingPolicy());
roundTrippedProject = writeAndReadProject();
roundTrippedLogin = (XMLLogin) roundTrippedProject.getDatasourceLogin();
assertEquals(m_login.getDocumentPreservationPolicy().getClass(), roundTrippedLogin.getDocumentPreservationPolicy().getClass());
assertEquals(m_login.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass(),
roundTrippedLogin.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass());
}
// Write the Project out to deployment XML, then read it back in and return
// the round-tripped Project.
public Project writeAndReadProject() {
StringWriter buffer = new StringWriter();
XMLProjectWriter.write(m_project, buffer);
StringReader in = new StringReader(buffer.getBuffer().toString());
XMLProjectReader.setShouldUseSchemaValidation(true);
return XMLProjectReader.read(in);
}
}