Author: jochen
Date: Tue Nov  9 08:20:02 2010
New Revision: 1032887

URL: http://svn.apache.org/viewvc?rev=1032887&view=rev
Log:
Several necessary bug fixes related to cs-utils-importer

Modified:
    labs/jaxmas/tags/apache-jaxmas-0.2.1/.settings/org.eclipse.jdt.core.prefs
    labs/jaxmas/tags/apache-jaxmas-0.2.1/pom.xml
    
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/ConnectionFactoryImpl.java
    
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ExtensibleObjectImpl.java
    
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/InternationalStringController.java
    
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
    
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java

Modified: 
labs/jaxmas/tags/apache-jaxmas-0.2.1/.settings/org.eclipse.jdt.core.prefs
URL: 
http://svn.apache.org/viewvc/labs/jaxmas/tags/apache-jaxmas-0.2.1/.settings/org.eclipse.jdt.core.prefs?rev=1032887&r1=1032886&r2=1032887&view=diff
==============================================================================
--- labs/jaxmas/tags/apache-jaxmas-0.2.1/.settings/org.eclipse.jdt.core.prefs 
(original)
+++ labs/jaxmas/tags/apache-jaxmas-0.2.1/.settings/org.eclipse.jdt.core.prefs 
Tue Nov  9 08:20:02 2010
@@ -1,4 +1,4 @@
-#Wed Aug 04 17:39:24 CEST 2010
+#Mon Oct 25 07:22:48 CEST 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.codeComplete.argumentPrefixes=p
 org.eclipse.jdt.core.codeComplete.argumentSuffixes=

Modified: labs/jaxmas/tags/apache-jaxmas-0.2.1/pom.xml
URL: 
http://svn.apache.org/viewvc/labs/jaxmas/tags/apache-jaxmas-0.2.1/pom.xml?rev=1032887&r1=1032886&r2=1032887&view=diff
==============================================================================
--- labs/jaxmas/tags/apache-jaxmas-0.2.1/pom.xml (original)
+++ labs/jaxmas/tags/apache-jaxmas-0.2.1/pom.xml Tue Nov  9 08:20:02 2010
@@ -26,7 +26,7 @@
        <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.labs.jaxmas</groupId>
   <artifactId>jaxmas-registry</artifactId>
-  <version>0.2.1</version>
+  <version>0.2.2</version>
   <name>JaxMas</name>
   <description>
     Poor mans JAXR implementation for unit testing of applications based on 
JAXR.

Modified: 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/ConnectionFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/ConnectionFactoryImpl.java?rev=1032887&r1=1032886&r2=1032887&view=diff
==============================================================================
--- 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/ConnectionFactoryImpl.java
 (original)
+++ 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/ConnectionFactoryImpl.java
 Tue Nov  9 08:20:02 2010
