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]
