db-ojb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mka...@apache.org
Subject cvs commit: db-ojb/src/test/org/apache/ojb/broker/metadata MetadataMultithreadedTest.java
Date Fri, 11 Mar 2005 18:18:19 GMT
mkalen      2005/03/11 10:18:19

  Modified:    src/test/org/apache/ojb/broker/metadata
                        MetadataMultithreadedTest.java
  Log:
  Merge with OJB_1_0_RELEASE branch: testcase for asserting that CollectionProxy loading is
able to reset profile even if "wrong" metadataprofile is active at load time. (Already passes
in OJB1.1 because of broker refactoring.)
  
  Revision  Changes    Path
  1.12      +51 -1     db-ojb/src/test/org/apache/ojb/broker/metadata/MetadataMultithreadedTest.java
  
  Index: MetadataMultithreadedTest.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/metadata/MetadataMultithreadedTest.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- MetadataMultithreadedTest.java	11 Mar 2005 18:01:05 -0000	1.11
  +++ MetadataMultithreadedTest.java	11 Mar 2005 18:18:19 -0000	1.12
  @@ -137,6 +137,56 @@
   
       }
   
  +    /**
  +     * Regression test for loading CollectionProxy data in a thread where the profile
  +     * is swapped, and the thread-local broker is closed, between CollectionProxy construction
  +     * and retrieveCollections-call.
  +     * @throws Exception on unexpected failure
  +     */
  +    public void testCollectionProxySwapProfiles() throws Exception
  +    {
  +        PersistenceBroker broker = null;
  +        try
  +        {
  +            final MetadataManager mm = ojb.getMetadataManager();
  +
  +            // Store the current repository mappings under a profile key and load it
  +            DescriptorRepository repository = mm.getRepository();
  +            String profileKey = "TestMappings";
  +            mm.addProfile(profileKey, repository);
  +            mm.loadProfile(profileKey);
  +
  +            // Load object and proxy
  +            ProductGroupWithCollectionProxy pgTemplate = new ProductGroupWithCollectionProxy();
  +            pgTemplate.setGroupId(new Integer(6));
  +            Query query = QueryFactory.newQueryByExample(pgTemplate);
  +            broker = ojb.lookupBroker();
  +            ProductGroupWithCollectionProxy productGroup;
  +            assertNotNull(productGroup =
  +                    (ProductGroupWithCollectionProxy) broker.getObjectByQuery(query));
  +
  +            // Close broker to make sure proxy needs a new internal one
  +            broker.close();
  +
  +            // Swap profile (to a completely empty one)
  +            final String emptyKey = "EMPTY";
  +            DescriptorRepository emptyDr = new DescriptorRepository();
  +            mm.addProfile(emptyKey, emptyDr);
  +            mm.loadProfile(emptyKey);
  +
  +            List collectionProxy = productGroup.getAllArticlesInGroup();
  +            assertNotNull(collectionProxy);
  +
  +            // Load proxy data, will throw ClassNotPersistenceCapableException
  +            // if not reactivating profile with new thread-local broker
  +            assertNotNull(collectionProxy.get(0));
  +        }
  +        finally
  +        {
  +            if (broker != null) broker.close();
  +        }
  +    }
  +
       public void testRuntimeMetadataChanges() throws Exception
       {
           int loops = 7;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org


Mime
View raw message