@@ -98,7 +98,7 @@ public class ConnectionFactoryImpl exten
                final java.sql.Connection conn;
         try {
             if (user == null) {
-                               conn = DriverManager.getConnection(url);
+               conn = DriverManager.getConnection(url);
             } else {
                 final String password = requireProperty(PROPERTY_PASSWORD, 
bundle);
                 conn = DriverManager.getConnection(url, user, password);

Modified: 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ExtensibleObjectImpl.java
URL: 
http://svn.apache.org/viewvc/labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ExtensibleObjectImpl.java?rev=1032887&r1=1032886&r2=1032887&view=diff
==============================================================================
--- 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ExtensibleObjectImpl.java
 (original)
+++ 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ExtensibleObjectImpl.java
 Tue Nov  9 08:20:02 2010
@@ -38,6 +38,10 @@ public abstract class ExtensibleObjectIm
         */
        protected abstract Map<String,Slot> loadSlots() throws JAXRException;
 
+       public boolean hasSlotsLoaded() {
+               return slts != null;
+       }
+       
        private Map<String,Slot> slots() throws JAXRException {
                if (slts == null) {
                        slts = loadSlots();

Modified: 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/InternationalStringController.java
URL: 
http://svn.apache.org/viewvc/labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/InternationalStringController.java?rev=1032887&r1=1032886&r2=1032887&view=diff
==============================================================================
--- 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/InternationalStringController.java
 (original)
+++ 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/infomodel/InternationalStringController.java
 Tue Nov  9 08:20:02 2010
@@ -70,7 +70,10 @@ public class InternationalStringControll
         */
        public InternationalString getString() throws JAXRException {
            ensureLoaded();
-               return string;
+           if (string == null) {
+               string = new InternationalStringImpl();
+           }
+           return string;
        }
 
        /**

Modified: 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
URL: 
http://svn.apache.org/viewvc/labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java?rev=1032887&r1=1032886&r2=1032887&view=diff
==============================================================================
--- 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
 (original)
+++ 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
 Tue Nov  9 08:20:02 2010
@@ -128,7 +128,7 @@ public abstract class AbstractDbDriver i
        }
 
        private void saveSlots(final RegistryObject pRegistryObject) throws 
JAXRException {
-           new ObjStmtUser("DELETE FROM RegistryObjectSlots WHERE roKey=?", 
pRegistryObject.getKey()){ //$NON-NLS-1$
+               new ObjStmtUser("DELETE FROM RegistryObjectSlots WHERE 
roKey=?", pRegistryObject.getKey()){ //$NON-NLS-1$
             @Override
             protected void action(PreparedStatement pStatement) throws 
JAXRException, SQLException {
                 pStatement.executeUpdate();
@@ -297,7 +297,9 @@ public abstract class AbstractDbDriver i
         final InternationalStringController description = 
ro.getDescriptionController();
         description.save();
 
-        saveSlots(pObject);
+        if (ro.hasSlotsLoaded()) {
+               saveSlots(pObject);
+        }
 
         if (pObject instanceof RegistryEntry) {
                        RegistryEntryImpl<?> re = (RegistryEntryImpl<?>) 
pObject;
@@ -360,8 +362,10 @@ public abstract class AbstractDbDriver i
                final InternationalStringController description = 
ro.getDescriptionController();
                description.save();
 
-               this.saveSlots(pObject);
-               
+               if (ro.hasSlotsLoaded()) {
+                       this.saveSlots(pObject);
+               }
+
                if (pObject instanceof RegistryEntry) {
                        RegistryEntryImpl<?> re = (RegistryEntryImpl<?>) 
pObject;
                        run("UPDATE RegistryEntries SET customType=?, 
expiration=?, status=?, stability=?, majorVersion=?, minorVersion=?, 
userVersion=? WHERE roKey=?", //$NON-NLS-1$
@@ -468,7 +472,20 @@ public abstract class AbstractDbDriver i
     public int getSchemaVersion() throws JAXRException {
         final String s = "SELECT version FROM DbInfo"; //$NON-NLS-1$
         try {
-            return Sql.intQuery(getRegistryService(), s);
+               final QueryUser<Integer> queryUser = new QueryUser<Integer>(s){
+                       @Override
+                       protected void action(ResultSet pResultSet) throws 
JAXRException, SQLException {
+                               if (pResultSet.next()) {
+                                       int i = pResultSet.getInt(1);
+                                       if (!pResultSet.wasNull()) {
+                                               setResult(new Integer(i));
+                                       }
+                               }
+                       }
+               };
+               queryUser.run(getRegistryService());
+               final Integer i = queryUser.getResult();
+               return i == null ? 0 : i.intValue();
         } catch (JAXRException e) {
             Throwable t = e.getCause();
             if (t != null  &&  t instanceof SQLException) {

Modified: 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java
URL: 
http://svn.apache.org/viewvc/labs/jaxmas/tags/apache-jaxmas-0.2.1/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java?rev=1032887&r1=1032886&r2=1032887&view=diff
==============================================================================
--- 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java
 (original)
+++ 
labs/jaxmas/tags/apache-jaxmas-0.2.1/src/test/java/org/apache/labs/jaxmas/registry/OrganizationTestCase.java
 Tue Nov  9 08:20:02 2010
@@ -1,18 +1,26 @@
 package org.apache.labs.jaxmas.registry;
 
+import java.lang.reflect.GenericSignatureFormatError;
 import java.util.Collection;
 import java.util.Collections;
 
 import javax.xml.registry.BulkResponse;
+import javax.xml.registry.BusinessLifeCycleManager;
 import javax.xml.registry.BusinessQueryManager;
 import javax.xml.registry.Connection;
 import javax.xml.registry.FindQualifier;
 import javax.xml.registry.JAXRException;
 import javax.xml.registry.RegistryService;
+import javax.xml.registry.infomodel.Association;
+import javax.xml.registry.infomodel.ClassificationScheme;
+import javax.xml.registry.infomodel.Concept;
 import javax.xml.registry.infomodel.Organization;
+import javax.xml.registry.infomodel.Slot;
 
 import junit.framework.Assert;
 
+import 
org.apache.labs.jaxmas.registry.accessor.ROAccessors.ClassificationSchemes;
+import org.apache.labs.jaxmas.registry.accessor.ROAccessors.ObjectTypes;
 import org.junit.Test;
 
 
@@ -55,4 +63,84 @@ public class OrganizationTestCase extend
                        if (conn != null) { try { conn.close(); } catch 
(Throwable t) { /* Ignore me */ } }
                }
        }
