blob: 7ee7b49af5f0c96918ae2b25ca429b5d954279a2 [file] [log] [blame]
/*
* TestUnknownSubclass.java
*
* Created on September 29, 2006, 3:55 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openjpa.persistence.jdbc.kernel;
import java.sql.*;
import javax.sql.*;
import org.apache.openjpa.jdbc.conf.*;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
import java.lang.annotation.Annotation;
import junit.framework.*;
import org.apache.openjpa.persistence.jdbc.common.apps.*;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.apache.openjpa.persistence.OpenJPAPersistence;
public class TestUnknownSubclass extends JDBCTestCase {
private String parentName =
"openjpa.jdbc.kernel.UnknownSubclassParent";
private String childName =
"openjpa.jdbc.kernel.UnknownSubclassChild";
/** Creates a new instance of TestUnknownSubclass */
public TestUnknownSubclass() {
}
public TestUnknownSubclass(String name) {
super(name);
}
public void setUp()
throws Exception {
// pcl: in the new (registration-less) system, this should not
// matter.
//assertNotRegistered (parentName);
//assertNotRegistered (childName);
EntityManager em= currentEntityManager();
OpenJPAEntityManager kem = OpenJPAPersistence.cast (em);
JDBCConfiguration conf = (JDBCConfiguration) ((OpenJPAEntityManagerSPI) kem).getConfiguration();
boolean flat = !isInheritanceStrategyVertical();
DataSource ds = (DataSource) conf.getConnectionFactory();
Connection c = ds.getConnection(conf.getConnectionUserName(),
conf.getConnectionPassword());
if (c.getAutoCommit())
c.setAutoCommit(false);
c.createStatement()
.executeUpdate("DELETE FROM UNKNOWNSUBCLASSPARENT");
if (!flat)
c.createStatement()
.executeUpdate("DELETE FROM UNKNOWNSUBCLASSCHILD");
String insert = "INSERT INTO UNKNOWNSUBCLASSPARENT"
+ "(TYP, ID, VERSN) VALUES (";
c.createStatement().executeUpdate(insert
+ "'" + parentName + "', 1, 1)");
c.createStatement().executeUpdate(insert
+ "'" + childName + "', 2, 1)");
if (!flat) {
insert = "INSERT INTO UNKNOWNSUBCLASSCHILD (ID) VALUES (";
c.createStatement().executeUpdate(insert + "1)");
c.createStatement().executeUpdate(insert + "2)");
}
c.commit();
em.close();
kem.close();
}
public void testUnknownSubclass()
throws Exception {
// assertNotRegistered (parentName);
// assertNotRegistered (childName);
Class c = UnknownSubclassParent.class;
// assertNotRegistered (childName);
EntityManager em= currentEntityManager();
OpenJPAEntityManager kem = OpenJPAPersistence.cast(em);
startTx(em);
// c = UnknownSubclassChild.class;
//FIXME jthomas conversion incomplete
/*
assertSize(1, kem.createExtent(UnknownSubclassParent.class, false));
assertSize(1, kem.newQuery(
kem.createExtent(UnknownSubclassParent.class, false), ""));
assertSize(2, kem.createExtent(UnknownSubclassParent.class, true));
assertSize(2, kem.createQuery(kem.createExtent(UnknownSubclassParent.class, true), ""));
*/
endTx(em);
em.close();
kem.close();
}
}