Author: adrianocrestani
Date: Mon Oct  8 20:49:57 2007
New Revision: 583039

URL: http://svn.apache.org/viewvc?rev=583039&view=rev
Log:
-bug from jira 1837 fixed
-added a new test case: jira1837

Modified:
    
incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.cpp
    incubator/tuscany/cpp/sdo/runtime/core/test/main.cpp
    incubator/tuscany/cpp/sdo/runtime/core/test/sdotest.h
    incubator/tuscany/cpp/sdo/runtime/core/test/sdotest2.cpp

Modified: 
incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.cpp
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.cpp?rev=583039&r1=583038&r2=583039&view=diff
==============================================================================
--- 
incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.cpp 
(original)
+++ 
incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.cpp 
Mon Oct  8 20:49:57 2007
@@ -807,21 +807,28 @@
         container->logChange(pindex);
     }
     DataObjectPtr d = (*this)[index];
+       const Property& p = container->getPropertyFromIndex(pindex);
     
     // log deletion only if the list is of data objects.
     if (theFactory != 0) 
     {
         const Type& t = theFactory->getType(typeURI,typeName);
-        const Property& p = container->getPropertyFromIndex(pindex);
+        
         if (!t.isDataType() && !p.isReference())
         {
             (getVec()[index])->logDeletion();
         }
     }
+
     plist.erase(plist.begin()+index);
     DataObject* dob = getRawPointer(d);
-    ((DataObjectImpl*)dob)->setContainer(0);
+
+       if (p.isContainment()) {
+               ((DataObjectImpl*)dob)->setContainer(0);
+       }
+
     return d;
+
 }
 
 void DataObjectListImpl::validateIndex(unsigned int index) const

Modified: incubator/tuscany/cpp/sdo/runtime/core/test/main.cpp
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sdo/runtime/core/test/main.cpp?rev=583039&r1=583038&r2=583039&view=diff
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/test/main.cpp (original)
+++ incubator/tuscany/cpp/sdo/runtime/core/test/main.cpp Mon Oct  8 20:49:57 
2007
@@ -207,6 +207,7 @@
     TEST (  sdotest::xsiTypeAbstract() );
     TEST (  sdotest::refCount() );
     TEST (  sdotest::jira1548() );
+       TEST (  sdotest::jira1837() );
 
     } catch(...)
     {

Modified: incubator/tuscany/cpp/sdo/runtime/core/test/sdotest.h
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sdo/runtime/core/test/sdotest.h?rev=583039&r1=583038&r2=583039&view=diff
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/test/sdotest.h (original)
+++ incubator/tuscany/cpp/sdo/runtime/core/test/sdotest.h Mon Oct  8 20:49:57 
2007
@@ -216,4 +216,5 @@
         static int elementFormDefaultQualifiedSequence();
         static int xsiTypeAbstract();
         static int jira1548();
+               static int jira1837();
 };

Modified: incubator/tuscany/cpp/sdo/runtime/core/test/sdotest2.cpp
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sdo/runtime/core/test/sdotest2.cpp?rev=583039&r1=583038&r2=583039&view=diff
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/test/sdotest2.cpp (original)
+++ incubator/tuscany/cpp/sdo/runtime/core/test/sdotest2.cpp Mon Oct  8 
20:49:57 2007
@@ -2077,3 +2077,150 @@
     }
 }
 
