| /* |
| * 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.File; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.persistence.internal.sessions.factories.XMLSessionConfigWriter; |
| import org.eclipse.persistence.internal.sessions.factories.model.SessionConfigs; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.AppendNewElementsOrderingPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.DescriptorLevelDocumentPreservationPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.IgnoreNewElementsOrderingPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.NoDocumentPreservationPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.RelativePositionOrderingPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.XMLBinderPolicyConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.login.XMLLoginConfig; |
| import org.eclipse.persistence.internal.sessions.factories.model.session.DatabaseSessionConfig; |
| import org.eclipse.persistence.oxm.platform.DOMPlatform; |
| import org.eclipse.persistence.oxm.platform.SAXPlatform; |
| import org.eclipse.persistence.sessions.factories.XMLSessionConfigLoader; |
| |
| public class XMLLoginSessionsXMLTestCases extends TestCase { |
| |
| private DatabaseSessionConfig m_sessionConfig; |
| private XMLLoginConfig m_loginConfig; |
| |
| private final String SESSION_NAME = "XMLLoginSessionsXMLTestCases"; |
| private final String SESSION_FILE_NAME = "XMLLoginSessionsXMLTestCases-sessions.xml"; |
| |
| public XMLLoginSessionsXMLTestCases(String name) { |
| super(name); |
| } |
| |
| @Override |
| public void setUp() { |
| m_sessionConfig = new DatabaseSessionConfig(); |
| m_sessionConfig.setName(SESSION_NAME); |
| m_loginConfig = new XMLLoginConfig(); |
| m_sessionConfig.setLoginConfig(m_loginConfig); |
| } |
| |
| public static void main(String[] args) { |
| String[] arguments = { "-c", "org.eclipse.persistence.testing.oxm.xmllogin.XMLLoginSessionsXMLTestCases" }; |
| junit.textui.TestRunner.main(arguments); |
| } |
| |
| // Bug 242452 - test 'DatasourcePlatform' in sessions.xml |
| public void testDataSourcePlatform() { |
| DatabaseSessionConfig roundTrippedConfig; |
| XMLLoginConfig roundTrippedLoginConfig; |
| |
| // DatasourcePlatform = SAXPlatform |
| // ================================ |
| m_loginConfig.setPlatformClass(new SAXPlatform().getClass().getName()); |
| |
| roundTrippedConfig = writeAndReadSessionsXML(); |
| roundTrippedLoginConfig = (XMLLoginConfig) roundTrippedConfig.getLoginConfig(); |
| |
| assertEquals(m_loginConfig.getPlatformClass(), roundTrippedLoginConfig.getPlatformClass()); |
| |
| // DatasourcePlatform = DOMPlatform |
| // ================================ |
| m_loginConfig.setPlatformClass(new DOMPlatform().getClass().getName()); |
| |
| roundTrippedConfig = writeAndReadSessionsXML(); |
| roundTrippedLoginConfig = (XMLLoginConfig) roundTrippedConfig.getLoginConfig(); |
| |
| assertEquals(m_loginConfig.getPlatformClass(), roundTrippedLoginConfig.getPlatformClass()); |
| } |
| |
| // Bug - test 'EqualNamespaceResolvers' in sessions.xml |
| public void testEqualNamespaceResolvers() { |
| DatabaseSessionConfig roundTrippedConfig; |
| XMLLoginConfig roundTrippedLoginConfig; |
| |
| // EqualNamespaceResolvers = true |
| // ============================== |
| m_loginConfig.setEqualNamespaceResolvers(true); |
| |
| roundTrippedConfig = writeAndReadSessionsXML(); |
| roundTrippedLoginConfig = (XMLLoginConfig) roundTrippedConfig.getLoginConfig(); |
| |
| assertEquals(m_loginConfig.getEqualNamespaceResolvers(), roundTrippedLoginConfig.getEqualNamespaceResolvers()); |
| |
| // EqualNamespaceResolvers = false |
| // =============================== |
| m_loginConfig.setEqualNamespaceResolvers(false); |
| |
| roundTrippedConfig = writeAndReadSessionsXML(); |
| roundTrippedLoginConfig = (XMLLoginConfig) roundTrippedConfig.getLoginConfig(); |
| |
| assertEquals(m_loginConfig.getEqualNamespaceResolvers(), roundTrippedLoginConfig.getEqualNamespaceResolvers()); |
| } |
| |
| // Bug - test 'DocumentPreservationPolicy' in sessions.xml |
| public void testDocumentPreservationPolicy() { |
| DatabaseSessionConfig roundTrippedConfig; |
| XMLLoginConfig roundTrippedLoginConfig; |
| |
| // DocumentPreservationPolicy = DescriptorLevelDocumentPreservationPolicy |
| // NodeOrderingPolicy = AppendNewElementsOrderingPolicy |
| // ====================================================================== |
| m_loginConfig.setDocumentPreservationPolicy(new DescriptorLevelDocumentPreservationPolicyConfig()); |
| m_loginConfig.getDocumentPreservationPolicy().setNodeOrderingPolicy(new AppendNewElementsOrderingPolicyConfig()); |
| |
| roundTrippedConfig = writeAndReadSessionsXML(); |
| roundTrippedLoginConfig = (XMLLoginConfig) roundTrippedConfig.getLoginConfig(); |
| |
| assertEquals(m_loginConfig.getDocumentPreservationPolicy().getClass(), roundTrippedLoginConfig.getDocumentPreservationPolicy().getClass()); |
| assertEquals(m_loginConfig.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass(), |
| roundTrippedLoginConfig.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass()); |
| |
| // DocumentPreservationPolicy = NoDocumentPreservationPolicy |
| // NodeOrderingPolicy = IgnoreNewElementsOrderingPolicy |
| // ========================================================= |
| m_loginConfig.setDocumentPreservationPolicy(new NoDocumentPreservationPolicyConfig()); |
| m_loginConfig.getDocumentPreservationPolicy().setNodeOrderingPolicy(new IgnoreNewElementsOrderingPolicyConfig()); |
| |
| roundTrippedConfig = writeAndReadSessionsXML(); |
| roundTrippedLoginConfig = (XMLLoginConfig) roundTrippedConfig.getLoginConfig(); |
| |
| assertEquals(m_loginConfig.getDocumentPreservationPolicy().getClass(), roundTrippedLoginConfig.getDocumentPreservationPolicy().getClass()); |
| assertEquals(m_loginConfig.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass(), |
| roundTrippedLoginConfig.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass()); |
| |
| // DocumentPreservationPolicy = XMLBinderPolicy |
| // NodeOrderingPolicy = RelativePositionOrderingPolicy |
| // =================================================== |
| m_loginConfig.setDocumentPreservationPolicy(new XMLBinderPolicyConfig()); |
| m_loginConfig.getDocumentPreservationPolicy().setNodeOrderingPolicy(new RelativePositionOrderingPolicyConfig()); |
| |
| roundTrippedConfig = writeAndReadSessionsXML(); |
| roundTrippedLoginConfig = (XMLLoginConfig) roundTrippedConfig.getLoginConfig(); |
| |
| assertEquals(m_loginConfig.getDocumentPreservationPolicy().getClass(), roundTrippedLoginConfig.getDocumentPreservationPolicy().getClass()); |
| assertEquals(m_loginConfig.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass(), |
| roundTrippedLoginConfig.getDocumentPreservationPolicy().getNodeOrderingPolicy().getClass()); |
| } |
| |
| // Write the SessionConfig out to sessions.xml, then read it back in and return |
| // the round-tripped SessionConfig. |
| public DatabaseSessionConfig writeAndReadSessionsXML() { |
| SessionConfigs configs = new SessionConfigs(); |
| configs.addSessionConfig(m_sessionConfig); |
| configs.setVersion("0"); |
| XMLSessionConfigWriter.write(configs, SESSION_FILE_NAME); |
| |
| XMLSessionConfigLoader sessionLoader = new XMLSessionConfigLoader(SESSION_FILE_NAME); |
| SessionConfigs readConfigs = sessionLoader.loadConfigsForMappingWorkbench(this.getClass().getClassLoader()); |
| |
| // There is only one session in this sessions.xml |
| return (DatabaseSessionConfig) readConfigs.getSessionConfigs().firstElement(); |
| } |
| |
| @Override |
| public void tearDown() { |
| File tempFile = new File(SESSION_FILE_NAME); |
| tempFile.delete(); |
| } |
| |
| } |