/******************************************************************************* | |
* 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.testing.tests.sessionsxml; | |
import java.util.HashMap; | |
import java.util.Iterator; | |
import org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform; | |
import org.eclipse.persistence.sequencing.DefaultSequence; | |
import org.eclipse.persistence.sequencing.NativeSequence; | |
import org.eclipse.persistence.sequencing.Sequence; | |
import org.eclipse.persistence.sequencing.TableSequence; | |
import org.eclipse.persistence.sequencing.UnaryTableSequence; | |
import org.eclipse.persistence.sessions.DatabaseSession; | |
import org.eclipse.persistence.testing.framework.AutoVerifyTestCase; | |
import org.eclipse.persistence.testing.framework.TestErrorException; | |
import org.eclipse.persistence.sessions.factories.SessionManager; | |
import org.eclipse.persistence.sessions.factories.XMLSessionConfigLoader; | |
/** | |
* Tests sequencing loading in session xml file that is built and validated against the | |
* XML Schema | |
* | |
* @author Andrei Ilitchev | |
* @version 1.0 | |
* @date June 11, 2004 | |
*/ | |
public class SessionsXMLSchemaSequencingTest extends AutoVerifyTestCase { | |
final int numSessions = 4; | |
DatabaseSession[] session = new DatabaseSession[numSessions]; | |
String[] sessionName = { "NoDefaultSequence_NoSequences", "DefaultSequence_NoSequences", "NoDefaultSequence_Sequences", "DefaultSequence_Sequences" }; | |
Sequence definedDefaultSequence; | |
HashMap definedSequences = new HashMap(); | |
public SessionsXMLSchemaSequencingTest() { | |
setDescription("Test loading of sequencing in session xml against the XML Schema"); | |
definedDefaultSequence = new TableSequence("", 25, "MY_SEQUENCE", "MY_SEQ_NAME", "MY_SEQ_COUNT"); | |
definedSequences.put("EMP_SEQ", new DefaultSequence("EMP_SEQ", 30)); | |
definedSequences.put("PROJ_SEQ", new NativeSequence("PROJ_SEQ", 35)); | |
definedSequences.put("ADDRESS_SEQ", new UnaryTableSequence("ADDRESS_SEQ", 40)); | |
} | |
public void reset() { | |
for (int i = 0; i < numSessions; i++) { | |
if (session[i] != null) { | |
SessionManager.getManager().getSessions().remove(session[i]); | |
session[i] = null; | |
} | |
} | |
} | |
protected void setup() throws Exception { | |
XMLSessionConfigLoader loader = new XMLSessionConfigLoader("org/eclipse/persistence/testing/models/sessionsxml/XMLSchemaSessionSequencing.xml"); | |
for (int i = 0; i < numSessions; i++) { | |
session[i] = (DatabaseSession)SessionManager.getManager().getSession(loader, sessionName[i], getClass().getClassLoader(), false, true); | |
} | |
} | |
protected void verify() { | |
for (int i = 0; i < numSessions; i++) { | |
boolean isDefaultSequenceDefined = sessionName[i].indexOf("NoDefaultSequence") == -1; | |
boolean isSequencesDefined = sessionName[i].indexOf("NoSequences") == -1; | |
boolean ok; | |
if (isDefaultSequenceDefined) { | |
ok = definedDefaultSequence.equals(session[i].getDatasourcePlatform().getDefaultSequence()); | |
} else { | |
ok = !((DatasourcePlatform)session[i].getDatasourcePlatform()).hasDefaultSequence(); | |
} | |
if (!ok) { | |
throw new TestErrorException("Session " + sessionName[i] + " has wrong defaultSequence"); | |
} | |
if (isSequencesDefined) { | |
Iterator it = definedSequences.values().iterator(); | |
while (it.hasNext()) { | |
Sequence definedSequence = (Sequence)it.next(); | |
Sequence sequence = session[i].getDatasourcePlatform().getSequence(definedSequence.getName()); | |
ok = definedSequence.equals(sequence); | |
if (!ok) { | |
throw new TestErrorException("Session " + sessionName[i] + " has wrong " + sequence.getName() + " sequence"); | |
} | |
} | |
} else { | |
ok = session[i].getDatasourcePlatform().getSequences() == null || session[i].getDatasourcePlatform().getSequences().isEmpty(); | |
if (!ok) { | |
throw new TestErrorException("Session " + sessionName[i] + " has sequences, but it's not supposed to."); | |
} | |
} | |
} | |
} | |
} |