+int sdotest::jira1837()
+{
+
+    try {
+
+               DataFactoryPtr mdg  = DataFactory::getDataFactory();
+
+               mdg->addType("apache.tuscany.jira1837", "Root");
+               mdg->addType("apache.tuscany.jira1837", "company");
+               mdg->addType("apache.tuscany.jira1837", "department");
+               mdg->addType("apache.tuscany.jira1837", "employee");
+
+               const Type& rootType = mdg->getType("apache.tuscany.jira1837", 
"Root");
+               const Type& companyType = 
mdg->getType("apache.tuscany.jira1837", "company");
+               const Type& departmentType = 
mdg->getType("apache.tuscany.jira1837", "department");
+               const Type& employeeType = 
mdg->getType("apache.tuscany.jira1837", "employee");
+               
+               mdg->addPropertyToType("apache.tuscany.jira1837", "Root", 
"ChangeSummary", "commonj.sdo", "ChangeSummary", false, false, true);
+               mdg->addPropertyToType("apache.tuscany.jira1837", "Root", 
"company", "apache.tuscany.jira1837", "company", true, false, true);
+               mdg->addPropertyToType("apache.tuscany.jira1837", "Root", 
"employee", "apache.tuscany.jira1837", "employee", true, false, true);
+               mdg->addPropertyToType("apache.tuscany.jira1837", "Root", 
"department", "apache.tuscany.jira1837", "department", true, false, true);
+
+               mdg->addPropertyToType("apache.tuscany.jira1837", "company", 
"id", "commonj.sdo", "Integer", false, false, true);
+               mdg->addPropertyToType("apache.tuscany.jira1837", "company", 
"name", "commonj.sdo", "String", false, false, true);
+               mdg->addPropertyToType("apache.tuscany.jira1837", "company", 
"department", "apache.tuscany.jira1837", "department", true, false, false);
+
+               mdg->addPropertyToType("apache.tuscany.jira1837", "department", 
"id", "commonj.sdo", "Integer", false, false, true);
+               mdg->addPropertyToType("apache.tuscany.jira1837", "department", 
"name", "commonj.sdo", "String", false, false, true);
+               mdg->addPropertyToType("apache.tuscany.jira1837", "department", 
"employee", "apache.tuscany.jira1837", "employee", true, false, false);
+
+               mdg->addPropertyToType("apache.tuscany.jira1837", "employee", 
"id", "commonj.sdo", "Integer", false, false, true);
+               mdg->addPropertyToType("apache.tuscany.jira1837", "employee", 
"name", "commonj.sdo", "String", false, false, true);
+               
+               std::wstring waux;
+               DataObjectPtr root = mdg->create(rootType);
+
+               DataObjectPtr company1 = root->createDataObject("company");
+               company1->setInt("id", 1);
+               waux = L"apache";
+               company1->setString("name", waux.c_str(), waux.length());
+               
+               DataObjectPtr company2 = root->createDataObject("company");
+               company2->setInt("id", 2);
+               waux = L"acme";
+               company2->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr company3 = root->createDataObject("company");
+               company3->setInt("id", 3);
+               waux = L"google";
+               company3->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr company4 = root->createDataObject("company");
+               company1->setInt("id", 4);
+               waux = L"ibm";
+               company4->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr company5 = root->createDataObject("company");
+               company5->setInt("id", 5);
+               waux = L"yahoo";
+               company5->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr depart1 = root->createDataObject("department");
+               depart1->setInt("id", 1);
+               waux = L"department1";
+               depart1->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr depart2 = root->createDataObject("department");
+               depart2->setInt("id", 2);
+               waux = L"department1";
+               depart2->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr depart3 = root->createDataObject("department");
+               depart3->setInt("id", 3);
+               waux = L"department2";
+               depart3->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr depart4 = root->createDataObject("department");
+               depart4->setInt("id", 4);
+               waux = L"department5";
+               depart4->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr depart5 = root->createDataObject("department");
+               depart5->setInt("id", 5);
+               waux = L"department3";
+               depart5->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr depart6 = root->createDataObject("department");
+               depart6->setInt("id", 6);
+               waux = L"department6";
+               depart6->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr employee1 = root->createDataObject("employee");
+               employee1->setInt("id", 1);
+               waux = L"adriano";
+               employee1->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr employee2 = root->createDataObject("employee");
+               employee2->setInt("id", 2);
+               waux = L"paul";
+               employee2->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr employee3 = root->createDataObject("employee");
+               employee3->setInt("id", 3);
+               waux = L"richard";
+               employee3->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr employee4 = root->createDataObject("employee");
+               employee4->setInt("id", 4);
+               waux = L"ema";
+               employee4->setString("name", waux.c_str(), waux.length());
+
+               DataObjectPtr employee5 = root->createDataObject("employee");
+               employee5->setInt("id", 5);
+               waux = L"james";
+               employee5->setString("name", waux.c_str(), waux.length());
+
+               company1->getList("department").append(depart1);
+               company1->getList("department").append(depart2);
+
+               company2->getList("department").append(depart3);
+               company2->getList("department").append(depart4);
+
+               company3->getList("department").append(depart5);
+               company3->getList("department").append(depart6);
+
+               depart1->getList("employee").append(employee1);
+               depart1->getList("employee").append(employee2);
+               depart1->getList("employee").append(employee3);
+
+               root->getChangeSummary()->beginLogging();
+
+               DataObjectPtr removedDepartment = 
company1->getList("department").remove(0);
+
+               if (removedDepartment->getContainer() == 0) {
+                       return 0;
+               }
+
+               return 1;
+
+    }
+    catch (SDORuntimeException e)
+    {
+        cout << "Exception in test jira1837" << e << endl;
+        return 0;
+    }
+}
+



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to