summaryrefslogtreecommitdiffstats
path: root/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom
diff options
context:
space:
mode:
Diffstat (limited to 'sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom')
-rw-r--r--sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/Makefile.am39
-rw-r--r--sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/deploy.bat54
-rw-r--r--sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom.cpp271
-rw-r--r--sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom.h86
-rw-r--r--sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom_export.h39
5 files changed, 489 insertions, 0 deletions
diff --git a/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/Makefile.am b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/Makefile.am
new file mode 100644
index 0000000000..87fda98097
--- /dev/null
+++ b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/Makefile.am
@@ -0,0 +1,39 @@
+# 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.
+
+SUBDIRS =
+
+nobase_include_HEADERS = sdo_axiom.h \
+sdo_axiom_export.h
+
+lib_LTLIBRARIES = libtuscany_sdo_axiom.la
+AM_CPPFLAGS = $(CPPFLAGS)
+
+libtuscany_sdo_axiom_la_SOURCES = \
+ sdo_axiom.cpp
+
+libtuscany_sdo_axiom_la_LIBADD = \
+ -L$(top_builddir)/runtime/core/src/commonj/sdo -ltuscany_sdo \
+ -L$(AXIS2C_HOME)/lib \
+ -laxis2_util \
+ -laxis2_axiom \
+ -laxis2_parser
+
+INCLUDES = -I$(top_builddir)/runtime/core/src \
+ -I$(top_builddir)/runtime/core/sdo_axiom \
+ -I${AXIS2C_HOME}/include
+ \ No newline at end of file
diff --git a/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/deploy.bat b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/deploy.bat
new file mode 100644
index 0000000000..a6dd6e5c46
--- /dev/null
+++ b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/deploy.bat
@@ -0,0 +1,54 @@
+@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.
+
+
+setlocal
+
+if . == .%1 (
+echo sdo root not specified
+goto usage
+)
+set deploydir=%1\deploy
+set srcdir=%1\runtime\core\sdo_axiom
+
+if . == .%2 (
+echo input directory not specified
+goto usage
+)
+set inpath=%2
+echo %inpath%
+
+if not exist %deploydir% mkdir %deploydir%
+if not exist %deploydir%\bin mkdir %deploydir%\bin
+if not exist %deploydir%\lib mkdir %deploydir%\lib
+if not exist %deploydir%\include mkdir %deploydir%\include
+
+copy %srcdir%\*.h %deploydir%\include\
+
+copy %inpath%\tuscany_sdo_axiom.lib %deploydir%\lib
+copy %inpath%\tuscany_sdo_axiom.dll %deploydir%\bin
+
+if exist %inpath%\tuscany_sdo_axiom.pdb copy %inpath%\tuscany_sdo_axiom.pdb %deploydir%\bin
+
+goto end
+:usage
+echo Usage: deploy <sdo-root> <build-output>
+:end
+
+endlocal
diff --git a/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom.cpp b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom.cpp
new file mode 100644
index 0000000000..bcdfb8ed70
--- /dev/null
+++ b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom.cpp
@@ -0,0 +1,271 @@
+/*
+ * 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$ */
+
+#if defined(WIN32) || defined (_WINDOWS)
+#pragma warning(disable: 4786)
+#endif
+
+#include "sdo_axiom.h"
+
+using namespace commonj::sdo;
+using namespace std;
+
+
+namespace commonj
+{
+ namespace sdo_axiom
+ {
+
+ int AxiomHelper::axiswritercount = 0;
+
+ AxiomHelper* AxiomHelper::getHelper()
+ {
+ return new AxiomHelper();
+ }
+
+ void AxiomHelper::releaseHelper(AxiomHelper* h)
+ {
+ if (h) delete h;
+ }
+
+ void AxiomHelper::deleteEnv()
+ {
+ if (the_env)axis2_env_free(the_env);
+ }
+
+ void AxiomHelper::createEnv()
+ {
+ the_env = axis2_env_create_all("tuscany_sdo_axiom.log",AXIS2_LOG_LEVEL_WARNING);
+
+ if (the_env == 0) return;
+
+ return;
+ }
+
+
+ AxiomHelper::AxiomHelper()
+ {
+ createEnv();
+ }
+
+ AxiomHelper::~AxiomHelper()
+ {
+ deleteEnv();
+ }
+
+
+ axis2_env_t* AxiomHelper::getEnv()
+ {
+ return the_env;
+ }
+
+ axiom_node_t* AxiomHelper::toAxiomNode(DataObjectPtr dob,
+ const char* targetNamespaceURI, const char* elementName)
+ {
+
+ axiom_document_t* doc = toAxiomDoc(dob,
+ targetNamespaceURI, elementName);
+
+ if (!doc)
+ {
+ return 0;
+ }
+
+ axiom_node_t* root_node =
+ AXIOM_DOCUMENT_GET_ROOT_ELEMENT(doc, the_env);
+ if (!root_node)
+ {
+ cout << "No Root Element in the document" << endl;
+ return 0;
+ }
+
+
+ return root_node;
+ }
+
+ axiom_document_t* AxiomHelper::toAxiomDoc(DataObjectPtr dob,
+ const char* targetNamespaceURI, const char* elementName)
+ {
+
+ DataFactory* df = dob->getDataFactory();
+ XSDHelperPtr xs = HelperProvider::getXSDHelper(df);
+ XMLHelperPtr xm = HelperProvider::getXMLHelper(df);
+ if (!the_env)
+ {
+ cout << "No Axis Environment" << endl;
+ return 0;
+ }
+
+ XMLDocumentPtr doc = xm->createDocument(
+ dob,
+ targetNamespaceURI,
+ elementName);
+
+ char * str = xm->save(doc);
+
+ //if (str) {
+ // cout << "toAxiomDoc " << str << endl;
+ //}
+
+ axiom_xml_reader_t * reader =
+ axiom_xml_reader_create_for_memory(the_env,
+ (void*)str,
+ strlen(str),
+ (const axis2_char_t *)"UTF-8",
+ AXIS2_XML_PARSER_TYPE_BUFFER);
+
+ if (!reader)
+ {
+ cout << "No Axis Reader" << endl;
+ return 0;
+ }
+
+ axiom_stax_builder_t* builder =
+ axiom_stax_builder_create(the_env, reader);
+
+ if (!builder)
+ {
+ cout << "No Axis Builder" << endl;
+ AXIOM_XML_READER_FREE(reader, the_env);
+ return 0;
+ }
+
+ axiom_document_t* document =
+ AXIOM_STAX_BUILDER_GET_DOCUMENT(builder, the_env);
+
+ if (!document)
+ {
+ cout << "No Axis Document" << endl;
+ AXIOM_STAX_BUILDER_FREE(builder, the_env);
+ return 0;
+ }
+
+ axiom_node_t* root_node =
+ AXIOM_DOCUMENT_GET_ROOT_ELEMENT(document, the_env);
+ if (!root_node)
+ {
+ cout << "No Root Element in the document" << endl;
+ AXIOM_STAX_BUILDER_FREE(builder, the_env);
+ return 0;
+ }
+
+
+ AXIOM_DOCUMENT_BUILD_ALL(document, the_env);
+
+ return document;
+ }
+
+ DataObjectPtr AxiomHelper::toSdo(axiom_document_t* document,
+ DataFactoryPtr factory,
+ const char* targetNamespaceURI)
+ {
+
+ if (!the_env)
+ {
+ cout << "No Axis Environment" << endl;
+ return 0;
+ }
+
+ axiom_node_t* root_node =
+ AXIOM_DOCUMENT_GET_ROOT_ELEMENT(document, the_env);
+
+ return toSdo(root_node,factory, targetNamespaceURI);
+ }
+
+ DataObjectPtr AxiomHelper::toSdo(axiom_node_t* root_node,
+ DataFactoryPtr factory,
+ const char* targetNamespaceURI)
+ {
+
+ if (!the_env)
+ {
+ cout << "No Axis Environment" << endl;
+ return 0;
+ }
+
+ XMLHelperPtr helper = HelperProvider::getXMLHelper(factory);
+
+ axiom_xml_writer_t* writer = axiom_xml_writer_create_for_memory(
+ the_env, NULL, AXIS2_TRUE, 0,
+ AXIS2_XML_PARSER_TYPE_BUFFER);
+
+ axiom_output_t* output = axiom_output_create(the_env, writer);
+
+
+ if (!root_node)
+ {
+ cout << "No Root Element in the document" << endl;
+ AXIOM_OUTPUT_FREE(output, the_env);
+ return 0;
+ }
+
+ AXIOM_NODE_SERIALIZE(root_node, the_env, output);
+
+ axis2_char_t* buffer = (axis2_char_t*)AXIOM_XML_WRITER_GET_XML(writer, the_env);
+
+ XMLDocumentPtr theXMLDocument = helper->load(buffer, targetNamespaceURI);
+
+ if (theXMLDocument != 0)
+ {
+ return theXMLDocument->getRootDataObject();
+ }
+ cout << "The XML document returned from load was zero" << endl;
+ return 0;
+ }
+
+ void AxiomHelper::output(axiom_document_t* document)
+ {
+
+ if (!the_env)
+ {
+ cout << "No Axis Environment" << endl;
+ return;
+ }
+
+ axiom_xml_writer_t* writer = axiom_xml_writer_create_for_memory(
+ the_env, NULL, AXIS2_TRUE, 0,
+ AXIS2_XML_PARSER_TYPE_BUFFER);
+
+ axiom_output_t* output = axiom_output_create(the_env, writer);
+
+ axiom_node_t* root_node =
+ AXIOM_DOCUMENT_GET_ROOT_ELEMENT(document, the_env);
+
+ if (!root_node)
+ {
+ cout << "No Root Element in the document" << endl;
+ AXIOM_OUTPUT_FREE(output, the_env);
+ return;
+ }
+
+ AXIOM_NODE_SERIALIZE(root_node, the_env, output);
+
+ axis2_char_t* buffer = (axis2_char_t*)AXIOM_XML_WRITER_GET_XML(writer, the_env);
+
+ printf("Output XML:n %s ", buffer);
+
+ AXIOM_OUTPUT_FREE(output, the_env);
+
+ return;
+ }
+ }
+}
+
diff --git a/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom.h b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom.h
new file mode 100644
index 0000000000..aedcf1935a
--- /dev/null
+++ b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom.h
@@ -0,0 +1,86 @@
+/*
+ * 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$ */
+
+#ifndef _SDO_AXIOM_H_
+#define _SDO_AXIOM_H_
+
+#include "sdo_axiom_export.h"
+
+#include "axiom.h"
+//#include "axis2_om_document.h"
+//#include "axis2_om_stax_builder.h"
+
+
+#include "commonj/sdo/SDO.h"
+
+
+
+namespace commonj
+{
+ namespace sdo_axiom
+ {
+
+/**
+ * AxiomHelper writes a data object tree to XML
+ */
+ class AxiomHelper
+ {
+
+ public:
+
+ SDO_AXIOM_API AxiomHelper();
+
+ SDO_AXIOM_API virtual ~AxiomHelper();
+
+ SDO_AXIOM_API static AxiomHelper* getHelper();
+
+ SDO_AXIOM_API static void releaseHelper(AxiomHelper* ax);
+
+ SDO_AXIOM_API axiom_document_t* toAxiomDoc(commonj::sdo::DataObjectPtr dob,
+ const char* targetNamespaceURI = "", const char* elementName = "");
+ SDO_AXIOM_API axiom_node_t* toAxiomNode(commonj::sdo::DataObjectPtr dob,
+ const char* targetNamespaceURI = "", const char* elementName = "");
+
+ SDO_AXIOM_API commonj::sdo::DataObjectPtr toSdo(axiom_document_t* doc, commonj::sdo::DataFactoryPtr factory, const char* targetNamespaceURI=0);
+ SDO_AXIOM_API commonj::sdo::DataObjectPtr toSdo(axiom_node_t* root_node, commonj::sdo::DataFactoryPtr factory, const char* targetNamespaceURI=0);
+
+ SDO_AXIOM_API axis2_env_t* getEnv();
+
+ SDO_AXIOM_API void output(axiom_document_t* document);
+
+
+ protected:
+ private:
+
+ void deleteEnv();
+
+ void createEnv();
+
+ static int axiswritercount;
+
+ axis2_env_t *the_env;
+
+ };
+ } // End - namespace sdo_axiom
+} // End - namespace commonj
+
+
+#endif //_SDO_AXIOM_H_
diff --git a/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom_export.h b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom_export.h
new file mode 100644
index 0000000000..bc9c8f55ed
--- /dev/null
+++ b/sdo-cpp/branches/sdo-cpp-pre2.1/runtime/core/sdo_axiom/sdo_axiom_export.h
@@ -0,0 +1,39 @@
+/*
+ * 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$ */
+
+
+#ifdef WIN32
+
+#ifdef SDO_AXIOM_EXPORTS
+# define SDO_AXIOM_API __declspec(dllexport)
+# define SDO_AXIOM_EXPIMP
+#else
+# define SDO_AXIOM_API __declspec(dllimport)
+# define SDO_AXIOM_EXPIMP extern
+#endif
+
+#else
+
+# define SDO_AXIOM_API
+# define SDO_AXIOM_EXPIMP
+
+#endif
+