Return-Path: Delivered-To: apmail-db-jdo-commits-archive@www.apache.org Received: (qmail 47691 invoked from network); 29 Jun 2010 17:13:13 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 29 Jun 2010 17:13:13 -0000 Received: (qmail 91606 invoked by uid 500); 29 Jun 2010 17:13:12 -0000 Mailing-List: contact jdo-commits-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jdo-dev@db.apache.org Delivered-To: mailing list jdo-commits@db.apache.org Received: (qmail 91599 invoked by uid 99); 29 Jun 2010 17:13:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 29 Jun 2010 17:13:12 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 29 Jun 2010 17:13:09 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id CF61F23888CE; Tue, 29 Jun 2010 17:11:45 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r959037 - in /db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory: AfterCloseSetMethodsThrowException.java Close.java CloseFailsIfTransactionActive.java CloseWithoutPermissionThrowsSecurityException.java Date: Tue, 29 Jun 2010 17:11:45 -0000 To: jdo-commits@db.apache.org From: clr@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100629171145.CF61F23888CE@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: clr Date: Tue Jun 29 17:11:45 2010 New Revision: 959037 URL: http://svn.apache.org/viewvc?rev=959037&view=rev Log: JDO-653 Thanks to Peter Dettman for the patch Modified: db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/AfterCloseSetMethodsThrowException.java db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/Close.java db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseFailsIfTransactionActive.java db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseWithoutPermissionThrowsSecurityException.java Modified: db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/AfterCloseSetMethodsThrowException.java URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/AfterCloseSetMethodsThrowException.java?rev=959037&r1=959036&r2=959037&view=diff ============================================================================== --- db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/AfterCloseSetMethodsThrowException.java (original) +++ db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/AfterCloseSetMethodsThrowException.java Tue Jun 29 17:11:45 2010 @@ -21,7 +21,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.Iterator; -import javax.jdo.JDOException; import javax.jdo.JDOFatalInternalException; import javax.jdo.JDOUserException; import javax.jdo.PersistenceManagerFactory; @@ -67,40 +66,69 @@ public class AfterCloseSetMethodsThrowEx public void test() { Class[] stringParameters = new Class[]{String.class}; Class[] booleanParameters = new Class[]{boolean.class}; + Class[] objectParameters = new Class[]{Object.class}; + Class[] integerParameters = new Class[]{Integer.class}; Object[] stringParameter = new Object[]{"Nobody knows the trouble"}; Object[] booleanParameter = new Object[]{new Boolean(false)}; + Object[] objectParameter = new Object[]{null}; + Object[] integerParameter = new Object[]{new Integer(0)}; SetProperty[] setMethods = new SetProperty[] { new SetProperty("setConnectionDriverName", stringParameters, stringParameter), + new SetProperty("setConnectionFactory", objectParameters, objectParameter), + new SetProperty("setConnectionFactory2", objectParameters, objectParameter), new SetProperty("setConnectionFactoryName", stringParameters, stringParameter), new SetProperty("setConnectionFactory2Name", stringParameters, stringParameter), + new SetProperty("setConnectionPassword", stringParameters, stringParameter), new SetProperty("setConnectionURL", stringParameters, stringParameter), new SetProperty("setConnectionUserName", stringParameters, stringParameter), - new SetProperty("setConnectionPassword", stringParameters, stringParameter), + new SetProperty("setCopyOnAttach", booleanParameters, booleanParameter), + new SetProperty("setDetachAllOnCommit", booleanParameters, booleanParameter), new SetProperty("setIgnoreCache", booleanParameters, booleanParameter), + new SetProperty("setMapping", stringParameters, stringParameter), new SetProperty("setMultithreaded", booleanParameters, booleanParameter), + new SetProperty("setName", stringParameters, stringParameter), new SetProperty("setNontransactionalRead", booleanParameters, booleanParameter), new SetProperty("setNontransactionalWrite", booleanParameters, booleanParameter), new SetProperty("setOptimistic", booleanParameters, booleanParameter), + new SetProperty("setPersistenceUnitName", stringParameters, stringParameter), + new SetProperty("setReadOnly", booleanParameters, booleanParameter), new SetProperty("setRestoreValues", booleanParameters, booleanParameter), - new SetProperty("setRetainValues", booleanParameters, booleanParameter) + new SetProperty("setRetainValues", booleanParameters, booleanParameter), + new SetProperty("setServerTimeZoneID", stringParameters, stringParameter), + new SetProperty("setTransactionIsolationLevel", stringParameters, stringParameter), + new SetProperty("setTransactionType", stringParameters, stringParameter) }; - + GetProperty[] getMethods = new GetProperty[] { new GetProperty("getConnectionDriverName"), + new GetProperty("getConnectionFactory"), + new GetProperty("getConnectionFactory2"), new GetProperty("getConnectionFactoryName"), new GetProperty("getConnectionFactory2Name"), new GetProperty("getConnectionURL"), new GetProperty("getConnectionUserName"), + new GetProperty("getCopyOnAttach"), + new GetProperty("getDataStoreCache"), + new GetProperty("getDetachAllOnCommit"), + new GetProperty("getFetchGroups"), new GetProperty("getIgnoreCache"), + new GetProperty("getMapping"), new GetProperty("getMultithreaded"), + new GetProperty("getName"), new GetProperty("getNontransactionalRead"), new GetProperty("getNontransactionalWrite"), new GetProperty("getOptimistic"), + new GetProperty("getPersistenceUnitName"), + new GetProperty("getProperties"), + new GetProperty("getReadOnly"), new GetProperty("getRestoreValues"), - new GetProperty("getRetainValues") + new GetProperty("getRetainValues"), + new GetProperty("getServerTimeZoneID"), + new GetProperty("getTransactionIsolationLevel"), + new GetProperty("getTransactionType") }; - + pmf = getPMF(); closePMF(pmf); // don't use closePMF() because that sets pmf to null // each set method should throw an exception @@ -111,11 +139,14 @@ public class AfterCloseSetMethodsThrowEx try { sp.execute(pmf); fail(ASSERTION_FAILED, - "pmf method " + where + " shoudl throw JDOUserException when called for closed pmf"); + "pmf method " + where + " should throw JDOUserException when called for closed pmf"); } catch (JDOUserException ex) { if (debug) logger.debug("Caught expected exception " + ex.toString() + " from " + where); + } catch (Exception ex) { + fail(ASSERTION_FAILED, + "Caught unexpected exception " + ex.toString() + " from " + where); } } // each get method should succeed @@ -125,7 +156,7 @@ public class AfterCloseSetMethodsThrowEx String where = gp.getMethodName(); try { gp.execute(pmf); - } catch (JDOUserException ex) { + } catch (Exception ex) { fail(ASSERTION_FAILED, "Caught unexpected exception " + ex.toString() + " from " + where); @@ -157,7 +188,7 @@ public class AfterCloseSetMethodsThrowEx } catch (IllegalAccessException ex) { throw new JDOFatalInternalException("IllegalAccessException", ex); } catch (java.lang.reflect.InvocationTargetException ex) { - throw (JDOException)ex.getTargetException(); + throw (RuntimeException)ex.getTargetException(); } } @@ -187,7 +218,7 @@ public class AfterCloseSetMethodsThrowEx } catch (IllegalAccessException ex) { throw new JDOFatalInternalException("IllegalAccessException", ex); } catch (java.lang.reflect.InvocationTargetException ex) { - throw (JDOException)ex.getTargetException(); + throw (RuntimeException)ex.getTargetException(); } } Modified: db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/Close.java URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/Close.java?rev=959037&r1=959036&r2=959037&view=diff ============================================================================== --- db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/Close.java (original) +++ db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/Close.java Tue Jun 29 17:11:45 2010 @@ -17,6 +17,9 @@ package org.apache.jdo.tck.api.persistencemanagerfactory; +import java.security.AccessController; +import java.security.PrivilegedAction; + import javax.jdo.JDOFatalUserException; import javax.jdo.JDOUserException; @@ -78,7 +81,28 @@ public class Close extends JDO_Test { fail(ASSERTION_FAILED, "Unexpected exception at pmf.close()/isClosed(): " + ex); } - + + // pmf.close() on already-closed pmf should not throw an exception + try { + // don't use closePMF methods because they check isClosed before calling + AccessController.doPrivileged( + new PrivilegedAction () { + public Object run () { + pmf.close(); + return null; + } + } + ); + } catch (JDOUserException ex) { + // unexpected exception + fail(ASSERTION_FAILED, + "Unexpected exception at repeated pmf.close(): " + ex); + } catch (JDOFatalUserException ex) { + // unexpected exception + fail(ASSERTION_FAILED, + "Unexpected exception at repeated pmf.close(): " + ex); + } + // trying to get a getPersistenceManager should result in a exception try { pm = pmf.getPersistenceManager(); Modified: db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseFailsIfTransactionActive.java URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseFailsIfTransactionActive.java?rev=959037&r1=959036&r2=959037&view=diff ============================================================================== --- db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseFailsIfTransactionActive.java (original) +++ db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseFailsIfTransactionActive.java Tue Jun 29 17:11:45 2010 @@ -111,6 +111,12 @@ public class CloseFailsIfTransactionActi failed.toString()); } } + if (pm1.isClosed()){ + fail(ASSERTION_FAILED, "Unexpected pm1 is closed."); + } + if (pm2.isClosed()){ + fail(ASSERTION_FAILED, "Unexpected pm2 is closed."); + } } catch (Exception uex) { setAborted(); Modified: db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseWithoutPermissionThrowsSecurityException.java URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseWithoutPermissionThrowsSecurityException.java?rev=959037&r1=959036&r2=959037&view=diff ============================================================================== --- db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseWithoutPermissionThrowsSecurityException.java (original) +++ db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanagerfactory/CloseWithoutPermissionThrowsSecurityException.java Tue Jun 29 17:11:45 2010 @@ -19,7 +19,10 @@ package org.apache.jdo.tck.api.persisten import java.security.Permission; +import javax.jdo.JDOException; +import javax.jdo.PersistenceManagerFactory; import javax.jdo.spi.JDOPermission; + import org.apache.jdo.tck.JDO_Test; import org.apache.jdo.tck.util.BatchTestRunner; @@ -57,6 +60,14 @@ public class CloseWithoutPermissionThrow public void test() { pmf = getPMF(); + closeWithMySecurityManager(pmf); + + closePMF(pmf); + + closeWithMySecurityManager(pmf); + } + + private void closeWithMySecurityManager(PersistenceManagerFactory pmf) { SecurityManager oldSecMgr = System.getSecurityManager(); try { System.setSecurityManager(new MySecurityManager()); @@ -67,10 +78,15 @@ public class CloseWithoutPermissionThrow try { pmf.close(); + fail(ASSERTION_FAILED, + "SecurityException was not thrown when calling pmf.close() " + + "without JDOPermission.CLOSE_PERSISTENCE_MANAGER_FACTORY"); } catch (SecurityException ex) { // expected exception if JDOPermission("closePersistenceManagerFactory") is not set if (debug) logger.debug("caught expected exception " + ex.toString()); + } catch (JDOException e) { + fail(ASSERTION_FAILED, "Unexpected exception at pmf.close(): " + e); } finally { System.setSecurityManager(oldSecMgr);