/* * * Copyright 2006 The Apache Software Foundation or its licensors, as applicable. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* $Id: SdoTest2.cpp,v 1.2 2006/03/16 12:53:57 slattery Exp $ */ #include #pragma warning(disable:4786) #include #include using namespace std; #include "sdotest.h" using namespace commonj::sdo; DataObjectPtr sdotest::scopetest2() { DataFactoryPtr mdg = DataFactory::getDataFactory(); mdg->addType("myspace","Root"); mdg->addType("myspace","Company"); mdg->addPropertyToType("myspace","Company","name", "commonj.sdo","String", false, false, false); mdg->addPropertyToType("myspace","Company","id", "commonj.sdo","String", false, false, false); mdg->addPropertyToType("myspace","Root","company", "myspace","Company", false, false, true); const Type& tcc = mdg->getType("myspace","Root"); DataObjectPtr dop = mdg->create((Type&)tcc); DataObjectPtr co = dop->createDataObject("company"); return dop; } int sdotest::scopetest() { DataObjectPtr dob; dob = scopetest2(); // fails on close? return 1; } int sdotest::xsdtosdo() { const char* value; value = SDOUtils::XSDToSDO("string"); if (!silent)cout << "XSDToSDO(string)=" << value << endl; if (strcmp(value,"String")) return 0; value = SDOUtils::XSDToSDO("int"); if (!silent)cout << "XSDToSDO(int)="<< value << endl; if (strcmp(value,"Integer")) return 0; value = SDOUtils::XSDToSDO("notinlist"); if (!silent)cout << "XSDToSDO(notinlist)="<< value << endl; if (strcmp(value,"String")) return 0; value = SDOUtils::XSDToSDO(""); if (!silent)cout << "XSDToSDO(\"\")="<< value << endl; if (strcmp(value,"String")) return 0; value = SDOUtils::XSDToSDO(0); if (!silent)cout << "XSDToSDO(0)="<< value << endl; if (strcmp(value,"String")) return 0; value = SDOUtils::SDOToXSD("String"); if (!silent)cout << "SDOToXSD(String)="<< value << endl; if (strcmp(value,"string")) return 0; value = SDOUtils::SDOToXSD("Long"); if (!silent)cout << "SDOToXSD(Long)="<< value << endl; if (strcmp(value,"unsignedLong")) return 0; value = SDOUtils::SDOToXSD("notinlist"); if (!silent)cout << "SDOToXSD(notinlist)="<< value << endl; if (strcmp(value,"string")) return 0; value = SDOUtils::SDOToXSD(""); if (!silent)cout << "SDOToXSD(\"\")="<< value << endl; if (strcmp(value,"string")) return 0; value = SDOUtils::SDOToXSD(0); if (!silent)cout << "SDOToXSD(0)="<< value << endl; if (strcmp(value,"string")) return 0; return 1; } int sdotest::compatiblefactory() { DataFactoryPtr f1 = DataFactory::getDataFactory(); f1->addType("Namespace","Project"); f1->addType("Namespace","WorkPackage"); f1->addType("Namespace","LineItem"); f1->addType("Namespace","StringHolder"); f1->addType("Namespace","Root"); f1->addPropertyToType("Namespace","Root","project", "Namespace","Project", false, false, true); f1->addPropertyToType("Namespace","StringHolder","value", "commonj.sdo","String", false, false, false); f1->addPropertyToType("Namespace","Project","id", "commonj.sdo","String", false, false, false); f1->addPropertyToType("Namespace","Project","string", "Namespace","StringHolder", false, false, true); f1->addPropertyToType("Namespace","WorkPackage","name", "commonj.sdo","String", false, false, false); f1->addPropertyToType("Namespace","WorkPackage","string", "Namespace","StringHolder", false, false, true); f1->addPropertyToType("Namespace","LineItem","itemname", "commonj.sdo","String", false, false, false); f1->addPropertyToType("Namespace","LineItem","string", "Namespace","StringHolder", false, false, true); f1->addPropertyToType("Namespace","Project","packages", "Namespace","WorkPackage", true, false, true); f1->addPropertyToType("Namespace","WorkPackage","lineitems", "Namespace","LineItem", true, false, true); // project // id (string) // string (StringHolder) // workpackages (WorkPackage) // workpackage // name (string) // string (StringHolder) // lineitems (LineItem) // lineitem // itemname (string) // factories 1 and 2 are compatible DataFactoryPtr f2 = DataFactory::getDataFactory(); f2->addType("Namespace","Project"); f2->addType("Namespace","WorkPackage"); f2->addType("Namespace","LineItem"); f2->addType("Namespace","StringHolder"); f2->addType("Namespace","Root"); f2->addPropertyToType("Namespace","Root","project", "Namespace","Project", false, false, true); f2->addPropertyToType("Namespace","StringHolder","value", "commonj.sdo","String", false, false, false); f2->addPropertyToType("Namespace","Project","id", "commonj.sdo","String", false, false, false); f2->addPropertyToType("Namespace","Project","string", "Namespace","StringHolder", false, false, true); f2->addPropertyToType("Namespace","WorkPackage","name", "commonj.sdo","String", false, false, false); f2->addPropertyToType("Namespace","WorkPackage","string", "Namespace","StringHolder", false, false, true); f2->addPropertyToType("Namespace","LineItem","itemname", "commonj.sdo","String", false, false, false); f2->addPropertyToType("Namespace","LineItem","string", "Namespace","StringHolder", false, false, true); f2->addPropertyToType("Namespace","Project","packages", "Namespace","WorkPackage", true, false, true); f2->addPropertyToType("Namespace","WorkPackage","lineitems", "Namespace","LineItem", true, false, true); // factory 3 has no project type DataFactoryPtr f3 = DataFactory::getDataFactory(); f3->addType("Namespace","WorkPackage"); f3->addType("Namespace","LineItem"); f3->addType("Namespace","StringHolder"); f3->addType("Namespace","Root"); f3->addPropertyToType("Namespace","Root","project", "Namespace","WorkPackage", false, false, true); f3->addPropertyToType("Namespace","StringHolder","value", "commonj.sdo","String", false, false, false); f3->addPropertyToType("Namespace","WorkPackage","name", "commonj.sdo","String", false, false, false); f3->addPropertyToType("Namespace","WorkPackage","string", "Namespace","StringHolder", false, false, true); f3->addPropertyToType("Namespace","LineItem","itemname", "commonj.sdo","String", false, false, false); f3->addPropertyToType("Namespace","LineItem","string", "Namespace","StringHolder", false, false, true); f3->addPropertyToType("Namespace","WorkPackage","lineitems", "Namespace","LineItem", true, false, true); // factory 4 looks compatible - but stringholder is missing DataFactoryPtr f4 = DataFactory::getDataFactory(); f4->addType("Namespace","Project"); f4->addType("Namespace","WorkPackage"); f4->addType("Namespace","LineItem"); f4->addType("Namespace","Root"); f4->addPropertyToType("Namespace","Root","project", "Namespace","Project", false, false, true); f4->addPropertyToType("Namespace","Project","id", "commonj.sdo","String", false, false, false); f4->addPropertyToType("Namespace","WorkPackage","name", "commonj.sdo","String", false, false, false); f4->addPropertyToType("Namespace","LineItem","itemname", "commonj.sdo","String", false, false, false); f4->addPropertyToType("Namespace","Project","packages", "Namespace","WorkPackage", true, false, true); f4->addPropertyToType("Namespace","WorkPackage","lineitems", "Namespace","LineItem", true, false, true); // factory 5 looks compatible, but the lists are not lists DataFactoryPtr f5 = DataFactory::getDataFactory(); f5->addType("Namespace","Project"); f5->addType("Namespace","WorkPackage"); f5->addType("Namespace","LineItem"); f5->addType("Namespace","StringHolder"); f5->addType("Namespace","Root"); f5->addPropertyToType("Namespace","Root","project", "Namespace","Project", false, false, true); f5->addPropertyToType("Namespace","StringHolder","value", "commonj.sdo","String", false, false, false); f5->addPropertyToType("Namespace","Project","id", "commonj.sdo","String", false, false, false); f5->addPropertyToType("Namespace","Project","string", "Namespace","StringHolder", false, false, true); f5->addPropertyToType("Namespace","WorkPackage","name", "commonj.sdo","String", false, false, false); f5->addPropertyToType("Namespace","WorkPackage","string", "Namespace","StringHolder", false, false, true); f5->addPropertyToType("Namespace","LineItem","itemname", "commonj.sdo","String", false, false, false); f5->addPropertyToType("Namespace","LineItem","string", "Namespace","StringHolder", false, false, true); f5->addPropertyToType("Namespace","Project","packages", "Namespace","WorkPackage", false, false, true); f5->addPropertyToType("Namespace","WorkPackage","lineitems", "Namespace","LineItem", false, false, true); // factory 6 looks OK, but the lineitems have no itemname field DataFactoryPtr f6 = DataFactory::getDataFactory(); f6->addType("Namespace","Project"); f6->addType("Namespace","WorkPackage"); f6->addType("Namespace","LineItem"); f6->addType("Namespace","StringHolder"); f6->addType("Namespace","Root"); f6->addPropertyToType("Namespace","Root","project", "Namespace","Project", false, false, true); f6->addPropertyToType("Namespace","StringHolder","value", "commonj.sdo","String", false, false, false); f6->addPropertyToType("Namespace","Project","id", "commonj.sdo","String", false, false, false); f6->addPropertyToType("Namespace","Project","string", "Namespace","StringHolder", false, false, true); f6->addPropertyToType("Namespace","WorkPackage","name", "commonj.sdo","String", false, false, false); f6->addPropertyToType("Namespace","WorkPackage","string", "Namespace","StringHolder", false, false, true); f6->addPropertyToType("Namespace","LineItem","string", "Namespace","StringHolder", false, false, true); f6->addPropertyToType("Namespace","Project","packages", "Namespace","WorkPackage", true, false, true); f6->addPropertyToType("Namespace","WorkPackage","lineitems", "Namespace","LineItem", true, false, true); // factory 7 looks OK, but the identifiers are ints DataFactoryPtr f7 = DataFactory::getDataFactory(); f7->addType("Namespace","Project"); f7->addType("Namespace","WorkPackage"); f7->addType("Namespace","LineItem"); f7->addType("Namespace","StringHolder"); f7->addType("Namespace","Root"); f7->addPropertyToType("Namespace","Root","project", "Namespace","Project", false, false, true); f7->addPropertyToType("Namespace","StringHolder","value", "commonj.sdo","String", false, false, true); f7->addPropertyToType("Namespace","Project","id", "commonj.sdo","Integer", false, false, false); f7->addPropertyToType("Namespace","Project","string", "Namespace","StringHolder", false, false, true); f7->addPropertyToType("Namespace","WorkPackage","name", "commonj.sdo","String", false, false, false); f7->addPropertyToType("Namespace","WorkPackage","string", "Namespace","StringHolder", false, false, true); f7->addPropertyToType("Namespace","LineItem","itemname", "commonj.sdo","Integer", false, false, false); f7->addPropertyToType("Namespace","LineItem","string", "Namespace","StringHolder", false, false, true); f7->addPropertyToType("Namespace","Project","packages", "Namespace","WorkPackage", true, false, true); f7->addPropertyToType("Namespace","WorkPackage","lineitems", "Namespace","LineItem", true, false, true); // create a tree from Root in factory 1 DataObjectPtr root = f1->create("Namespace","Root"); DataObjectPtr project = root->createDataObject("project"); project->setCString("id","The TTP Project"); DataObjectPtr str = project->createDataObject("string"); str->setCString("value","The Recursive Acronym Project"); DataObjectPtr wp1 = project->createDataObject("packages"); DataObjectPtr wp2 = project->createDataObject("packages"); wp1->setCString("name","Work Package 1"); wp2->setCString("name","Work Package 2"); DataObjectPtr li1 = wp1->createDataObject("lineitems"); DataObjectPtr li2 = wp1->createDataObject("lineitems"); DataObjectPtr li3 = wp2->createDataObject("lineitems"); DataObjectPtr li4 = wp2->createDataObject("lineitems"); li1->setCString("itemname","LineItem 1"); li2->setCString("itemname","LineItem 2"); li3->setCString("itemname","LineItem 3"); li4->setCString("itemname","LineItem 4"); DataObjectPtr str1 = li1->createDataObject("string"); DataObjectPtr str2 = li2->createDataObject("string"); DataObjectPtr str3 = li3->createDataObject("string"); DataObjectPtr str4 = li4->createDataObject("string"); str1->setCString("value","String1"); str2->setCString("value","String2"); str3->setCString("value","String3"); str4->setCString("value","String4"); // cout << "DATA OBJECTS FROM FACTORY 1" << endl; // printDataObject(root); if (!transferto(root,f2, false)) return 0; if (!transferto(root,f3, true)) return 0; if (!transferto(root,f4, true)) return 0; if (!transferto(root,f5, true)) return 0; if (!transferto(root,f6, true)) return 0; if (!transferto(root,f7, true)) return 0; // finally, lets move one which has a parent and cant be moved. try { DataObjectPtr project = root->getDataObject("project"); DataObjectPtr root2 = f2->create("Namespace","Root"); root2->setDataObject("project", project); return 0; } catch (SDORuntimeException e) { //cout << "Compatibility test correctly returned an error :" ; //cout << e.getMessageText() << endl; return 1; } } int sdotest::transferto(DataObjectPtr root, DataFactoryPtr f2, bool expecterror) { try { // transfer the tree to factory 2... DataObjectPtr rproject = root->getDataObject("project"); DataObjectPtr project = CopyHelper::copy(rproject); DataObjectPtr root2 = f2->create("Namespace","Root"); root2->setDataObject("project", project); //cout << "DATA OBJECTS TRANSFERRED" << endl; //printDataObject(root2); if (expecterror) { return 0; } return 1; } catch (SDORuntimeException e) { if (expecterror){ //cout << "Compatibility test correctly returned an error :" ; //cout << e.getMessageText() << endl; return 1; } else { if (!silent)cout << "Compatibility test failed whilst transferring " << e << endl; return 0; } } } int sdotest::b48602() { int i,j; try { DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); xsh->defineFile("b48602.xsd"); if ((i = xsh->getErrorCount()) > 0) { if (!silent) { cout << "PROBLEM: b48602 XSD reported some errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } return 0; } return 0; } catch (SDOTypeNotFoundException e) { return 1; } catch (SDORuntimeException e) { return 1; } } int sdotest::testany(const char* xsd, const char* acceptedxsderror, const char* xml, const char* acceptedxmlerror) { int i,j,rc; try { char *c; DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); if (xsd) { char * name1 = new char[strlen(xsd)+5]; char * name3 = new char[strlen(xsd)+5]; strcpy(name1,xsd); while ((c = strchr(name1,'.')) != 0)*c = '_'; strcpy(name3,name1); strcat(name1,".dat"); strcat(name3,".txt"); FILE *f1 = fopen(name1,"w+"); if (f1 == 0) { if (!silent)cout << "Unable to open " << name1 << endl; delete name1; delete name3; return 0; } xsh->defineFile(xsd); if ((i = xsh->getErrorCount()) > 0) { if (acceptedxsderror != 0) { for (j=0;jgetErrorMessage(j))) { fclose(f1); delete name1; delete name3; return 1; } } } if (!silent) { cout << "PROBLEM: Testany XSD reported some errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } fclose(f1); delete name1; delete name3; return 0; } TypeList tl = mdg->getTypes(); fprintf(f1, "***** TYPES BEFORE RESOLVE **********************************\n"); for (i=0;iloadFile(xml); if ((i = xmh->getErrorCount()) > 0) { if (acceptedxmlerror != 0) { for (j=0;jgetErrorMessage(j))) { fclose(f2); delete name2; delete name4; return 1; } } } if (!silent) { cout << "TestAny XML found errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } fclose(f2); delete name2; delete name4; return 0; } else { TypeList tl = mdg->getTypes(); fprintf(f2, "***** TYPES AFTER RESOLVE*********************************\n"); for (i=0;igetRootDataObject(); printDataObject(f2, dob); fclose(f2); rc = comparefiles(name2,name4); delete name2; delete name4; return rc; } } catch (SDORuntimeException e) { if (!silent)cout << "Exception in TestAny" << e << endl; return 0; } } int sdotest::testanytwo(const char* xsd, const char* xsd2, const char* xml) { int i,j; try { char * name1 = new char[strlen(xsd)+5]; char * name2 = new char[strlen(xml)+5]; char * name3 = new char[strlen(xsd)+5]; char * name4 = new char[strlen(xml)+5]; strcpy(name1,xsd); strcpy(name2,xml); char *c; while ((c = strchr(name1,'.')) != 0)*c = '_'; while ((c = strchr(name2,'.')) != 0)*c = '_'; strcpy(name3,name1); strcpy(name4,name2); strcat(name1,".dat"); strcat(name2,".dat"); strcat(name3,".txt"); strcat(name4,".txt"); DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); if (xsd) { xsh->defineFile(xsd); if ((i = xsh->getErrorCount()) > 0) { if (!silent) { cout << "PROBLEM: Testany XSD reported some errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } return 0; } } if (xsd2) { xsh->defineFile(xsd2); if ((i = xsh->getErrorCount()) > 0) { if (!silent) { cout << "PROBLEM: Testany XSD2 reported some errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } return 0; } } if (xsd) { FILE *f1 = fopen(name1,"w+"); if (f1 == 0) { if (!silent)cout << "Unable to open " << name1 << endl; return 0; } TypeList tl = mdg->getTypes(); fprintf(f1,"***** TESTANY ******************************************\n"); for (i=0;iloadFile(xml); if ((i = xmh->getErrorCount()) > 0) { if (!silent) { cout << "TestAny XML found errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } return 0; } else { DataObjectPtr dob = doc->getRootDataObject(); printDataObject(f2, dob); } fclose(f2); return comparefiles(name2,name4); } catch (SDORuntimeException e) { if (!silent)cout << "Exception in TestAnyTwo" << e << endl; return 0; } } int sdotest::openseq() { DataFactoryPtr mdg = DataFactory::getDataFactory(); FILE *f = fopen("openseq.dat","w+"); if (f == 0) { if (!silent)cout << "Unable to open openseq.dat" << endl; return 0; } mdg->addType("companyNS","CompanyType"); // employee will be an open sequenced type... mdg->addType("companyNS","EmployeeType", /*seq*/true, /*open*/true, /*abs */ false, /*data*/ false); /* Now add the properties to the types...*/ const Type& tstring = mdg->getType("commonj.sdo","String"); const Type& tcomp = mdg->getType("companyNS","CompanyType"); const Type& temp = mdg->getType("companyNS","EmployeeType"); mdg->addPropertyToType(tcomp,"name",tstring); mdg->addPropertyToType(tcomp,"employees",temp,true); mdg->addPropertyToType(temp, "name",tstring); DataObjectPtr comp = mdg->create((Type&)tcomp); comp->setCString("name","ACME"); DataObjectPtr emp = mdg->create(temp); emp->setCString("name","Albert"); emp->setCString("openstring","Value Of Open String"); /* now do the same with the employee seq...*/ SequencePtr seq = emp->getSequence(); seq->addCString("opensequencedstring","Value of sequenced string"); const char* c = emp->getCString("openstring"); fprintf(f, "Open Type string value: %s\n",c); c = emp->getCString("opensequencedstring"); fprintf(f, "Open Sequenced string value: %s\n",c); c = seq->getCStringValue(0); fprintf(f, "Open Sequenced string value from seq: %s\n",c); //cout << "END TEST: OpenSeq ======================================" << endl; fclose(f); return comparefiles("openseq.dat","openseq.txt"); } int sdotest::b48601() { return testany("48601.xsd", "Schema contains a union which is not yet implemented",0,0); } int sdotest::b48686() { return testany("48686.xsd",0,"48686.xml",0); } int sdotest::b48736() { return testany("48736.xsd",0,"48736.xml",0); } int sdotest::testgenerate(const char* xsd, const char* output) { int i,j; try { char * name1 = new char[strlen(output) + 5]; char * name2 = new char[strlen(output) + 5]; char * c; strcpy(name1,output); while ((c = strchr(name1,'.')) != 0)*c='_'; strcpy(name2,name1); strcat(name1,".dat"); strcat(name2,".txt"); DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); if (xsd) { xsh->defineFile(xsd); if ((i = xsh->getErrorCount()) > 0) { if (!silent) { cout << "PROBLEM: generation XSD reported some errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } return 0; } else { mdg->generateInterface(name1,"Test"); return comparefiles(name1,name2); } } return 0; } catch (SDORuntimeException e) { if (!silent)cout << "Exception in TestGenerate" << e << endl; return 0; } } int sdotest::emptycs() { try { DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); xsh->defineFile("company.xsd"); const Type& tstring = mdg->getType("commonj.sdo","String"); const Type& tbool = mdg->getType("commonj.sdo","Boolean"); const Type& tcs = mdg->getType("commonj.sdo","ChangeSummary"); const Type& tcomp = mdg->getType("companyNS","CompanyType"); const Type& tdept = mdg->getType("companyNS","DepartmentType"); const Type& temp = mdg->getType("companyNS","EmployeeType"); // create a graph, then save it DataObjectPtr comp = mdg->create((Type&)tcomp); comp->setCString("name","ACME"); DataObjectPtr dept = mdg->create((Type&)tdept); DataObjectList& dol = comp->getList("departments"); dol.append(dept); dept->setCString("name","Advanced Technologies"); dept->setCString("location","NY"); dept->setCString("number","123"); DataObjectPtr emp1 = mdg->create(temp); DataObjectPtr emp2 = mdg->create(temp); DataObjectPtr emp3 = mdg->create(temp); emp1->setCString("name","John Jones"); emp1->setCString("SN","E0001"); emp2->setCString("name","Mary Smith"); emp2->setCString("SN","E0002"); emp2->setBoolean("manager",true); emp3->setCString("name","Jane Doe"); emp3->setCString("SN","E0003"); DataObjectList& dol2 = dept->getList("employees"); dol2.append(emp1); dol2.append(emp2); dol2.append(emp3); comp->setDataObject("employeeOfTheMonth",emp2); // right now, there is no change summary, and logging is // off - we expect an empty change summary element XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); XMLDocumentPtr doc = xmh->createDocument(comp,"companyNS","company"); xmh->save(doc,"emptycs1.xml"); if (!comparefiles("emptycs1.xml","emptycs1.txt"))return 0; ChangeSummaryPtr cs = comp->getChangeSummary(); cs->beginLogging(); xmh->save(doc,"emptycs2.xml"); if (!comparefiles("emptycs2.xml","emptycs2.txt"))return 0; // now we expect and empty change summary with logging true DataObjectPtr emp4 = mdg->create(temp); emp4->setCString("name","Al Smith"); emp4->setCString("SN","E0004"); emp4->setBoolean("manager",true); // first change - create employee 4 dol2.append(emp4); cs->endLogging(); //serializeChangeSummary(cs); xmh->save(doc,"emptycs3.xml"); if (!comparefiles("emptycs3.xml","emptycs3.txt"))return 0; return 1; } catch (SDORuntimeException e) { if (!silent)cout << "empty change summary save failed" << e << endl; return 0; } } int sdotest::definetest() { try { DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); TypeDefinitions* ts = new TypeDefinitions(); if (ts) delete ts; ts = new TypeDefinitions(); TypeDefinition* td = new TypeDefinition(); td->setName("MySmallObject"); td->setUri("MyNameSpace"); td->setIsDataType(false); TypeDefinition* td2 = new TypeDefinition(); td2->setName("MyOtherObject"); td2->setUri("MyNameSpace"); td2->setIsDataType(false); PropertyDefinition* pd = new PropertyDefinition(); pd->setName("MyIntegerProperty"); pd->setType("commonj.sdo","Integer"); PropertyDefinition* pd2 = new PropertyDefinition(); pd2->setName("MyObjectProperty"); pd2->setType("MyNameSpace","MyOtherObject"); pd2->setIsMany(true); td->addPropertyDefinition(*pd); td->addPropertyDefinition(*pd2); ts->addTypeDefinition(*td); ts->addTypeDefinition(*td2); // should have an object of type MySmallObject, containing // a single integer called MyIntegerProperty, and a list of // objects called MyObjectProperty - of type MyOtherObject xsh->defineTypes(*ts); delete td; delete td2; delete ts; delete pd; delete pd2; DataObjectPtr dob = mdg->create("MyNameSpace","MySmallObject"); dob->setInteger("MyIntegerProperty",43); dob->createDataObject("MyObjectProperty"); dob->createDataObject("MyObjectProperty"); DataObjectList& dl = dob->getList("MyObjectProperty"); if (dl.size() != 2) { if (!silent) cout << "Define test list size is wrong" << endl; return 0; } int value = dob->getInteger("MyIntegerProperty"); if (value != 43) { if (!silent) cout << "Define test integer value is wrong" << endl; return 0; } return 1; } catch (SDORuntimeException e) { if (!silent)cout << "define test failed" << endl << e << endl; return 0; } } int sdotest::stocktest() { return sdotest::testany("stock.wsdl",0,"stock.xml",0); } /****************************************************** int sdotest::stocktest() { int i,j; try { DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); xsh->defineFile("stock.wsdl"); if ((i = xsh->getErrorCount()) > 0) { cout << "PROBLEM: Testany XSD reported some errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } TypeList tl = mdg->getTypes(); printf("***** TYPES BEFORE RESOLVE **********************************\n"); for (i=0;iloadFile("stock.xml"); if ((i = xmh->getErrorCount()) > 0) { cout << "TestAny XML found errors:" << endl; for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } } DataObjectPtr dob = doc->getRootDataObject(); printDataObject(stdout, dob); return 1; } catch (SDORuntimeException e) { if (!silent)cout << "Exception in TestAny" << e << endl; return 0; } } **************************************************/ int sdotest::pete() { int i,j; try { DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); xsh->defineFile("pete.xsd"); if ((i = xsh->getErrorCount()) > 0) { for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } return 0; } XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); XMLDocumentPtr doc = xmh->loadFile("pete.xml"); if ((i = xmh->getErrorCount()) > 0) { for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } return 0; } TypeList tl = mdg->getTypes(); //printf("***** TYPES **********************************************\n"); for (i=0;igetRootDataObject(); float f = dob->getFloat("Stock[1]/Last"); //printf("Float is %2.3f \r\n",f); return 1; } catch (SDORuntimeException e) { cout << "Exception in Pete" << e << endl; return 0; } } int sdotest::xhtml1() { int i,j; try { DataFactoryPtr mdg = DataFactory::getDataFactory(); XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); xsh->defineFile("Atom1.0.xsd"); if ((i = xsh->getErrorCount()) > 0) { for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } return 0; } XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); XMLDocumentPtr doc = xmh->loadFile("xhtml_in.xml"); if ((i = xmh->getErrorCount()) > 0) { for (j=0;jgetErrorMessage(j); if (m != 0) cout << m; cout << endl; } return 0; } //DataObjectPtr dob = doc->getRootDataObject(); //ofstream myout("myfile"); //if (dob)SDOUtils::printDataObject(myout , dob); xmh->save(doc,"xhtml_out.xml"); return comparefiles("xhtml_out.xml" ,"xhtml_out.txt"); } catch (SDORuntimeException e) { cout << "Exception in xhtml1" << e << endl; return 0; } }