+
+       /**
+        * Create an organization with a slot. Save it. Load it. Save it again.
+        * Load it again. Does it still contain the slot?
+        */
+       @Test public void testOrganizationSlots() throws Exception {
+               final String name = OrganizationTestCase.class.getName() + 
System.currentTimeMillis();
+               final String name2 = name + "-2";
+               final String slotName = "mySlot";
+               Connection conn = newConnection();
+               try {
+                       {
+                               final RegistryService service = 
conn.getRegistryService();
+                               final BusinessLifeCycleManager blcm = 
service.getBusinessLifeCycleManager();
+                               final BusinessQueryManager bqm = 
service.getBusinessQueryManager();
+
+                               Organization org2 = findOrganization(bqm, 
name2);
+                               Assert.assertNull(org2);
+                               org2 = blcm.createOrganization(name2);
+                               Assert.assertNotNull(org2);
+                               
blcm.saveOrganizations(Collections.singleton(org2));
+
+                               Organization org = findOrganization(bqm, name);
+                               Assert.assertNull(org);
+                               org = blcm.createOrganization(name);
+                               Assert.assertNotNull(org);
+                               final Slot mySlot = blcm.createSlot(slotName, 
Collections.singleton("foo"), "xs:string");
+                               org.addSlot(mySlot);
+                               final ClassificationScheme cs = 
bqm.findClassificationSchemeByName(null, 
ClassificationSchemes.ASSOCIATION_TYPE.getName());
+                               final Concept concept = (Concept) 
cs.getChildrenConcepts().iterator().next();
+                               Assert.assertNotNull(concept);
+                               final Association assoc = 
blcm.createAssociation(org2, concept);
+                               org.addAssociation(assoc);
+                               
blcm.saveOrganizations(Collections.singleton(org));
+                               conn.close();
+                               conn = null;
+                       }
+                       {
+                               conn = newConnection();
+                               final RegistryService service = 
conn.getRegistryService();
+                               final BusinessLifeCycleManager blcm = 
service.getBusinessLifeCycleManager();
+                               Organization org = 
findOrganization(service.getBusinessQueryManager(), name);
+                               Assert.assertNotNull(org);
+                               final Slot mySlot2 = org.getSlot(slotName);
+                               Assert.assertNotNull(mySlot2);
+                               Assert.assertEquals(1, 
mySlot2.getValues().size());
+                               final Collection<Association> assocs = 
(Collection<Association>) org.getAssociations();
+                               boolean found = false;
+                               for (Association assoc : assocs) {
+                                       if (assoc.getTargetObject() instanceof 
Organization) {
+                                               org.removeAssociation(assoc);
+                                               found = true;
+                                               break;
+                                       }
+                               }
+                               Assert.assertTrue(found);
+                               
blcm.saveOrganizations(Collections.singleton(org));
+                               conn.close();
+                               conn = null;
+                       }
+                       {
+                               conn = newConnection();
+                               final RegistryService service = 
conn.getRegistryService();
+                               final BusinessLifeCycleManager blcm = 
service.getBusinessLifeCycleManager();
+                               Organization org = 
findOrganization(service.getBusinessQueryManager(), name);
+                               Assert.assertNotNull(org);
+                               final Slot mySlot3 = org.getSlot(slotName);
+                               Assert.assertNotNull(mySlot3);
+                               Assert.assertEquals(1, 
mySlot3.getValues().size());
+                               Assert.assertEquals("foo", 
mySlot3.getValues().iterator().next());
+                               
blcm.deleteOrganizations(Collections.singleton(org.getKey()));
+                               org = 
findOrganization(service.getBusinessQueryManager(), name);
+                               Assert.assertNull(org);
+                               conn.close();
+                               conn = null;
+                       }
+               } finally {
+                       if (conn != null) { try { conn.close(); } catch 
(Throwable t) { /* Ignore me */ } }
+               }
+       }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to