summaryrefslogtreecommitdiffstats
path: root/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop
diff options
context:
space:
mode:
Diffstat (limited to 'sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop')
-rw-r--r--sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/interop.cpp198
-rw-r--r--sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/interop.h32
-rw-r--r--sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/main.cpp88
-rw-r--r--sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/runinterop.bat25
4 files changed, 343 insertions, 0 deletions
diff --git a/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/interop.cpp b/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/interop.cpp
new file mode 100644
index 0000000000..7e4c480e26
--- /dev/null
+++ b/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/interop.cpp
@@ -0,0 +1,198 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "interop.h"
+
+using namespace std;
+
+/*
+ * Ensure that SDO can read an XML file and
+ * write it back out again without changing the XML. The
+ * test XML files can be found in tuscany/interop/src/main/resources
+ */
+void Interop::test1ReadAndWriteXML(char *commonDir, char *filename)
+{
+ int i,j;
+
+ cout << " \nC++ interop test1 - read and write XML: " << filename << endl;
+ try
+ {
+ DataFactoryPtr mdg = DataFactory::getDataFactory();
+
+ /**
+ * Get an XSD helper to load XSD information into the
+ * data factory
+ */
+ XSDHelperPtr myXSDHelper = HelperProvider::getXSDHelper(mdg);
+ char fullxsdfilename[200];
+ strcpy (fullxsdfilename, commonDir );
+ strcat (fullxsdfilename, filename );
+ strcat (fullxsdfilename,".xsd");
+ cout << "Read the XSD file " << fullxsdfilename << endl;
+ myXSDHelper->defineFile(fullxsdfilename);
+
+ /**
+ * Check if there were any errors. The parse may still
+ * succeed, but errors indicate some elements were not
+ * understood
+ */
+ if ((i = myXSDHelper->getErrorCount()) > 0)
+ {
+ cout << "XSD Loading reported some errors:" << endl;
+ for (j=0;j<i;j++)
+ {
+ const char *m = myXSDHelper->getErrorMessage(j);
+ if (m != 0) cout << m;
+ cout << endl;
+ }
+ }
+
+ /**
+ * Use the same data factory to load XML corresponding to
+ * data objects adhering to the previously loaded schema
+ */
+ XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg);
+ char fullxmlfilename[200];
+ strcpy (fullxmlfilename, commonDir );
+ strcat (fullxmlfilename, filename );
+ strcat(fullxmlfilename,"-in.xml");
+ cout << "Read the XML file " << fullxmlfilename << endl;
+ XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile(fullxmlfilename, "http://www.apache.org/tuscany/interop");
+
+ /**
+ * Check if there were any errors. The parse may still
+ * succeed, but errors indicate some elements did not match
+ * the schema, or were malformed.
+ *
+ */
+ if ((i = myXMLHelper->getErrorCount()) > 0)
+ {
+ cout << "XML Loading reported some errors:" << endl;
+ for (j=0;j<i;j++)
+ {
+ const char *m = myXMLHelper->getErrorMessage(j);
+ if (m != 0) cout << m;
+ cout << endl;
+ }
+ }
+
+ DataObjectPtr newdob = myXMLDocument->getRootDataObject();
+ cout << "Get current state of DataObject\n";
+ DataObjectPtr dc = newdob->getContainer();
+
+ if ( !dc )
+ {
+ cout << "There is no container" << endl;
+ }
+ else
+ {
+ cout <<" Container of type " << dc->getType().getName();
+ }
+
+ PropertyList pl = newdob->getInstanceProperties();
+/*
+ // Print out the top level elements of the document
+ for ( int i=0; i < pl.size(); i++ )
+ {
+ const Property& p = pl[i];
+ if ( newdob->isSet(p))
+ {
+ if ( p.getType().isDataType() )
+ {
+ cout << "isDataType = TRUE \n";
+ cout << p.getName() << "=" << newdob->getCString(i) << endl;
+ }
+ else
+ {
+ cout << "isDataType = FALSE \n";
+ if ( p.isMany )
+ {
+ cout << "isMany = TRUE \n";
+ DataObjectList& dol= newdob->getList (i);
+
+ for ( int i=0; i < dol.size(); i++ )
+ {
+ cout << p.getName() << "[" << i << "] " << "=" << dol[i] << endl;
+ }
+ }
+ else
+ {
+ cout << "isMany = FALSE \n";
+ cout << p.getName() << "=" << newdob->getDataObject(i) << endl;
+ }
+ }
+ }
+ }
+*/
+ // write the XML element back out to a file
+ char outxmlfilename[200];
+ strcpy (outxmlfilename, filename );
+ strcat (outxmlfilename, "-cpp-out.xml" );
+ cout << "Write the XML file " << outxmlfilename << endl;
+ myXMLHelper->save(myXMLDocument, outxmlfilename);
+
+ }
+ catch (SDORuntimeException e)
+ {
+ cout << "Exception in interop test" << endl;
+ cout << e.getMessageText();
+ cout << e;
+ }
+}
+
+/*
+ * Ensure that SDO can read an XSD file and
+ * write it back out again without changing the XSD. The
+ * test XML files can be found in tuscany/interop/src/main/resources
+ */
+void Interop::test4ReadAndWriteXSD(char *commonDir, char *filename)
+{
+ /**
+ * Get an XSD helper to load XSD information into the
+ * data factory
+ */
+
+ DataFactoryPtr mdg = DataFactory::getDataFactory();
+ XSDHelperPtr myXSDHelper = HelperProvider::getXSDHelper(mdg);
+
+ char fullxsdfilename[200];
+ strcpy (fullxsdfilename, commonDir );
+ strcat (fullxsdfilename, filename );
+ strcat (fullxsdfilename,".xsd");
+ cout << "Read the XSD file " << fullxsdfilename << endl;
+ const char * URIOfRootType = myXSDHelper->defineFile(fullxsdfilename);
+
+ cout << "URI of root type" << URIOfRootType << endl;
+
+ /**
+ * Now write the XSD back again
+ */
+ DataFactoryPtr df = myXSDHelper->getDataFactory();
+ TypeList typeList = df->getTypes();
+
+ char outxsdfilename[200];
+ strcpy (outxsdfilename, filename );
+ strcat(outxsdfilename,"-cpp-out.xsd");
+ cout << "Write an XSD back out " << outxsdfilename << endl;
+ myXSDHelper->generateFile(typeList, outxsdfilename);
+
+}
diff --git a/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/interop.h b/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/interop.h
new file mode 100644
index 0000000000..deebc64082
--- /dev/null
+++ b/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/interop.h
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "commonj/sdo/SDO.h"
+
+
+using namespace commonj::sdo;
+
+class Interop
+{
+ public:
+ static void test1ReadAndWriteXML(char *, char *);
+ static void test4ReadAndWriteXSD(char *, char *);
+};
diff --git a/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/main.cpp b/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/main.cpp
new file mode 100644
index 0000000000..b22ffe3d6c
--- /dev/null
+++ b/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/main.cpp
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "interop.h"
+
+using namespace std;
+/*
+ * The interop tests exercised here do not actually interoperate with other
+ * SDO implementations but simply check that and data that is read
+ * in and written out remains unchanged
+ */
+int main (int argc, char** argv)
+{
+ char *commonDir = "..\\..\\..\\..\\..\\interop\\src\\main\\resources\\";
+
+ cout << "SOME TESTS COMMENTED OUT - CHECK SOURCE \n";
+
+ Interop::test1ReadAndWriteXML(commonDir, "interop01");
+ Interop::test1ReadAndWriteXML(commonDir, "interop02");
+ Interop::test1ReadAndWriteXML(commonDir, "interop03");
+ //Interop::test1ReadAndWriteXML(commonDir, "interop04");
+ Interop::test1ReadAndWriteXML(commonDir, "interop05");
+ Interop::test1ReadAndWriteXML(commonDir, "interop06");
+ Interop::test1ReadAndWriteXML(commonDir, "interop07");
+ Interop::test1ReadAndWriteXML(commonDir, "interop08");
+ Interop::test1ReadAndWriteXML(commonDir, "interop09");
+ Interop::test1ReadAndWriteXML(commonDir, "interop10");
+ Interop::test1ReadAndWriteXML(commonDir, "interop11");
+ Interop::test1ReadAndWriteXML(commonDir, "interop12");
+ //Interop::test1ReadAndWriteXML(commonDir, "interop13");
+ Interop::test1ReadAndWriteXML(commonDir, "interop14");
+ Interop::test1ReadAndWriteXML(commonDir, "interop15");
+ Interop::test1ReadAndWriteXML(commonDir, "interop16");
+ Interop::test1ReadAndWriteXML(commonDir, "interop17");
+ Interop::test1ReadAndWriteXML(commonDir, "interop18");
+ Interop::test1ReadAndWriteXML(commonDir, "interop19");
+ Interop::test1ReadAndWriteXML(commonDir, "interop20");
+ Interop::test1ReadAndWriteXML(commonDir, "interop21");
+ Interop::test1ReadAndWriteXML(commonDir, "interop22");
+ Interop::test1ReadAndWriteXML(commonDir, "interop23");
+ Interop::test1ReadAndWriteXML(commonDir, "interop24");
+ Interop::test1ReadAndWriteXML(commonDir, "interop25");
+ Interop::test1ReadAndWriteXML(commonDir, "interop26");
+ Interop::test1ReadAndWriteXML(commonDir, "interop27");
+ Interop::test1ReadAndWriteXML(commonDir, "interop28");
+ Interop::test1ReadAndWriteXML(commonDir, "interop29");
+ Interop::test1ReadAndWriteXML(commonDir, "interop30");
+ Interop::test1ReadAndWriteXML(commonDir, "interop31");
+ Interop::test1ReadAndWriteXML(commonDir, "interop32");
+ Interop::test1ReadAndWriteXML(commonDir, "interop33");
+ Interop::test1ReadAndWriteXML(commonDir, "interop34");
+ Interop::test1ReadAndWriteXML(commonDir, "interop35");
+ Interop::test1ReadAndWriteXML(commonDir, "interop36");
+ Interop::test1ReadAndWriteXML(commonDir, "interop37");
+ Interop::test1ReadAndWriteXML(commonDir, "interop38");
+ Interop::test1ReadAndWriteXML(commonDir, "interop39");
+ Interop::test1ReadAndWriteXML(commonDir, "interop40");
+ Interop::test1ReadAndWriteXML(commonDir, "interop41");
+ Interop::test1ReadAndWriteXML(commonDir, "interop42");
+ Interop::test1ReadAndWriteXML(commonDir, "interop43");
+ Interop::test1ReadAndWriteXML(commonDir, "interop44");
+ Interop::test1ReadAndWriteXML(commonDir, "interop45");
+ Interop::test1ReadAndWriteXML(commonDir, "interop46");
+ Interop::test1ReadAndWriteXML(commonDir, "interop47");
+ Interop::test1ReadAndWriteXML(commonDir, "interop50");
+
+ Interop::test4ReadAndWriteXSD(commonDir, "interop01");
+
+ return 0;
+}
diff --git a/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/runinterop.bat b/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/runinterop.bat
new file mode 100644
index 0000000000..270687dbfd
--- /dev/null
+++ b/sdo-cpp/tags/cpp-sdo-1.0.incubating-M3/runtime/core/interop/runinterop.bat
@@ -0,0 +1,25 @@
+@echo off
+
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+set SDO_BASE=..\..\..
+
+set PATH=%LIBXML2_HOME%\bin;%ICONV_HOME%\bin;%ZLIB_HOME%\bin;%SDO_BASE%\deploy\bin
+
+Debug\sdo_interop.exe
+
+