diff options
Diffstat (limited to 'branches/cpp-M1/sdo/runtime/core')
416 files changed, 0 insertions, 62299 deletions
diff --git a/branches/cpp-M1/sdo/runtime/core/Makefile.am b/branches/cpp-M1/sdo/runtime/core/Makefile.am deleted file mode 100644 index 1b3ddb9c93..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = src test sdo_axiom sdo_axiom_test diff --git a/branches/cpp-M1/sdo/runtime/core/sdo_axiom/Makefile.am b/branches/cpp-M1/sdo/runtime/core/sdo_axiom/Makefile.am deleted file mode 100644 index 7339b49e97..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/sdo_axiom/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -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/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom.cpp b/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom.cpp deleted file mode 100644 index 0d71d9802e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom.cpp +++ /dev/null @@ -1,264 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $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_allocator = axis2_allocator_init (NULL); - if (the_allocator == NULL) return; - - the_env = axis2_env_create(the_allocator); - - 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) - { - - axiom_document_t* doc = toAxiomDoc(dob); - - 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) - { - - DataFactory* df = dob->getDataFactory(); - XSDHelperPtr xs = HelperProvider::getXSDHelper(df); - XMLHelperPtr xm = HelperProvider::getXMLHelper(df); - if (!the_env) - { - cout << "No Axis Environment" << endl; - return 0; - } - char * str = - xm->save( - dob, - dob->getType().getURI(), - dob->getType().getName()); - - // if (str) cout << 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) - { - - 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); - } - - DataObjectPtr AxiomHelper::toSdo(axiom_node_t* root_node, - DataFactoryPtr factory) - { - - 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); - - 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/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom.h b/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom.h deleted file mode 100644 index 631c1c9437..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $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" - -using namespace commonj::sdo; - -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(DataObjectPtr dob); - SDO_AXIOM_API axiom_node_t* toAxiomNode(DataObjectPtr dob); - - SDO_AXIOM_API DataObjectPtr toSdo(axiom_document_t* doc,DataFactoryPtr factory); - SDO_AXIOM_API DataObjectPtr toSdo(axiom_node_t* root_node,DataFactoryPtr factory); - - 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; - axis2_allocator_t *the_allocator; - - - - }; - } // End - namespace sdo_axiom -} // End - namespace commonj - - -#endif //_SDO_AXIOM_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom_export.h b/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom_export.h deleted file mode 100644 index 70d6b813f7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/sdo_axiom/sdo_axiom_export.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $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 - diff --git a/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/Makefile.am b/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/Makefile.am deleted file mode 100644 index 69acb6e9da..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -prgbindir=$(prefix)/bin/test -prgbin_PROGRAMS = tuscany_sdo_axiom_test -SUBDIRS = -AM_CPPFLAGS = $(CPPFLAGS) -tuscany_sdo_axiom_test_SOURCES = sdo_axiom_test.cpp - -noinst_HEADERS=*.h - -tuscany_sdo_axiom_test_LDADD = \ - -L$(top_builddir)/runtime/core/src/commonj/sdo -ltuscany_sdo \ - -L$(top_builddir)/runtime/core/sdo_axiom -ltuscany_sdo_axiom \ - -L${LIBXML2_LIB} -lxml2 \ - -L$(AXIS2C_HOME)/lib \ - -laxis2_util \ - -laxis2_axiom \ - -laxis2_parser \ - -laxis2_minizip - -INCLUDES = -I$(top_builddir)/runtime/core/sdo_axiom_test \ - -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/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/sdo_axiom_test.cpp b/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/sdo_axiom_test.cpp deleted file mode 100644 index 31d4e2b029..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/sdo_axiom_test.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* - * - * 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: main.cpp,v 1.1 2006/03/16 10:54:16 slattery Exp $ */ - -#include <stdio.h> - -#pragma warning(disable:4786) - -#include <iostream> - -#include "sdo_axiom_test.h" - - -void axiomtest::axiom_test() -{ - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Company"); - - mdg->addType("myspace","Department"); - - mdg->addType("myspace","Employee"); - - mdg->addPropertyToType("myspace","Company","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Company","norbert", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Company","departments", - "myspace","Department", true, false, true); - - mdg->addPropertyToType("myspace","Department","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Department","employees", - "myspace","Employee", true, false, true); - - mdg->addPropertyToType("myspace","Employee","name", - "commonj.sdo","String", false, false, false); - - const Type& tcc = mdg->getType("myspace","Company"); - - DataObjectPtr company = mdg->create((Type&)tcc); - company->setCString("name","The VDB Company Inc"); - company->setCString("norbert","Spandex Courvette"); - - - DataObjectPtr dept1 = company->createDataObject("departments"); - dept1->setCString("name","Accounts"); - - DataObjectPtr dept2 = company->createDataObject("departments"); - dept2->setCString("name","Billing"); - - DataObjectPtr emp1 = dept1->createDataObject("employees"); - emp1->setCString("name","Albert"); - - DataObjectPtr emp2 = dept1->createDataObject("employees"); - emp2->setCString("name","Ben"); - - DataObjectPtr emp3 = dept2->createDataObject("employees"); - emp3->setCString("name","Cyril"); - - DataObjectPtr emp4 = dept2->createDataObject("employees"); - emp4->setCString("name","Dominic"); - - AxiomHelper* ax = AxiomHelper::getHelper(); - - if (ax) - { - axiom_document_t* doc = ax->toAxiomDoc(company); - - if (doc) - { - ax->output(doc); - - DataObjectPtr newdob = ax->toSdo(doc,mdg); - - if (newdob) - { - cout << "Printing first data object..." << endl; - SDOUtils::printDataObject(cout,newdob); - cout << "Finished" << endl; - } - - axiom_node_t* node = - AXIOM_DOCUMENT_GET_ROOT_ELEMENT(doc, ax->getEnv()); - - - DataObjectPtr newdob2 = ax->toSdo(node,mdg); - - if (newdob2) - { - cout << "Printing second data object..." << endl; - SDOUtils::printDataObject(cout,newdob2); - cout << "Finished" << endl; - } - - - } - - } - - return; - -} - -extern "C"{ - -int main (int argc, char** argv) -{ - axiomtest::axiom_test(); - return 0; -} - -} diff --git a/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/sdo_axiom_test.h b/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/sdo_axiom_test.h deleted file mode 100644 index d4756546b7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/sdo_axiom_test/sdo_axiom_test.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - * 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: sdotest.h,v 1.21 2006/03/16 12:21:04 slattery Exp $ */ - -#include "sdo_axiom.h" -#include "commonj/sdo/SDO.h" - - -using namespace commonj::sdo; -using namespace commonj::sdo_axiom; -using namespace std; - - - -// test - -class axiomtest { - public: - - static void axiom_test(); -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/.cdtbuild b/branches/cpp-M1/sdo/runtime/core/src/.cdtbuild deleted file mode 100644 index 7c9117ffae..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/.cdtbuild +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?fileVersion 3.0.0?> - -<ManagedProjectBuildInfo> -<project id="tuscany_sdo.cdt.managedbuild.target.gnu.so.1649887895" name="Shared Library (Gnu)" projectType="cdt.managedbuild.target.gnu.so"> -<configuration artifactExtension="so" artifactName="tuscany_sdo" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="cdt.managedbuild.config.gnu.so.debug.804736841" name="Debug" parent="cdt.managedbuild.config.gnu.so.debug"> -<toolChain id="cdt.managedbuild.toolchain.gnu.so.debug.853581152" name="GCC Tool Chain" superClass="cdt.managedbuild.toolchain.gnu.so.debug"> -<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.compiler.so.debug.1430134894" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.so.debug"/> -<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.compiler.so.debug.1021362517" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.so.debug"> -<option id="gnu.cpp.compiler.option.preprocessor.def.2069673202" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols"> -<listOptionValue builtIn="false" value="_DEBUG"/> -</option> -<option id="gnu.cpp.compiler.option.include.paths.1923756814" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> -<listOptionValue builtIn="false" value="${project_loc}"/> -<listOptionValue builtIn="false" value="${LIBXML2_INCLUDE}"/> -</option> -<option id="gnu.cpp.compiler.option.warnings.allwarn.1941506556" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="false" valueType="boolean"/> -</tool> -<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.linker.so.debug.1367539588" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.so.debug"/> -<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.linker.so.debug.2094383123" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.so.debug"/> -<tool command="as" id="cdt.managedbuild.tool.gnu.assembler.so.debug.662724583" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.so.debug"/> -<macros/> -</toolChain> -</configuration> -<configuration artifactExtension="so" artifactName="tuscany_sdo" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="cdt.managedbuild.config.gnu.so.release.1588435275" name="Release" parent="cdt.managedbuild.config.gnu.so.release"> -<toolChain id="cdt.managedbuild.toolchain.gnu.so.release.1916451262" name="GCC Tool Chain" superClass="cdt.managedbuild.toolchain.gnu.so.release"> -<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.compiler.so.release.994589200" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.so.release"/> -<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.compiler.so.release.1429553177" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.so.release"> -<option id="gnu.cpp.compiler.option.include.paths.1557660473" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> -<listOptionValue builtIn="false" value="${project_loc}"/> -<listOptionValue builtIn="false" value="/usr/include/libxml2"/> -</option> -<option id="gnu.cpp.compiler.option.warnings.allwarn.687619026" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="false" valueType="boolean"/> -</tool> -<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.linker.so.release.316500641" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.so.release"/> -<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.linker.so.release.1432920590" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.so.release"/> -<tool command="as" id="cdt.managedbuild.tool.gnu.assembler.so.release.1095309957" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.so.release"/> -<macros/> -</toolChain> -</configuration> -<macros/> -</project> -</ManagedProjectBuildInfo> diff --git a/branches/cpp-M1/sdo/runtime/core/src/.cdtproject b/branches/cpp-M1/sdo/runtime/core/src/.cdtproject deleted file mode 100644 index 48a12e6664..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/.cdtproject +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse-cdt version="2.0"?>
-
-<cdtproject id="org.eclipse.cdt.managedbuilder.core.managedMake">
-<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
-<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-<extension id="org.eclipse.cdt.core.domsourceindexer" point="org.eclipse.cdt.core.CIndexer"/>
-<data>
-<item id="org.eclipse.cdt.core.pathentry">
-<pathentry kind="src" path=""/>
-<pathentry kind="out" path=""/>
-<pathentry kind="con" path="org.eclipse.cdt.managedbuilder.MANAGED_CONTAINER"/>
-</item>
-</data>
-</cdtproject>
diff --git a/branches/cpp-M1/sdo/runtime/core/src/.project b/branches/cpp-M1/sdo/runtime/core/src/.project deleted file mode 100644 index a24e25672e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/.project +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>tuscany_sdo</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.cdt.core.cnature</nature> - <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> - <nature>org.eclipse.cdt.core.ccnature</nature> - </natures> -</projectDescription> diff --git a/branches/cpp-M1/sdo/runtime/core/src/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/branches/cpp-M1/sdo/runtime/core/src/.settings/org.eclipse.cdt.managedbuilder.core.prefs deleted file mode 100644 index 37a23c6dd7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ /dev/null @@ -1,9 +0,0 @@ -#Wed Feb 15 15:54:27 GMT 2006 -eclipse.preferences.version=1 -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.so.debug.804736841=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="CPLUS_INCLUDE_PATH" operation\="remove"/>\n</environment>\n -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.so.release.1588435275=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="CPLUS_INCLUDE_PATH" operation\="remove"/>\n</environment>\n -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.so.debug.804736841=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.so.release.1588435275=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n -environment/project=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment/>\n -environment/project/cdt.managedbuild.config.gnu.so.debug.804736841=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable delimiter\="" name\="LIBXML2_INCLUDE" operation\="replace" value\="/usr/include/libxml2"/>\n</environment>\n -environment/project/cdt.managedbuild.config.gnu.so.release.1588435275=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable delimiter\="" name\="LIBXML2_INCLUDE" operation\="replace" value\="/usr/include/libxml2"/>\n</environment>\n diff --git a/branches/cpp-M1/sdo/runtime/core/src/Makefile.am b/branches/cpp-M1/sdo/runtime/core/src/Makefile.am deleted file mode 100644 index b24de0f89f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS = commonj - -nobase_include_HEADERS = \ -commonj/sdo/*.h
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/Makefile.am b/branches/cpp-M1/sdo/runtime/core/src/commonj/Makefile.am deleted file mode 100644 index 82055487b0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = sdo diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp deleted file mode 100644 index 42e45603ce..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/Logger.h" - -#include "commonj/sdo/ChangeSummary.h" -namespace commonj{ -namespace sdo{ - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h deleted file mode 100644 index 01929ce311..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h +++ /dev/null @@ -1,207 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _CHANGESUMMARY_H_ -#define _CHANGESUMMARY_H_ -#include "commonj/sdo/export.h" - - -#include "commonj/sdo/SettingList.h" -#include "commonj/sdo/ChangedDataObjectList.h" - - -namespace commonj{ -namespace sdo { - - /** - * - * A change summary is used to record changes to the objects in a data graph. - * This allows applications to efficiently and incrementally update - * back-end storage when required. - */ - - class ChangeSummary - { - public: - - /** getChangedDataObjects() returns a list of changed objects. - * - * The new and modified objects in the list are references to objects that - * are associated with this change summary. - * The deleted objects in the list are references to copies of the objects - * as they appeared at the time that event logging was enabled; - * if the deleted objects have references to other objects, - * the references will also refer to copies of the target objects. - * Return a list of changed data objects. - */ - - virtual SDO_API ChangedDataObjectList& getChangedDataObjects() = 0; - - - /** getOldValues returns a list of old values as settings. - * - * Returns a list of Settings - * that represent the property values of the given dataObject - * at the point when logging began. - * In the case of a deleted object, - * the list will include Settings for all the properties. - * An old value Setting indicates the value at the - * point logging begins. A setting is only produced for - * modified objects if either the old value differs from the current value or - * if the isSet differs from the current value. - * No Settings are produced for created objects. - * Param dataObject the object in question. - * Return a list of settings. - */ - - virtual SDO_API SettingList& getOldValues(DataObjectPtr dataObject) = 0; - - /** getOldXpath returns the old path before the setting. - * - * Returns a path where the object was located before the setting took place. - */ - - - virtual SDO_API const char* getOldXpath(RefCountingPointer<commonj::sdo::DataObject> dol) = 0; - - /** beginLogging() sets the change summary in logging mode. - * - * The change summary is initially inactive. Setting it to logging mode - * starts the process of recording all the settings made. - */ - - virtual SDO_API void beginLogging() = 0; - - /** endLogging() stops logging. - * - * This method stops logging, but does not clear out the change summary. - * The changes are valid until the summary is next set to logging, at which time - * all old settings are lost. - */ - - virtual SDO_API void endLogging() = 0; - - - - /** isLogging() returns true if logging is enabled. - * - * Indicates whether change logging is on (true) or off (false). - */ - - virtual SDO_API bool isLogging() = 0; - - - - /** isCreated() returns true if the object was created during logging. - * - * Returns whether or not the specified data object was created while logging. - * Any object that was added to the data graph - * but was not in the data graph when logging began, - * will be considered created. - * Param dataObject the data object in question. - * Return true if the specified data object was created. - */ - - virtual SDO_API bool isCreated(DataObjectPtr dataObject) = 0; - - /** isDeleted() - true if the object was deleted during logging. - * - * Returns whether or not the specified data object was deleted while logging. - * Any object that is not contained by the data graph will be considered - * deleted. - * Param dataObject the data object in question. - * Return true if the specified data object was deleted. - */ - - virtual SDO_API bool isDeleted(DataObjectPtr dataObject) = 0; - - - /** isModified() - true if the object was changed during logging. - * - * Returns whether or not the specified data object was updated while logging. - * An object that was contained in the data graph when logging began, - * and remains in the graph when logging ends will be considered for changes. - * An object considered modified must have at least one old value Setting. - * Param dataObject the data object in question. - * Return true if the specified data object was modified. - */ - - virtual SDO_API bool isModified(DataObjectPtr dataObject) = 0; - - /** getOldValue() gets the setting showing the old value. - * - * Returns a setting for the specified property - * representing the property value of the given dataObject - * at the point when logging began. - * Returns null if the property has not changed and - * has not been deleted. - * Param dataObject the object in question. - * Param property the property of the object. - * Return the Setting for the specified property. - */ - - virtual SDO_API const Setting& getOldValue(DataObjectPtr dataObject, const Property& property) = 0; - - /** getOldContainer() gets the container before the setting. - * - * Returns the value of the container data object - * at the point when logging began. - * Param dataObject the object in question. - * Return the old container data object. - */ - - virtual SDO_API DataObjectPtr getOldContainer(DataObjectPtr dataObject) = 0; - - /** getOldContainmentProperty() - gives the property before setting. - * - * Returns the value of the containment property data object property - * at the point when logging began. - * Param dataObject the object in question. - * Return the old containment property. - */ - - virtual SDO_API const Property& getOldContainmentProperty(DataObjectPtr dataObject) = 0; - - /** undoChanges() - Not Implemented. - * - * NOT IMPLEMENTED - * - * Undoes all changes in the log to restore the tree of - * DataObjects to its original state when logging began. - * isLogging() is unchanged. The log is cleared. - */ - - virtual SDO_API void undoChanges() = 0; - - /** getOldSequence() - Not Implemented. - * - * NOT IMPLEMENTED - * - * This method gives back the sequence of a data object as it - * appeared when logging was switched on. The data object may be - * a deleted data object or a changed data object. If the - * data object was not sequenced, this returns null. - */ - - virtual SDO_API SequencePtr getOldSequence(DataObjectPtr dataObject) = 0; - -}; -}; -}; -#endif //_CHANGESUMMARY_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp deleted file mode 100644 index 46146d0045..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp +++ /dev/null @@ -1,1144 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/ChangeSummaryBuilder.h" - -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/ChangeSummary.h" -#include "commonj/sdo/XSDPropertyInfo.h" -#include "commonj/sdo/XMLQName.h" -#include "commonj/sdo/DASProperty.h" -#include "commonj/sdo/Logging.h" - -namespace commonj -{ - namespace sdo - { - -// ======================================================================== -// Constructor/Destructor -// ======================================================================== - - ChangeSummaryBuilder::ChangeSummaryBuilder( - DataFactoryPtr df, - DataObjectPtr& rootDO) - - : dataFactory(df), - rootDataObject(rootDO) - - - { - LOGINFO(INFO,"CSBuilder constructor"); - currentState = baseState; - } - - ChangeSummaryBuilder::~ChangeSummaryBuilder() - { - LOGINFO(INFO,"CSBuilder destructor"); - } - - -// ======================================================================== -// Deletion handling -// ======================================================================== - - void ChangeSummaryBuilder::populateDeletion(ChangeSummaryImpl* csi,DataObjectPtr dob, - int currentIndex) - { - LOGENTRY(INFO,"CSBuilder populateDeletion"); - try { - - std::list<deletionAttribute>::iterator attributesiter; - std::list<deletionElement>::iterator elementsiter; - - for (attributesiter= deletions[currentIndex].attributes.begin(); - attributesiter!= deletions[currentIndex].attributes.end(); - ++attributesiter) - { - - LOGINFO_1(INFO,"CSBuilder Populate deletion attribute:%s", - (const char*)((*attributesiter).name)); - - dob->setCString((const char*)((*attributesiter).name), - (const char*)((*attributesiter).value)); - } - for (elementsiter= deletions[currentIndex].elements.begin(); - elementsiter!= deletions[currentIndex].elements.end(); - ++elementsiter) - { - - LOGINFO_1(INFO,"CSBuilder:Populate deletion element:%s", - (const char*)((*elementsiter).name)); - - SDOXMLString value = (*elementsiter).value; - SDOXMLString prop = (*elementsiter).name; - - if ((*elementsiter).isDeletion) - { - for (int i = 0; i < deletions.size(); i++) - { - if (value.equals (deletions[i].reference)) - { - if (deletions[i].dob == 0) - { - handleDeletion(csi,i,dob,(*elementsiter).value, - (*elementsiter).name); - } - // dob may have been set by the line above. - if (deletions[i].dob != 0) - { - DataObjectList& dli = dob->getList(prop); - dli.insert(0,deletions[i].dob); - } - break; - } - } - } - else - { - DataObjectList& dli = dob->getList(prop); - dli.append((const char*)value); - } - } - } - catch (SDORuntimeException e) - { - LOGSDOEXCEPTION(ERROR,"Error populating a deletion record",e); - } - LOGEXIT(INFO,"CSBuilder populateDeletion"); - return; - } - - -// ======================================================================== -// Deletion handling -// ======================================================================== - - void ChangeSummaryBuilder::handleDeletion( - ChangeSummaryImpl* csi, - int currentIndex, - DataObjectPtr cont, - SDOXMLString path, - SDOXMLString prop) - { - LOGENTRY(INFO,"CSBuilder handleDeletion(2)"); - - if (deletions[currentIndex].completedprocessing) - { - LOGEXIT(INFO,"CSBuilder handleDeletion(2) - Exit1"); - return; - } - - const Property& p = cont->getProperty(prop); - DataObjectPtr dob = dataFactory->create( - p.getType()); - populateDeletion(csi,dob,currentIndex); - deletions[currentIndex].dob = dob; - deletions[currentIndex].completedprocessing=true; - csi->appendToDeletions(p,dob,cont,path); - - LOGEXIT(INFO,"CSBuilder handleDeletion(2) - Exit2"); - - return; - } - -// ======================================================================== -// Deletion handling -// ======================================================================== - - void ChangeSummaryBuilder::handleDeletion( - ChangeSummaryImpl* csi, - int currentIndex, - SDOXMLString path) - { - - // find the original container - and see if it - // still exists. - // supposing the container doesnt exist, we need - // to process the deletion of that one first, or - // locate it in the already deleted elements. - - LOGENTRY(INFO,"CSBuilder:handleDeletion"); - - if (deletions[currentIndex].completedprocessing) - { - LOGEXIT(INFO,"CSBuilder:handleDeletion - Exit1"); - return; - } - - int index = path.lastIndexOf('/'); - if (index < 0) - { - LOGERROR(WARNING,"CSBuilder logs deletion of the root object - not possible"); - LOGEXIT(INFO,"CSBuilder:handleDeletion - Exit2"); - return; - } - - SDOXMLString prop = - path.substring(index+1); - SDOXMLString contpath = - path.substring(0,index); - - index = prop.lastIndexOf('.'); - if (index >= 0) prop = prop.substring(0,index); - - index = prop.lastIndexOf('['); - if (index >= 0) prop = prop.substring(0,index); - - DataObjectPtr cont; - - if (contpath.isNull()) - { - cont = rootDataObject; - - LOGINFO_1(INFO,"Handling deletion from root of %s",(const char*)prop); - } - else - { - try { - cont = rootDataObject->getDataObject(contpath); - LOGINFO_2(INFO,"Handling deletion from %s of %s", - (const char*)contpath,(const char*)prop); - } - catch (SDORuntimeException e) - { - cont = 0; - LOGINFO(INFO,"Container was a deleted object"); - } - } - - if (cont != 0) - { - handleDeletion(csi,currentIndex,cont,path,prop); - LOGEXIT(INFO,"CSBuilder:handleDeletion - Exit3"); - return; - } - else - { - // this data object was also deleted - cont = csi->matchDeletedObject(contpath); - if (cont != 0) - { - // we found a previously deleted object for - // the container. - handleDeletion(csi,currentIndex,cont,path,prop); - LOGEXIT(INFO,"CSBuilder:handleDeletion - Exit4"); - return; - } - - } - - // it could be a deletion which has not been processed yet - for (int i = 0; i < deletions.size(); i++) - { - if (contpath.equals (deletions[i].reference)) - { - // matching deletion found - if (i == currentIndex) - { - LOGERROR(WARNING,"Loop detected in handling deletes"); - LOGEXIT(INFO,"CSBuilder:handleDeletion - Exit5"); - return; - } - // Handle the deletion first - handleDeletion(csi,i,contpath); - LOGEXIT(INFO,"CSBuilder:handleDeletion - Exit6"); - return; - } - } - LOGERROR(WARNING,"Failed to find a matching delete "); - LOGEXIT(INFO,"CSBuilder:handleDeletion - Exit7"); - return; - } - -// ======================================================================== -// Deletion handling -// ======================================================================== - - SDOXMLString ChangeSummaryBuilder::shiftedIndex(int index) - { - int pos = createDeletes[index].value.lastIndexOf('.'); - if (pos < 0) return createDeletes[index].value; - - int val = atoi((const char*)(createDeletes[index]. - value.substring(pos+1))); - - char buf[10]; - - sprintf(buf, ".%d", val + createDeletes[index].indexshift); - - return createDeletes[index].value.substring(0,pos) + buf; - } - -// ======================================================================== -// Deletion handling -// ======================================================================== - - void ChangeSummaryBuilder::shiftIndices(int index, int delta) - { - int pos = createDeletes[index].value.lastIndexOf('.'); - if (pos < 0) return; - - SDOXMLString refstring = createDeletes[index].value.substring(0,pos); - pos = atoi((const char*)(createDeletes[index].value.substring(pos+1))); - - for (int k=index+1;k<createDeletes.size();k++) - { - - if (createDeletes[k].type.equals("create")) continue; - - int pos2 = createDeletes[k].value.lastIndexOf('.'); - if (pos2 < 0) continue; - - SDOXMLString refto = createDeletes[k].value.substring(0,pos2); - pos2 = atoi((const char*)(createDeletes[k].value.substring(pos2+1))); - - if (refstring.equals(refto) && pos2 >= pos) - { - createDeletes[k].indexshift += delta; - } - } - } - -// ======================================================================== -// Rebuilding of a change summary from the lists -// ======================================================================== - - void ChangeSummaryBuilder::buildChangeSummary( - DataObjectPtr changeSummaryDO) - { - LOGENTRY(INFO,"CSBuilder:buildChangeSummary"); - - int i; - - try { - if (changeSummaryDO == 0) - { - // there is no summary data object to rebuild - LOGEXIT(INFO,"CSBuilder:buildChangeSummary Exit1"); - return; - } - ChangeSummary* cs = changeSummaryDO->getChangeSummary(); - if (cs == 0) - { - // there is no change summary - this shouldnt happen - LOGEXIT(INFO,"CSBuilder:buildChangeSummary Exit2"); - return; - } - - ChangeSummaryImpl* csi = (ChangeSummaryImpl*)cs; - - // add the creations and deletions in order - - for (i = 0; i < createDeletes.size(); i++) - { - - LOGINFO_1(INFO,"CSBuilder:create/delete:%s", - (const char*)(createDeletes[i].value)); - - SDOXMLString thispath; - - if (createDeletes[i].indexshift != 0) - { - thispath = shiftedIndex(i); - } - else - { - thispath = createDeletes[i].value; - } - - if (!createDeletes[i].type.equals("delete")) - { - DataObjectPtr dob; - if (thispath.isNull()) - { - dob = rootDataObject; - } - else - { - dob = rootDataObject->getDataObject(thispath); - } - if (dob != 0) { - - LOGINFO(INFO,"CSBuilder:add create to change summary"); - - csi->appendToCreations(dob->getContainmentProperty(), - dob, dob->getContainer()); - shiftIndices(i,-1); - } - else - { - LOGERROR_1(WARNING,"Failed to find object at %s", - (const char*)createDeletes[i].value); - } - } - else - { - // its a deletion - match it. - for (int j = 0; j < deletions.size(); j++) - { - if (deletions[j].completedprocessing)continue; - - if (thispath.equals (deletions[j].reference)) - { - // matching deletion found - LOGINFO_1(INFO,"CSBuilder:matched delete:%s", - (const char*)deletions[j].reference); - - handleDeletion(csi, j,createDeletes[i].value); - // update the path on any higher items in the current - // many-valued property. - shiftIndices(i,1); - - break; - } - } - } - } - - // add the changes - - std::list<changeAttribute>::iterator a; - std::list<changeElement>::iterator e; - - for (i = 0; i< changes.size(); i++) - { - DataObjectPtr dob; - if (changes[i].reference.isNull()) - { - dob = rootDataObject; - } - else - { - dob = rootDataObject->getDataObject(changes[i].reference); - } - if (dob != 0) - { - LOGINFO_1(INFO,"Located a change at %s", - (const char*)changes[i].reference); - - // Need to get the changelogitem, and append settings to - // it.Append attributes - - for (a=changes[i].attributes.begin(); - a != changes[i].attributes.end();++a) - { - const Property& p = dob->getProperty((const char*)((*a).name)); - if (p.getType().isDataType()) - { - csi->appendToChanges( - p,dob,(*a).value,0); - } - else - { - for (int j = 0; j < deletions.size(); j++) - { - if ((*a).value.equals (deletions[j].reference)) - { - csi->appendToChanges( - p,dob,deletions[j].dob,0); - break; - } - } - } - } - for (e=changes[i].elements.begin(); - e != changes[i].elements.end();++e) - { - const Property& p = dob->getProperty - ((const char*)((*e).name)); - if ((*e).isDeletion) - { - - LOGINFO_1(INFO,"CSBuilder Change was a deletion of:%s", - (const char*)((*e).path)); - - for (int j = 0; j < deletions.size(); j++) - { - if ((*e).path.equals (deletions[j].reference)) - { - // matching deletion found - if (deletions[j].dob != 0) - { - csi->appendToChanges( - p,dob,deletions[j].dob,(*e).index); - } - break; - } - } - } - else if ((*e).isReference) - { - LOGINFO_2(INFO,"CSBuilder:Change was a reference from:%s to %s" , - (const char*)((*e).path), - (const char*)((*e).value)); - - DataObjectPtr pdob = rootDataObject->getDataObject((*e).value); - if (pdob != 0) - { - csi->appendToChanges(p,dob,pdob,(*e).index); - } - } - else - { - LOGINFO_1(INFO,"CSBuilder:Change was a many valued item:%s" , - (const char*)((*e).name)); - - csi->appendToChanges(p,dob,(*e).value,(*e).index); - } - - } - } - else - { - LOGERROR_1(WARNING,"CSBuilder:Failed to find object at %s", - (const char*)(changes[i].reference)); - } - } - } - catch (SDORuntimeException e) - { - LOGSDOEXCEPTION(ERROR,"CSBuilder:Error rebuilding change summary",e); - } - LOGEXIT(INFO,"CSBuilder:buildChangeSummary Exit3"); - } - -// ======================================================================== -// Parsing code -// ======================================================================== - - void ChangeSummaryBuilder::processStart( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - char cbuf[32]; - int i; - - LOGENTRY(INFO,"CSBuilder:processStart"); - - if (currentState == baseState) - { - if (localname.equalsIgnoreCase("create") || - localname.equalsIgnoreCase("delete")) - { - currentState = dealingWithCreateDelete; - // will be expecting a chars message to give the - // contents - - createDeletes.insert( - createDeletes.end(),createDelete(localname)); - - LOGINFO_1(INFO,"CSBuilder: Processing a %s",(const char*)localname); - LOGEXIT(INFO,"CSBuilder:processStart Exit1"); - return; - } - else - { - // we are starting a new change record here - currentState = dealingWithChange; - - // we expect the entry to have an sdo:ref, and possibly - // some attributes for the changed single-values - SDOXMLString ref = attributes.getValue("ref"); - - if (ref.isNull()) - { - LOGERROR(INFO,"CSBuilder:Problem with change reference"); - ref = SDOXMLString("Unknown"); - } - - currentChange = change(localname, ref); - - LOGINFO_2(INFO,"CSBuilder: Processing a change:%s:%s", - (const char*)localname, - (const char*)ref); - - currentLocation.clear(); - - if (ref.equals("#/")) - { - ref = SDOXMLString("#"); - } - - currentLocation.push_back(ref); - - // clear out the change state - if there was any. - - changeIndex = 0; - previousChange = SDOXMLString(""); - - // now insert any remaining attributes of this change - - for (i=0; i < attributes.size(); i++) - { - // push all the attributes into the change record. - SDOXMLString name = attributes[i].getName(); - if (!name.equalsIgnoreCase("ref")) - { - SDOXMLString value = attributes[i].getValue(); - currentChange.addAttribute( - changeAttribute(name,value)); - } - } - } - LOGEXIT(INFO,"CSBuilder:processStart Exit2"); - return; - } - - // We are not in the base state - we could be in a change or a deletion - // We are now dropping into an element, which could be either a many-valued - // primitive type, or a placeholder in list of deletions, or a deletion - // record. - - if (currentState == dealingWithChange) - { - - if (!previousChange.equals(localname)) - { - changeIndex = 0; - previousChange = localname; - } - else - { - changeIndex++; - } - - - sprintf(cbuf,"%d",changeIndex); - currentLocation.push_back(localname + "." + cbuf); - - // build the current location... - SDOXMLString curr_loc = ""; - - if (currentLocation.size() > 0) - { - for (int pi = 0; pi < currentLocation.size()-1; pi++) - { - curr_loc = curr_loc + currentLocation[pi]; - curr_loc = curr_loc + "/"; - } - curr_loc = curr_loc + currentLocation[currentLocation.size()-1]; - } - - LOGINFO_1(INFO,"CSBuilder: Dropping into an element of a change:%s", - (const char*)localname); - LOGINFO_1(INFO,"CSBuilder:currentLocation:%s", - (const char*)curr_loc); - - // First case - its a placeholder for an element in a list - // all we have to do is keep track of the list index. - - if (attributes.size() == 1) - { - SDOXMLString name = attributes[0].getName(); - if (name.equalsIgnoreCase("ref")) - { - currentState = dealingWithChangeElement; - currentChange.addElement( - changeElement(localname, curr_loc, - attributes[0].getValue(), true, false)); - - LOGEXIT(INFO,"CSBuilder:processStart Exit3"); - return; - } - } - - if (attributes.size() == 0) - { - // It could be a many-valued primitive, or - // a deletion with no attributes - // can we match the current path to a known deletion? - - bool isDelete = false; - - for (int i = 0; i < createDeletes.size(); i++) - { - if (createDeletes[i].type.equals("delete")) - { - if (curr_loc.equals(createDeletes[i].value)) - { - LOGINFO(INFO,"CSBuilder: An existing delete was found"); - - isDelete = true; - break; // out of the for loop - } - } - } - if (!isDelete) - { - LOGINFO(INFO,"CSBuilder: Change with no atts and not deletion- an element"); - - // and will get picked up by the 'characters' method. - currentState = dealingWithChangeElement; - currentLocalName = SDOXMLString(localname); - - LOGEXIT(INFO,"CSBuilder:processStart Exit4"); - return; - } - } - - currentChange.addElement(changeElement(localname, curr_loc, false, true)); - currentDeletion = deletion(localname, curr_loc); - - LOGINFO_2(INFO,"CSBuilder: Found a deletion:%s:%s", - (const char*)localname, - (const char*)curr_loc); - - - // clear out the change state - if there was any. - deletionLevel = 0; - deletionIndex = 0; - previousDeletion = SDOXMLString(""); - - currentState = dealingWithDeletion; - - // Now add the attributes if there are any. - - for (int i=0; i < attributes.size(); i++) - { - // push all the attributes into the deletion record. - SDOXMLString name = attributes[i].getName(); - if (!name.equalsIgnoreCase("ref")) - { - SDOXMLString value = attributes[i].getValue(); - currentDeletion.addAttribute( - deletionAttribute(name,value)); - } - } - - LOGEXIT(INFO,"CSBuilder:processStart Exit5"); - return; - } - if (currentState == dealingWithDeletion) - { - // we are already in a deletion, and entering an element - if (!previousDeletion.equals(localname)) - { - deletionIndex = 0; - previousDeletion = localname; - } - else - { - deletionIndex++; - } - - sprintf(cbuf,"%d",deletionIndex); - currentLocation.push_back(localname + "." + cbuf); - - // First case - its a placeholder for an element in a list - // all we have to do is keep track of the list index. - - if (attributes.size() == 1) - { - SDOXMLString name = attributes[0].getName(); - if (name.equalsIgnoreCase("ref")) - { - LOGINFO(INFO,"CSBuilder: The element is a reference to an existing entry in a list"); - - currentState = dealingWithDeletionElement; - - LOGEXIT(INFO,"CSBuilder:processStart Exit6"); - return; - } - } - - SDOXMLString curr_loc = ""; - if (currentLocation.size() > 0) - { - for (int pi = 0; pi < currentLocation.size()-1; pi++) - { - curr_loc = curr_loc + currentLocation[pi]; - curr_loc = curr_loc + "/"; - } - curr_loc = curr_loc + currentLocation[currentLocation.size()-1]; - } - - if (attributes.size() == 0) - { - // It could be a many-valued primitive, or - // a deletion with no attributes - // can we match the current path to a known deletion? - bool isDelete = false; - - for (int i = 0; i < createDeletes.size(); i++) - { - if (createDeletes[i].type.equals("delete")) - { - if (curr_loc.equals(createDeletes[i].value)) - { - LOGINFO(INFO,"CSBuilder: An existing delete was found - its a delete"); - - isDelete = true; - break; // out of the for loop - } - } - } - if (!isDelete) - { - LOGINFO(INFO,"CSBuilder: Found a change with no atts, and no deletion matches - its an element"); - - // and will get picked up by the 'characters' method. - currentState = dealingWithDeletionElement; - - LOGEXIT(INFO,"CSBuilder:processStart Exit7"); - return; - } - } - - - // We are starting a new deletion record - - LOGINFO_2(INFO,"CSBuilder: Found a deletion within a deletion:%s:%s", - (const char*)localname, (const char*)curr_loc); - - deletionList.push_back(deletionListElement(currentDeletion,deletionIndex, - previousDeletion)); - - currentDeletion = deletion(localname, curr_loc); - - // we are in a nested delete - so record the level such that we can pop state - // from the deletionList on coming back out of this. - - deletionLevel++; - //deletionIndex = 0; - previousDeletion = SDOXMLString(""); - - currentState = dealingWithDeletion; - - // Now add the attributes if there are any. - - for (int i=0; i < attributes.size(); i++) - { - // push all the attributes into the deletion record. - SDOXMLString name = attributes[i].getName(); - if (!name.equalsIgnoreCase("ref")) - { - SDOXMLString value = attributes[i].getValue(); - currentDeletion.addAttribute( - deletionAttribute(name,value)); - } - } - - LOGEXIT(INFO,"CSBuilder:processStart Exit8"); - return; - - } - } - -// ======================================================================== -// Parser ends an element -// ======================================================================== - - void ChangeSummaryBuilder::processEnd( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI) - { - - LOGENTRY(INFO,"CSBuilder:processEnd"); - - if (currentState == dealingWithCreateDelete) - { - // its already been completed by the characters message - currentState = baseState; - LOGEXIT(INFO,"CSBuilder:processEnd Exit1"); - return; - } - else if (currentState == dealingWithChangeElement) - { - // its already been completed by the characters message - currentState = dealingWithChange; - currentLocation.pop_back(); - LOGEXIT(INFO,"CSBuilder:processEnd Exit2"); - return; - } - else if (currentState == dealingWithDeletionElement) - { - // its already been completed by the characters message - currentState = dealingWithDeletion; - currentLocation.pop_back(); - LOGEXIT(INFO,"CSBuilder:processEnd Exit3"); - return; - } - else if (currentState == dealingWithChange) - { - // we should have finished, there are no nested changes - currentState = baseState; - changes.insert(changes.end(),currentChange); - currentLocation.clear(); - LOGEXIT(INFO,"CSBuilder:processEnd Exit4"); - return; - } - else if (currentState == dealingWithDeletion) - { - currentLocation.pop_back(); - deletions.insert(deletions.end(),currentDeletion); - if (deletionLevel > 0) - { - deletionLevel--; - if (deletionList.size() > 0) - { - int index = deletionIndex; - SDOXMLString path = currentDeletion.reference; - SDOXMLString name = currentDeletion.name; - - deletionListElement dl = deletionList[deletionList.size()-1]; - currentDeletion = dl.del; - deletionIndex = dl.index; - previousDeletion = dl.previous; - deletionList.pop_back(); - // and insert the inside deletion in the outside one. - currentDeletion.insertElement(deletionElement( - name, path,index)); - } - - LOGEXIT(INFO,"CSBuilder:processEnd Exit5"); - return; - } - else - { - currentState = dealingWithChange; - - LOGEXIT(INFO,"CSBuilder:processEnd Exit6"); - return; - } - } - } - -// ======================================================================== -// Parse characters -// ======================================================================== - - - void ChangeSummaryBuilder::processChars( - const SDOXMLString& chars) - { - LOGENTRY(INFO,"CSBuilder:processChars"); - - if (currentState == dealingWithCreateDelete) - { - // this is text within a create/delete indicating the - // value of the item deleted/created. - if (createDeletes.size() > 0) - { - createDeletes[createDeletes.size()-1].value = chars; - LOGINFO_1(INFO,"CSBuilder:characters create/delete:%s", - (const char*)chars); - } - LOGEXIT(INFO,"CSBuilder:processChars Exit1"); - return; - } - else if (currentState == dealingWithChangeElement) - { - changeElement ce = changeElement(currentLocalName, previousChange, false, false); - ce.value = chars; - ce.index = changeIndex; - currentChange.addElement(ce); - - LOGINFO_1(INFO,"CSBuilder: Characters in a change element:%s", - (const char *)chars); - - LOGEXIT(INFO,"CSBuilder:processChars Exit2"); - return; - } - else if (currentState == dealingWithDeletionElement) - { - deletionElement ce = deletionElement(previousDeletion); - ce.value = chars; - ce.index = deletionIndex; - currentDeletion.addElement(ce); - - LOGINFO_1(INFO,"CSBuilder: Characters in a deletion element:%s", - (const char *)chars); - - LOGEXIT(INFO,"CSBuilder:processChars Exit3"); - return; - } - - LOGINFO_1(INFO,"CSBuilder: Characters in nothing!!:%s", - (const char *)chars); - LOGEXIT(INFO,"CSBuilder:processChars Exit4"); - } - - -// ======================================================================== -// Classes holding temporary parsed information -// ======================================================================== - - - ///////////////////////////////////////////////// - // An element in the list of creates/deletes - ///////////////////////////////////////////////// - - createDelete::createDelete() - { - } - - createDelete::createDelete(SDOXMLString intype) : - type(intype) - { - indexshift = 0; - } - - createDelete::~createDelete() - { - } - - ///////////////////////////////////////////////// - // An element in the list of changes - ///////////////////////////////////////////////// - - changeAttribute::changeAttribute() - { - } - - changeAttribute::changeAttribute(SDOXMLString inname, - SDOXMLString invalue): name(inname), value(invalue) - { - } - - changeAttribute::~changeAttribute() - { - } - - changeElement::changeElement() - { - } - - changeElement::changeElement(SDOXMLString inname, - SDOXMLString inpath, bool isRef, bool isDel) - : name(inname) , path(inpath) - { - isReference=isRef; - isDeletion= isDel; - } - - changeElement::changeElement(SDOXMLString inname, - SDOXMLString inpath, - SDOXMLString invalue, bool isRef, bool isDel) - : name(inname), value(invalue), path(inpath) - { - isReference=isRef; - isDeletion= isDel; - } - - changeElement::~changeElement() - { - } - - change::change() - { - } - - change::change(SDOXMLString inname, SDOXMLString ref): - name(inname), reference(ref) - { - } - - void change::addAttribute(changeAttribute ca) - { - attributes.insert(attributes.end(),ca); - } - - void change::addElement(changeElement ce) - { - elements.insert(elements.end(),ce); - } - - ///////////////////////////////////////////////// - // An element in the list of deletions - ///////////////////////////////////////////////// - - deletionAttribute::deletionAttribute() - { - } - - deletionAttribute::deletionAttribute(SDOXMLString inname, - SDOXMLString invalue): name(inname), value(invalue) - { - } - - deletionAttribute::~deletionAttribute() - { - } - - deletionElement::deletionElement() - { - } - - deletionElement::deletionElement(SDOXMLString inname) - : name(inname) - { - isDeletion = false; - } - - deletionElement::deletionElement(SDOXMLString inname, - SDOXMLString inpath, int inindex) - : name(inname), value(inpath), index(inindex) - { - isDeletion = true; - } - - deletionElement::~deletionElement() - { - } - - deletion::deletion() - { - } - - deletion::deletion(SDOXMLString inname, SDOXMLString ref): - name(inname), reference(ref) - { - completedprocessing=false; - } - - void deletion::addAttribute(deletionAttribute ca) - { - attributes.insert(attributes.end(),ca); - } - - void deletion::addElement(deletionElement ce) - { - elements.insert(elements.end(),ce); - } - - void deletion::insertElement(deletionElement ce) - { - elements.insert(elements.begin(),ce); - } - - deletionListElement::deletionListElement() - { - } - - deletionListElement::deletionListElement( - deletion in_del, - int in_index, - SDOXMLString in_prev): - del(in_del), index(in_index), previous(in_prev) - { - } - - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h deleted file mode 100644 index 903ef0f427..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h +++ /dev/null @@ -1,300 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _CHANGESUMMARYBUILDER_H_ -#define _CHANGESUMMARYBUILDER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SAX2Parser.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/SAX2Namespaces.h" -#include "commonj/sdo/PropertySetting.h" -#include "commonj/sdo/ChangeSummaryImpl.h" - - -#include <stack> - -namespace commonj -{ - namespace sdo - { - -/** - * createDelete is a class holding a creation or deletion in - * a change summary builder. - * When rebuilding a change summary from the serialized version - * creates and deletes are stored in these until they can be - * converted into a change summary. - */ - - - class createDelete - { - public: - createDelete(); - createDelete(SDOXMLString intype); - virtual ~createDelete(); - SDOXMLString type; - SDOXMLString value; - int indexshift; - }; - -/** - * changeAttribute is a class holding a changed attribute in a - * change summary builder. - * When rebuilding a change summary from the serialized version - * changes are stored in these until they can be - * converted into a change summary. - */ - - class changeAttribute - { - public: - changeAttribute(); - changeAttribute(SDOXMLString inname, - SDOXMLString invalue); - virtual ~changeAttribute(); - SDOXMLString name; - SDOXMLString value; - }; - -/** - * changeElement is a class holding a changed element in a change summary builder. - * When rebuilding a change summary from the serialized version - * changes are stored in these until they can be - * converted into a change summary. - */ - class changeElement - { - public: - changeElement(); - changeElement(SDOXMLString inname, - SDOXMLString inpath, bool isRef, bool isDel); - changeElement(SDOXMLString inname, - SDOXMLString inpath, - SDOXMLString invalue, bool isRef, bool isDel); - virtual ~changeElement(); - SDOXMLString name; - SDOXMLString value; - SDOXMLString path; - bool isReference; - bool isDeletion; - int index; - }; - -/** - * change is a class holding a change in a change summary builder. - * When rebuilding a change summary from the serialized version - * changes are stored in these until they can be - * converted into a change summary. - * Changes consist of changeAttributes and changeElements - */ - - - class change - { - public: - change(); - change(SDOXMLString inname, SDOXMLString ref); - void addAttribute(changeAttribute ca); - void addElement(changeElement ce); - std::list<changeAttribute> attributes; - std::list<changeElement> elements; - SDOXMLString name; - SDOXMLString reference; - }; - -/** - * deletionAttribute is a class holding a deletion attribute in a change summary builder. - * When rebuilding a change summary from the serialized version - * deletions are stored in these until they can be - * converted into a change summary. - * Changes consist of deletionAttributes and deletionElements - */ - class deletionAttribute - { - public: - deletionAttribute(); - deletionAttribute(SDOXMLString inname, - SDOXMLString invalue); - virtual ~deletionAttribute(); - SDOXMLString name; - SDOXMLString value; - }; - -/** - * deletionElement is a class holding a deletion element in a change summary builder. - * When rebuilding a change summary from the serialized version - * deletions are stored in these until they can be - * converted into a change summary. - * Changes consist of deletionAttributes and deletionElements - */ - class deletionElement - { - public: - deletionElement(); - deletionElement(SDOXMLString inname); - deletionElement(SDOXMLString inname, - SDOXMLString inpath, int inindex); - virtual ~deletionElement(); - SDOXMLString name; - SDOXMLString value; - bool isDeletion; - int index; - }; - - -/** - * deletions is a class holding a deletion in a change summary builder. - * When rebuilding a change summary from the serialized version - * deletions are stored in these until they can be - * converted into a change summary. - * Changes consist of deletionAttributes and deletionElements - */ - - class deletion - { - public: - deletion(); - deletion(SDOXMLString inname, SDOXMLString ref); - void addAttribute(deletionAttribute ca); - void addElement(deletionElement ce); - void insertElement(deletionElement ce); - SDOXMLString name; - SDOXMLString reference; - DataObjectPtr dob; /* the recreated one*/ - std::list<deletionAttribute> attributes; - std::list<deletionElement> elements; - bool completedprocessing; - }; - - /** deletionListElement is an item in a list of deletions in a change summary builder. - * - * All the deletions are stored whilst rebuilding a change - * summary, then applied. These list elements hold them. - */ - - class deletionListElement - { - public: - deletionListElement(); - deletionListElement(deletion in_del, int in_index, SDOXMLString in_prev); - SDOXMLString previous; - deletion del; - int index; - }; - -/** - * The ChangeSummaryBuilder recreates a change summary from the - * XML representations of the changes, creations and deletions. - * It does this by populating a list of changes as though they had - * been applied to the current data graph. - */ - - class ChangeSummaryBuilder - { - - - public: - - enum CsState - { - baseState, - dealingWithCreateDelete, - dealingWithChange, - dealingWithChangeElement, - dealingWithDeletion, - dealingWithDeletionElement - }; - - - ChangeSummaryBuilder( - DataFactoryPtr df, - DataObjectPtr& rootDO); - - virtual ~ChangeSummaryBuilder(); - - - virtual void processStart( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void processChars( - const SDOXMLString& chars); - - virtual void processEnd( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI); - - virtual void buildChangeSummary( - DataObjectPtr changeSummaryDO); - - virtual void populateDeletion(ChangeSummaryImpl* csi, DataObjectPtr dob, - int index); - - virtual void handleDeletion( - ChangeSummaryImpl* csi, - int currentIndex, - DataObjectPtr cont, - SDOXMLString path, - SDOXMLString prop); - - virtual void handleDeletion(ChangeSummaryImpl* csi, - int index, - SDOXMLString path); - - void shiftIndices(int index, int delta); - - SDOXMLString shiftedIndex(int index); - - - private: - DataFactoryPtr dataFactory; - DataObjectPtr& rootDataObject; - - CsState currentState; - - std::vector<deletionListElement> deletionList; - std::vector<SDOXMLString> currentLocation; - std::vector<createDelete> createDeletes; - - std::vector<change> changes; - change currentChange; - SDOXMLString previousChange; - SDOXMLString currentLocalName; - int changeIndex; - - std::vector<deletion> deletions; - deletion currentDeletion; - SDOXMLString previousDeletion; - int deletionIndex; - int deletionLevel; - - - }; - } // End - namespace sdo -} // End - namespace commonj - -#endif //_CHANGESUMMARYBUILDER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryImpl.cpp deleted file mode 100644 index 6fefb289d9..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryImpl.cpp +++ /dev/null @@ -1,1589 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/17 16:01:05 $ */ - -#include "commonj/sdo/ChangeSummaryImpl.h" - -#include "commonj/sdo/DataObjectImpl.h" - -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/TypeList.h" -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/DataObjectList.h" -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/Logging.h" - - -namespace commonj{ -namespace sdo{ - - - // Initializes an empty change summary, so we know one is required - ChangeSummaryImpl::ChangeSummaryImpl() - { - logging = false; - } - - ChangeSummaryImpl::~ChangeSummaryImpl() - { - //Force logging off or bad things will happen! - logging = false; - - /** - * These remove the logitems, so cause the - * refcounts of the data objects to drop, and - * delete the settings lists. - */ - deletedMap.clear(); - createdMap.clear(); - changedMap.clear(); - changedDataObjects.clear(); - } - - SequencePtr ChangeSummaryImpl::getOldSequence(DataObjectPtr dob) - { - DELETELOG_MAP::iterator deleteLogIter; - - DataObject* ob = dob; - deleteLogIter = deletedMap.find((DataObjectImpl*)ob); - - if (deleteLogIter != deletedMap.end()) - { - return (deleteLogIter->second).getSequence(); - } - - CHANGELOG_MAP::iterator changeLogIter; - - changeLogIter = changedMap.find((DataObjectImpl*)ob); - - if (changeLogIter != changedMap.end()) - { - return (changeLogIter->second).getSequence(); - } - return NULL; - - } - - void ChangeSummaryImpl::removeFromChanges(DataObjectImpl* ob) - { - int i = changedDataObjects.size(); - - /** - * this is used to remove only the most recent change. - * A deletion has occurred, and there was a creation, so - * we remove the creation. There cannot be a change after the - * creation, so the last entry in changes is the creation. - * there could be a previous deletion of the same object, so - * we should not clear the whole list. - */ - while (i > 0) - { - i--; - - - if (changedDataObjects.get(i) == ob) - { - changedDataObjects.remove(i); - return; - } - } - } - - DataObjectPtr ChangeSummaryImpl::matchDeletedObject(SDOXMLString path) - { - DELETELOG_MAP::iterator deleteLogIter; - - for (deleteLogIter = deletedMap.begin(); - deleteLogIter != deletedMap.end(); ++deleteLogIter) - { - if ( - path.equals( - SDOXMLString((deleteLogIter->second).getOldXpath()) - ) - ) - { - return deleteLogIter->first; - } - } - return DataObjectPtr(0); - } - - - - void ChangeSummaryImpl::logDeletion(DataObjectImpl* ob, - DataObjectImpl* container, const Property& prop, - const char* oldpath, bool loggingChildren) - { - LOGINFO_1(INFO,"ChangeSummary:LogDelete:%s", - ob->getType().getName()); - - /** - * The object is about to be deleted, so we need - * all its property Settings recorded in the list - * of changed data objects. We also need to know - * its old container, container property, and - * value. - */ - - // find any properties which are data objects, log their - // deletion first. - - int i; - - // Trace for change summaries - - LOGINFO_2(INFO,"ChangeSummary logs a deletion of property %s type %s", - prop.getName(), prop.getType().getName()); - - - CREATELOG_MAP::iterator createLogIter; - CHANGELOG_MAP::iterator changeLogIter; - - createLogIter = createdMap.find(ob); - if (createLogIter != createdMap.end()) - { - // would need to remove it from the created list. - LOGINFO(INFO,"ChangeSummary: The deletion was already created - just removing it"); - - removeFromChanges(ob); - createdMap.erase(ob); - // find the container in the change map. - - changeLogIter = changedMap.find(container); - if (changeLogIter != changedMap.end()) - { - // would hope there was an entry - int index; - if (prop.isMany()) - { - DataObjectList& dl = container->getList(prop); - for (index=0;index<dl.size();index++) - { - if (dl[index] == ob) - { - break; - } - } - } - else - { - index = 0; - } - - SettingList& slist = (changeLogIter->second).getSettings(); - - for (int j=0 ; j < slist.size();j++) - { - if (!strcmp(slist.get(j)->getProperty().getName(), - prop.getName()) - - - && slist.get(j)->getIndex() == - index) - { - // these are settings of the same prop/index, we - // need to remove this entry - slist.remove(j); - // and if this was the only change, then we - // need to remoe the container from the changes - if (slist.size() == 0) - { - changedMap.erase(container); - removeFromChanges(container); - } - break; // must not continue - size is now wrong - } - } - } - return; - } - - DELETELOG_MAP::iterator deleteLogIter; - - deleteLogIter = deletedMap.find(ob); - - if (deleteLogIter != deletedMap.end()) - { - LOGINFO(INFO,"ChangeSummary - delete an already deleted object"); - return; - } - - PropertyList pl = ob->getInstanceProperties(); - DataObject* dob; - - if (loggingChildren) - { - for (i=0; i < pl.size(); i++) - { - if (pl[i].getType().isDataObjectType()) - { - if (pl[i].isMany()) { - DataObjectList& dl = ob->getList(pl[i]); - for (int j = dl.size() - 1; j>=0; j--) - { - dob = dl[j]; - if (dob)logDeletion((DataObjectImpl*)dob,ob,pl[i], - dob->objectToXPath(), true); - } - } - else { - dob = ob->getDataObject(pl[i]); - if (dob)logDeletion((DataObjectImpl*)(dob),ob,pl[i], - dob->objectToXPath(), true); - } - } - } - } - - - // build a Setting list for the set properties - - deletedMap.insert(std::make_pair(ob,deleteLogItem( - (DataObject*)ob, prop,ob->getSequence(), - oldpath, - container))); - deleteLogIter = deletedMap.find(ob); - SettingList& sl = (deleteLogIter->second).getSettings(); - - void* value; - unsigned int len; - - for (i=0; i < pl.size(); i++) - { - //if (!pl[i].getType().isDataType()) continue; - - if (!ob->isSet(pl[i])) - { - sl.append(new Setting(false,false, 0,0,pl[i],0)); - continue; - } - if (pl[i].isMany()) - { - - DataObjectList& dol = ob->getList(pl[i]); - for (int j=dol.size()-1;j >= 0; j--) - { - // needs to be the data object in cases where... - if (pl[i].getType().isDataType()) { - setPropValue(&value,&len,ob,pl[j]); - sl.append(new Setting(true,false,value,len,pl[i],j)); - } - else { - value = (void*)dol[j]; - sl.append(new Setting(true,false,value,0,pl[i],j)); - } - } - } - else - { - setPropValue(&value,&len,ob,pl[i]); - sl.append(new Setting(true,ob->isNull(pl[i]),value,len,pl[i],0)); - } - - } - - - changeLogIter = changedMap.find(ob); - if (changeLogIter != changedMap.end()) - { - // we have already changed this object, so we need the old values - // from the change, and to remove the changed map entry - LOGINFO(INFO,"ChangeSummary found a deleted item in then changes"); - - (deleteLogIter->second).setSequence((changeLogIter->second).getSequence()); - - SettingList& slist = (changeLogIter->second).getSettings(); - - for (int j=0 ; j < slist.size();j++) - { - for (int i=0;i<sl.size();i++) - { - if (!strcmp(slist.get(j)->getProperty().getName(), - sl.get(i)->getProperty().getName()) - - - && slist.get(j)->getIndex() == - sl.get(i)->getIndex()) - { - // these are settings of the same prop/index, we - // need the old value to get transferred. - sl.remove(i); - sl.insert(i,new Setting(*(slist.get(j)))); - - } - } - } - LOGINFO(INFO, "ChangeSummary: Erasing from changes"); - changedMap.erase(ob); - } - // We append deleted objects to the changed list - this list gives - // those data objects which have been affected - we then look at their - // current and old property values to find out whether they have been - // deleted or created. - else - { - changedDataObjects.append(ob, ChangedDataObjectList::Delete); - } - - LOGINFO(INFO,"ChangeSummary: Deletion being added to the list"); - - return; - } - - void ChangeSummaryImpl::logCreation(DataObjectImpl* ob, - DataObjectImpl* container, const Property& prop) - { - - LOGINFO_1(INFO,"ChangeSummary:LogCreate of type:%s",ob->getType().getName()); - - // These we just need to record the fact that they - // are present. We dont have an original value to - // store. - // log a change to the container of this object - // - - DELETELOG_MAP::iterator deleteLogIter; - - deleteLogIter = deletedMap.find(ob); - if (deleteLogIter != deletedMap.end()) - { - // can happen - a delete is really a removal from the tree. - // Adding back an object which you held a pointer to is just - // a re-creation. - LOGINFO(INFO,"ChangeSummary: Adding in a pre-deleted object"); - } - - // we should check if this object has sub-objects, they will - // need to be created too - - PropertyList pl = ob->getInstanceProperties(); - for (int p=0;p<pl.size();p++) - { - Property& thisprop = pl[p]; - if (!thisprop.getType().isDataType()) - { - if (ob->isSet(thisprop)) - { - DataObject* dp; - - if (thisprop.isMany()) - { - DataObjectList& dol = ob->getList(thisprop); - for (int ds = 0; ds < dol.size(); ds++) - { - dp = dol[ds]; - if (!dp) continue; - logCreation((DataObjectImpl*)dp,ob,thisprop); - } - } - else - { - dp = ob->getDataObject(thisprop); - if (dp) - { - logCreation((DataObjectImpl*)dp,ob,thisprop); - } - } - } - } - } - - CREATELOG_MAP::iterator createLogIter; - - createLogIter = createdMap.find(ob); - if (createLogIter != createdMap.end()) - { - // this could be a reference - we dont add it twice. - LOGINFO(INFO,"ChangeSummary: No need to log creation twice"); - return; - } - - // We append created objects to the changed list - this list gives - // those data objects which have been affected - we then look at their - // current and old property values to find out whether they have been - // deleted or created. - changedDataObjects.append(ob, ChangedDataObjectList::Create); - - createdMap.insert(std::make_pair(ob,createLogItem(ob->getType(),prop,container))); - return; - } - - - void ChangeSummaryImpl::setPropValue(void** value, unsigned int* len, DataObjectImpl* ob, const Property& prop) - { - - *len = 0; - switch (prop.getTypeEnum()) - { - case Type::BooleanType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = 0; - } - else - { - *(long*)*value = (long)ob->getBoolean(prop); - } - break; - case Type::ByteType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = 0; - } - else - { - *(long*)*value = (long)ob->getByte(prop); - } - break; - case Type::CharacterType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = 0; - } - else - { - *(long*)*value = (long)ob->getCharacter(prop); - } - break; - case Type::IntegerType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = 0; - } - else - { - *(long*)*value = (long)ob->getInteger(prop); - } - break; - case Type::ShortType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = 0; - } - else - { - *(long*)*value = (long)ob->getShort(prop); - } - break; - case Type::DoubleType: - *value = new long double; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long double*)value = (long double)0; - } - else - { - *(long double*)*value = (long double)ob->getDouble(prop); - } - break; - case Type::FloatType: - *value = new float; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(float*)value = (float)0; - } - else - { - *(float*)*value = (float)ob->getFloat(prop); - } - break; - case Type::LongType: - *value = new int64_t; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(int64_t*)value = (int64_t)0; - } - else - { - *(int64_t*)*value = (int64_t)ob->getLong(prop); - } - break; - case Type::DateType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = (long)0; - } - else - { - *(long*)*value = (long)(ob->getDate(prop).getTime()); - } - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *value = 0; - *len = 0; - } - else - { - unsigned int siz = ob->getLength(prop); - if (siz > 0) { - *value = new wchar_t[siz]; - *len = ob->getString(prop,(wchar_t*)*value, siz); - } - else { - *value = 0; - *len = 0; - } - } - break; - case Type::BytesType: - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *value = 0; - *len = 0; - } - else - { - unsigned int siz = ob->getLength(prop); - if (siz > 0) { - *value = new char[siz]; - *len = ob->getBytes(prop,(char*)*value, siz); - } - else { - *value = 0; - *len = 0; - } - } - break; - case Type::OtherTypes: - case Type::DataObjectType: - case Type::ChangeSummaryType: - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *value = 0; - } - else - { - *value = (void*)ob->getDataObject(prop); - } - break; - default: - SDO_THROW_EXCEPTION("(ChangeSummary)setPropValue" , - SDOUnsupportedOperationException, "Type is not recognised and cannot be saved"); - break; - } - } - - void ChangeSummaryImpl::setManyPropValue(void** value, unsigned int *len, DataObjectImpl* ob, - DataObjectImpl* listob, const Property& prop) - { - - *len = 0; - switch (prop.getTypeEnum()) - { - case Type::BooleanType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = (long)0; - } - else - { - *(long*)*value = (long)listob->getBoolean(); - } - break; - case Type::ByteType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = (long)0; - } - else - { - *(long*)*value = (long)listob->getByte(); - } - break; - case Type::CharacterType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = (long)0; - } - else - { - *(long*)*value = (long)listob->getCharacter(); - } - break; - case Type::IntegerType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = (long)0; - } - else - { - *(long*)*value = (long)listob->getInteger(); - } - break; - case Type::ShortType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = (long)0; - } - else - { - *(long*)*value = (long)listob->getShort(); - } - break; - case Type::DoubleType: - *value = new long double; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long double*)value = (long double)0; - } - else - { - *(long double*)*value = (long double)listob->getDouble(); - } - break; - case Type::FloatType: - *value = new float; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(float*)value = (float)0; - } - else - { - *(float*)*value = (float)listob->getFloat(); - } - break; - case Type::LongType: - *value = new int64_t; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(int64_t*)value = (int64_t)0; - } - else - { - *(int64_t*)*value = (int64_t)listob->getLong(); - } - break; - case Type::DateType: - *value = new long; - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *(long*)value = (long)0; - } - else - { - *(long*)*value = (long)(listob->getDate().getTime()); - } - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *value = 0; - *len = 0; - } - else - { - unsigned int siz = listob->getLength(prop); - if (siz > 0) - { - *value = new wchar_t[siz]; - *len = listob->getString((wchar_t*)*value, siz); - } - } - break; - case Type::BytesType: - if (!ob->isSet(prop) && !prop.isDefaulted()) - { - *value = 0; - *len = 0; - } - else - { - unsigned int siz = listob->getLength(prop); - if (siz > 0) - { - *value = new char[siz]; - *len = listob->getBytes((char*)*value, siz); - } - } - break; - - case Type::OtherTypes: - case Type::DataObjectType: - case Type::ChangeSummaryType: - SDO_THROW_EXCEPTION("(ChangeSummary)setManyPropValue" , - SDOUnsupportedOperationException, "A many prop data object value is being set"); - //*value = (void*)ob; - break; - default: - SDO_THROW_EXCEPTION("(ChangeSummary)setManyPropValue" , - SDOUnsupportedOperationException, "Type is not recognised and cannot be saved"); - break; - } - } - - void ChangeSummaryImpl::logChange(DataObjectImpl* ob, - const Property& prop) - { - // need to record the old value, unless the object - // is in the created list, in which case we store - // nothing. - - LOGINFO_1(INFO,"ChangeSummary:LogChange %s",prop.getName()); - - CREATELOG_MAP::iterator createLogIter; - - unsigned int len; - - createLogIter = createdMap.find(ob); - if (createLogIter != createdMap.end()) - { - LOGINFO(INFO,"ChangeSummary: no need to log change"); - return; - } - - DELETELOG_MAP::iterator deleteLogIter; - - deleteLogIter = deletedMap.find(ob); - if (deleteLogIter != deletedMap.end()) - { - LOGINFO(INFO,"ChangeSummary: no need to log change - already deleted"); - return; - } - - CHANGELOG_MAP::iterator changeLogIter; - - changeLogIter = changedMap.find(ob); - if (changeLogIter == changedMap.end()) - { - LOGINFO(INFO,"ChangeSummary: A change to an object which was not previously changed"); - changedMap.insert(std::make_pair(ob, changeLogItem(ob->getType(),prop, - ob->getSequence(), ob))); - changedDataObjects.append(ob, ChangedDataObjectList::Change); - } - else - { - LOGINFO(INFO,"ChangeSummary: A change to an object which has already been changed"); - } - - changeLogIter = changedMap.find(ob); - if (changeLogIter == changedMap.end()) - { - LOGINFO(INFO,"ChangeSummary: Problem - no changes to append to"); - return; - } - - SettingList& slist = (changeLogIter->second).getSettings(); - - void* value; - - for (int i=0;i<slist.size();i++) - { - if (!strcmp(slist.get(i)->getProperty().getName(),prop.getName())) - { - LOGINFO(INFO,"ChangeSummary: Change of a property which was already changed - ignore"); - return; - } - } - - // need to check if the property has already been set, - // There could be many Settings if the item was a list, - // but we dont care here about that. - - if (!ob->isSet(prop)) - { - slist.append(new Setting(false,false,0,0,prop,0)); - return; - } - - if (prop.isMany()) - { - // We are appending, not modifying - // we need to store the list as it was. - - LOGINFO(INFO,"ChangeSummary: logging a change to a many valued property"); - - DataObjectList& dol = ob->getList(prop); - if (dol.size() == 0) - { - slist.append(new Setting(false,false,0,0,prop,0)); - return; - } - for (int i=0;i< dol.size(); i++) - { - DataObject* dob = dol[i]; - if (prop.getType().isDataType()) { - setManyPropValue(&value, &len, (DataObjectImpl*)ob, - (DataObjectImpl*)dob, prop); - slist.append(new Setting(true,false,value,len,prop,i)); - } - else{ - value = (void*)dob; - slist.append(new Setting(true,false,value,0,prop,i)); - } - } - } - else - { - setPropValue(&value,&len,ob,prop); - slist.append(new Setting(true,ob->isNull(prop),value,len,prop,0)); - } - - return; - } - - - - void ChangeSummaryImpl::undoChanges() - { - // TODO - /* Plan for undoChanges: - - There are three lists of information. - The created list is a list of data objects which were created during logging. - These data objects will have current state, and will represent the value of a - property of their containing object. As they had no state before they were - created, the undoChanges needs to unSet the property values for these first. - - The deleted list contains a list of objects which were deleted. The objects - themselves are not valid, but can be used to obtain a list of settings - representing the values of the properties at the time the object was - deleted. Here are recursive create is needed to re-create an object - similar to the deleted one, and set its properties using the settings. - The deleted object may well contain other deleted objects as its - property values, so these too will have entries in the deleted list, and - need to be found and re-created. - - The changed list holds a list of settings for properties of data objects - which have been changed. These objects may also be in the deleted list, so# - may not be valid. They will not be in the created list. First check that - the object is not in the deleted list. If it is, then the changes need to - be applied to the data object which we created when undoing the deleted list, - otherwise we just apply the change to a data object which exists. - */ - - /* what about items in many-valued properties? I guess we need to check and - search the values returned for the list to find the object to delete*/ - LOGINFO(INFO,"ChangeSummary UndoChanges not implemented"); - return; - } - - - void ChangeSummaryImpl::beginLogging() - { - - // Clear down the lists and their contents, if there was already - // some activity. - - if (logging) endLogging(); - changedMap.clear(); - deletedMap.clear(); - createdMap.clear(); - changedDataObjects.clear(); - - LOGINFO(INFO,"ChangeSummary: logging switched on"); - - logging = true; - return; - } - - void ChangeSummaryImpl::endLogging() - { - logging = false; - - LOGINFO(INFO,"ChangeSummary: logging switched off"); - - return; - } - - bool ChangeSummaryImpl::isLogging() - { - return logging; - } - -/////////////////////////////////////////////////////////////////////////////////////// - void ChangeSummaryImpl::debugPrint(){} -// { -// ChangedDataObjectList& dol = getChangedDataObjects(); -// -// CREATELOG_MAP::iterator createLogIter; -// DELETELOG_MAP::iterator deleteLogIter; -// CHANGELOG_MAP::iterator changeLogIter; -// -// for (int i=0;i<dol.size(); i++) -// { -// DataObject* dob = dol[i]; -// createLogIter = createdMap.find((DataObjectImpl*)dob); -// if (createLogIter != createdMap.end()) -// { -// cout << "Found a created object " << dol[i] << endl; -// return; -// } -// deleteLogIter = deletedMap.find((DataObjectImpl*)dob); -// if (deleteLogIter != deletedMap.end()) -// { -// cout << "Found a deleted object " << dol[i] << endl; -// return; -// } -// changeLogIter = changedMap.find((DataObjectImpl*)dob); -// if (changeLogIter != changedMap.end()) -// { -// cout << "Found a modified object " << dol[i] << endl; -// SettingList& sl = getOldValues(dob); -// for (int j=0; j < sl.size(); j++) -// { -// cout << "Old Value of " << sl[j].getProperty().getName(); -// if (sl[j].getProperty().isMany()) -// { -// cout << "[" << sl[j].getIndex() << "]" ; -// } -// cout << endl; -// switch (sl[j].getProperty().getTypeEnum()) -// { -// case Type::BooleanType: -// cout << "Boolean:" << sl[j].getBooleanValue(); -// break; -// case Type::ByteType: -// cout << "Byte:" << sl[j].getByteValue(); -// break; -// case Type::CharacterType: -// cout << "Character:" << sl[j].getCharacterValue(); -// break; -// case Type::IntegerType: -// cout << "Integer:" << sl[j].getIntegerValue(); -// break; -// case Type::ShortType: -// cout << "Short:" << sl[j].getShortValue(); -// break; -// case Type::DoubleType: -// cout << "Double:" << sl[j].getDoubleValue(); -// break; -// case Type::FloatType: -// cout << "Float:" << sl[j].getFloatValue(); -// break; -// case Type::LongType: -// cout << "Int64: (cant print)"; // << (*sl)[j]->getLongValue(); -// break; -// case Type::DateType: -// cout << "Date:" << sl[j].getDateValue().getTime(); -// break; -// case Type::BigDecimalType: -// case Type::BigIntegerType: -// case Type::StringType: -// case Type::UriType: -// { -// unsigned int len = sl[j].getLength(); -// if (len > 0) { -// wchar_t* buf = new wchar_t[len]; -// len = sl[j].getStringValue(buf,len); -// cout <<"String type" ; -// for (int i=0;i<len;i++) -// { -// cout << ":" << buf[i]; -// } -// delete buf; -// } -// break; -// } -// case Type::BytesType: -// { -// unsigned int len = sl[j].getLength(); -// if (len > 0) { -// char* buf = new char[len]; -// len = sl[j].getBytesValue(buf,len); -// cout <<"Bytes type" ; -// for (int i=0;i<len;i++) -// { -// cout << buf[i]; -// } -// delete buf; -// } -// break; -// } -// case Type::OtherTypes: -// case Type::DataObjectType: -// case Type::ChangeSummaryType: -// cout << "DataObject:" << sl[j].getDataObjectValue(); -// break; -// default: -// cout << "Unspecified type found in setting"; -// break; -// } -// cout << endl; -// } -// return; -// } -// cout << "Found an object which was not in the changes " << dol[i] << endl; -// -// } -// } -/////////////////////////////////////////////////////////////////////////////////////// - - ChangedDataObjectList& ChangeSummaryImpl::getChangedDataObjects() - { - // build a list of all the changes, in the same order - // as the actions occured, - - return changedDataObjects; - - } - - bool ChangeSummaryImpl::isCreated(DataObjectPtr dol) - { - CREATELOG_MAP::iterator createLogIter; - DataObject* dob = dol; - createLogIter = createdMap.find((DataObjectImpl*)dob); - - if (createLogIter != createdMap.end()) - return true; - return false; - } - - bool ChangeSummaryImpl::isDeleted(DataObjectPtr dol) - { - DELETELOG_MAP::iterator deleteLogIter; - DataObject* dob = dol; - deleteLogIter = deletedMap.find((DataObjectImpl*)dob); - - if (deleteLogIter != deletedMap.end()) - return true; - return false; - } - - bool ChangeSummaryImpl::isModified(DataObjectPtr dol) - { - CHANGELOG_MAP::iterator changeLogIter; - DataObject* dob = dol; - changeLogIter = changedMap.find((DataObjectImpl*)dob); - - if (changeLogIter != changedMap.end()) - return true; - return false; - } - - - - SettingList& ChangeSummaryImpl::getOldValues(DataObjectPtr dol) - { - CHANGELOG_MAP::iterator changeLogIter; - DELETELOG_MAP::iterator deleteLogIter; - DataObject* dob = dol; - // start with the deleted map... - deleteLogIter = deletedMap.find((DataObjectImpl*)dob); - if (deleteLogIter != deletedMap.end()){ - return ((deleteLogIter->second).getSettings()); - } - changeLogIter = changedMap.find((DataObjectImpl*)dob); - if (changeLogIter != changedMap.end()){ - return ((changeLogIter->second).getSettings()); - } - SDO_THROW_EXCEPTION("(ChangeSummary(getOldValues" , - SDOIndexOutOfRangeException, "Data object is not in the change summary"); - } - - - - const char* ChangeSummaryImpl::getOldXpath(RefCountingPointer<commonj::sdo::DataObject> dol) - { - DELETELOG_MAP::iterator deleteLogIter; - DataObject* dob = dol; - deleteLogIter = deletedMap.find((DataObjectImpl*)dob); - if (deleteLogIter != deletedMap.end()){ - return ((deleteLogIter->second).getOldXpath()); - } - return 0; - } - - - const Setting& ChangeSummaryImpl::getOldValue(DataObjectPtr dol, const Property& property) - { - DELETELOG_MAP::iterator deleteLogIter; - CHANGELOG_MAP::iterator changeLogIter; - DataObject* dob = dol; - - deleteLogIter = deletedMap.find((DataObjectImpl*)dob); - if (deleteLogIter != deletedMap.end()) - { - SettingList& sl = (deleteLogIter->second).getSettings(); - for (int i=0;i < sl.size(); i++) - { - if (!strcmp(property.getName(), - sl.get(i)->getProperty().getName())) - return (*sl.get(i)); - } - } - - changeLogIter = changedMap.find((DataObjectImpl*)dob); - if (changeLogIter != changedMap.end()) - { - SettingList& sl = (changeLogIter->second).getSettings(); - for (int i=0;i < sl.size(); i++) - { - if (!strcmp(property.getName(), - sl.get(i)->getProperty().getName())) - return (*sl.get(i)); - } - } - - SDO_THROW_EXCEPTION("(ChangeSummary(getOldValue)" , - SDOIndexOutOfRangeException, "Data object is not in the change summary"); - } - - DataObjectPtr ChangeSummaryImpl::getOldContainer(DataObjectPtr dol) - { - CHANGELOG_MAP::iterator changeLogIter; - DataObject* dob = dol; - changeLogIter = changedMap.find((DataObjectImpl*)dob); - - if (changeLogIter != changedMap.end()) - { - return (changeLogIter->second).getOldContainer(); - } - return 0; - } - - const Property& ChangeSummaryImpl::getOldContainmentProperty(DataObjectPtr dol) - { - CHANGELOG_MAP::iterator changeLogIter; - DataObject* dob = dol; - changeLogIter = changedMap.find((DataObjectImpl*)dob); - - if (changeLogIter == changedMap.end()) - { - SDO_THROW_EXCEPTION("(ChangeSummary(getOldContainmentProperty)" , - SDOIndexOutOfRangeException, "Data object is not in the change summary"); - } - return (changeLogIter->second).getOldContainmentProperty(); - } - - - // - // Creations and deletions can be just logged in the normal - // way. Changes have to be handled specially, because we - // need the old value, but the data object now contains the - // current value. - // - - void ChangeSummaryImpl::appendToCreations(const Property& p, - DataObjectPtr dob, DataObjectPtr cont) - { - LOGINFO(INFO,"ChangeSummary: Appending to creations list"); - DataObject* pdob = (DataObject*)dob; - DataObject* pcont = (DataObject*)cont; - logCreation((DataObjectImpl*)pdob,(DataObjectImpl*)pcont,p); - return; - } - - - void ChangeSummaryImpl::appendToDeletions(const Property& p, - DataObjectPtr dob, DataObjectPtr cont, const char* oldpath ) - { - DELETELOG_MAP::iterator deleteLogIter; - - LOGINFO_1(INFO,"ChangeSummary:Appending to deletions list %s",oldpath); - - DataObject* pdob = (DataObject*)dob; - DataObject* pcont = (DataObject*)cont; - logDeletion((DataObjectImpl*)pdob,(DataObjectImpl*)pcont,p, - oldpath, false); - return; - } - - - unsigned int ChangeSummaryImpl::stringConvert(char** value, const char* c, const Property& p) - { - // code duplicated from typeimpl - switch (p.getTypeEnum()) - { - case Type::BooleanType: - *value = new char[sizeof(long)]; - if ((c == 0) || strcmp(c,"true")) - { - *(long*)*value = 0; - } - else - { - *(long*)*value = 1; - } - return sizeof(long); - - case Type::ByteType: - case Type::CharacterType: - case Type::IntegerType: - case Type::ShortType: - *value = new char[sizeof(long)]; - *(long*)*value = atoi(c); - return sizeof(long); - - case Type::DoubleType: - *value = new char[sizeof(long double)]; - // TODO - atof not suitable here - *(long double*)*value = (long double)atof(c); - return sizeof(long double); - - case Type::FloatType: - *value = new char[sizeof(float)]; - *(float*)*value = (float)atof(c); - return sizeof(float); - - case Type::LongType: - *value = new char[sizeof(int64_t)]; -#if defined(WIN32) || defined (_WINDOWS) - *(int64_t*)*value = (int64_t)_atoi64(c); -#else - *(int64_t*)*value = (int64_t)strtoll(c, NULL, 0); -#endif - return sizeof(int64_t); - - case Type::DateType: - *value = new char[sizeof(time_t)]; - *(time_t*)*value = (time_t)atoi(c); - return sizeof(time_t); - - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - { - char* vw = new char[(strlen(c)+1)*sizeof(wchar_t)]; - wchar_t* pvw = (wchar_t*)vw; - for (int i=0;i< strlen(c);i++) - { - pvw[i] = (wchar_t)c[i]; - } - pvw[strlen(c)] = 0; - *value = vw; - return strlen(c); - } - break; - case Type::BytesType: - { - char* vc = new char[strlen(c)+1]; - for (int i=0;i< strlen(c);i++) - { - vc[i] = (char)c[i]; - } - vc[strlen(c)] = 0; - *value = vc; - return strlen(c); - } - break; - - case Type::OtherTypes: - case Type::DataObjectType: - case Type::ChangeSummaryType: - default: - { - std::string msg("Cannot set CString on object of type:"); - msg += p.getType().getName(); - SDO_THROW_EXCEPTION("setString" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - return 0; - } - - void ChangeSummaryImpl::appendToChanges(const Property& p, - DataObjectPtr dob , SDOXMLString value, int index) - { - CHANGELOG_MAP::iterator changeLogIter; - - LOGINFO(INFO,"ChangeSummary Appending to changes list"); - - DataObject* pdob = (DataObject*)dob; - - - changeLogIter = changedMap.find((DataObjectImpl*)pdob); - if (changeLogIter == changedMap.end()) - { - - LOGINFO(INFO,"ChangeSummary: A change to an object which was not previously changed"); - - changedMap.insert(std::make_pair((DataObjectImpl*)pdob, - changeLogItem(dob->getType(),p, - dob->getSequence(), (DataObjectImpl*)pdob))); - changedDataObjects.append((DataObjectImpl*)pdob, - ChangedDataObjectList::Change); - } - - changeLogIter = changedMap.find((DataObjectImpl*)pdob); - if (changeLogIter == changedMap.end()) - { - - LOGINFO(INFO,"ChangeSummary: no changes to append to"); - - return; - } - - SettingList& slist = (changeLogIter->second).getSettings(); - - // simply need to insert a setting - no requirement to validate - // against existing settings - - char* datavalue = 0; - - unsigned int len = stringConvert(&datavalue, (const char*)value , p); - - slist.append(new Setting(true,false,datavalue,len,p,index)); - - // The datavalue will be freed by the deletion of the setting later - } - - - void ChangeSummaryImpl::appendToChanges(const Property& p, - DataObjectPtr dob , DataObjectPtr indob, int index) - { - CHANGELOG_MAP::iterator changeLogIter; - - LOGINFO(INFO,"ChangeSummary Appending to changes list (2)"); - - DataObject* pdob = (DataObject*)dob; - - changeLogIter = changedMap.find((DataObjectImpl*)pdob); - if (changeLogIter == changedMap.end()) - { - LOGINFO(INFO,"ChangeSummary: A change to an object which was not previously changed"); - - changedMap.insert(std::make_pair((DataObjectImpl*)pdob, - changeLogItem(dob->getType(),p, - dob->getSequence(), (DataObjectImpl*)pdob))); - changedDataObjects.append((DataObjectImpl*)pdob, - ChangedDataObjectList::Change); - } - - changeLogIter = changedMap.find((DataObjectImpl*)pdob); - if (changeLogIter == changedMap.end()) - { - LOGINFO(INFO,"ChangeSummary: Problem - no changes to append to"); - - return; - } - - SettingList& slist = (changeLogIter->second).getSettings(); - - // simply need to insert a setting - no requirement to validate - // against existing settings - - - slist.append(new Setting(true,false,(void*)indob,0,p,index)); - - } - - - - - ///////////////////////////////////////////////////////////// - // log items are for all lists, but contain different things - // depending on whether they are deletions, additions... - ///////////////////////////////////////////////////////////// - - createLogItem::createLogItem(const Type& tp, const Property& prop, - DataObjectImpl* cont) : - theOldContainmentProperty(prop), theOldContainer(cont), - theType(tp) - { - } - - DataObjectImpl* createLogItem::getOldContainer() - { - return theOldContainer; - } - - const Type& createLogItem::getOldType() - { - return theType; - } - - const Property& createLogItem::getOldContainmentProperty() - { - return theOldContainmentProperty; - } - - - - changeLogItem::changeLogItem(const Type& tp, - const Property& prop, - SequencePtr seq, - DataObjectImpl* cont) : - theOldContainmentProperty(prop), theOldContainer(cont), - theType(tp) - { - if (seq) - { - theSequence = new SequenceImpl((SequenceImpl*)seq); - } - else - { - theSequence = 0; - } - } - - changeLogItem::changeLogItem(const changeLogItem& cin) : - theOldContainmentProperty(cin.theOldContainmentProperty), - theType(cin.theType) - { - if (cin.theSequence) theSequence = new SequenceImpl((SequenceImpl*)cin.theSequence); - else theSequence = 0; - theOldContainer = cin.theOldContainer; - theSettings = cin.theSettings; - - } - - changeLogItem::~changeLogItem() - { - if (theSequence) delete theSequence; - } - - DataObjectImpl* changeLogItem::getOldContainer() - { - return theOldContainer; - } - - const Type& changeLogItem::getOldType() - { - return theType; - } - - const Property& changeLogItem::getOldContainmentProperty() - { - return theOldContainmentProperty; - } - - SettingList& changeLogItem::getSettings() - { - return theSettings; - } - - SequencePtr changeLogItem::getSequence() - { - return theSequence; - } - - - deleteLogItem::deleteLogItem(DataObject* dob, - const Property& prop, SequencePtr seq , - const char* oldpath, DataObjectImpl* cont - ) : - theOldContainmentProperty(prop), theOldContainer(cont), - theActualObject(dob), - theType(dob->getType()) - { - if (seq) - { - theSequence = new SequenceImpl((SequenceImpl*)seq); - } - else - { - theSequence = 0; - } - if (oldpath !=0 && strlen(oldpath) != 0) - { - theOldXpath = new char[strlen(oldpath)+1]; - strcpy(theOldXpath,oldpath); - } - else - { - theOldXpath = 0; - } - } - - const char* deleteLogItem::getOldXpath() - { - return theOldXpath; - } - - DataObjectImpl* deleteLogItem::getOldContainer() - { - return theOldContainer; - } - - deleteLogItem::deleteLogItem(const deleteLogItem& cin): - theOldContainmentProperty(cin.theOldContainmentProperty), - theType(cin.theType), theActualObject(cin.theActualObject) - { - if (cin.theSequence) theSequence = new SequenceImpl((SequenceImpl*)cin.theSequence); - else theSequence = 0; - theOldContainer = cin.theOldContainer; - theSettings = cin.theSettings; - if (cin.theOldXpath != 0) - { - theOldXpath = new char[strlen(cin.theOldXpath) + 1]; - strcpy(theOldXpath, cin.theOldXpath); - } - else - { - theOldXpath = 0; - } - } - - deleteLogItem::~deleteLogItem() - { - theActualObject = 0; - if (theSequence) delete theSequence; - if (theOldXpath != 0) - { - delete theOldXpath; - } - } - - const Type& deleteLogItem::getOldType() - { - return theType; - } - - const Property& deleteLogItem::getOldContainmentProperty() - { - return theOldContainmentProperty; - } - - SettingList& deleteLogItem::getSettings() - { - return theSettings; - } - - SequencePtr deleteLogItem::getSequence() - { - return theSequence; - } - - void deleteLogItem::setSequence(SequencePtr s) - { - if (theSequence) delete theSequence; - if (s) { - theSequence = new SequenceImpl((SequenceImpl*)s); - } - else { - theSequence = 0; - } - return; - } - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryImpl.h deleted file mode 100644 index 38ca468484..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangeSummaryImpl.h +++ /dev/null @@ -1,403 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _CHANGESUMMARYIMPL_H_ -#define _CHANGESUMMARYIMPL_H_ - -#include "commonj/sdo/disable_warn.h" - - -#include "commonj/sdo/ChangedDataObjectListImpl.h" -#include "commonj/sdo/SettingList.h" -#include "commonj/sdo/ChangeSummary.h" -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/SDOXMLString.h" - -#include <map> - -namespace commonj{ -namespace sdo { - - - /** - * ChangeLogItem is a part of a change summary. - * The change summary consisists of change items, - * deletion items and creation items. They are held in three - * lists as they have slightly different contents. - * The change log items hold old values for all the changes to - * properties of the data object concerned. - */ - - class changeLogItem { - - public: - - changeLogItem(const Type& tp, const Property& prop,SequencePtr seq, - DataObjectImpl* cont = 0 ); - changeLogItem(const changeLogItem& cin); - ~changeLogItem(); - DataObjectImpl* getOldContainer(); - const Property& getOldContainmentProperty(); - const Type& getOldType(); - SettingList& getSettings(); - SequencePtr getSequence(); - - private: - - const Property& theOldContainmentProperty; - DataObjectImpl* theOldContainer; - const Type& theType; - SettingList theSettings; - SequencePtr theSequence; - }; - - /** - * CreateLogItem is a part of a change summary. - * The change summary consisists of change items, - * deletion items and creation items. They are held in three - * lists as they have slightly different contents. - * The create log items hold the data object itself, - * and details of its container. - */ - - - class createLogItem { - - public: - - createLogItem(const Type& tp, const Property& prop, DataObjectImpl* cont = 0); - - - DataObjectImpl* getOldContainer(); - const Property& getOldContainmentProperty(); - const Type& getOldType(); - - private: - - const Property& theOldContainmentProperty; - DataObjectImpl* theOldContainer; - const Type& theType; - }; - - /** - * DeleteLogItem is a part of a change summary. - * The change summary consisists of change items, - * deletion items and creation items. They are held in three - * lists as they have slightly different contents. - * The delete log items hold the old data object , and - * details of the properties as they were before deletion - */ - - class deleteLogItem { - - public: - - - deleteLogItem(DataObject* dob, const Property& prop, - SequencePtr seq,const char *oldpath, - DataObjectImpl* cont = 0); - - - deleteLogItem(const deleteLogItem& cin); - ~deleteLogItem(); - DataObjectImpl* getOldContainer(); - const Property& getOldContainmentProperty(); - const Type& getOldType(); - const char* getOldXpath(); - SettingList& getSettings(); - SequencePtr getSequence(); - void setSequence(SequencePtr s); - - private: - - const Property& theOldContainmentProperty; - DataObjectImpl* theOldContainer; - - /** theActualObject - * A counting pointer to the object is held, such that the - * object is not freed, even if deleted. This rcp will not - * be used to refer to the object, but makes sure that the - * object does not reuse a memory address of a previously - * deleted object until the change summary is destroyed. - */ - - RefCountingPointer<DataObject> theActualObject; - const Type& theType; - SettingList theSettings; - SequencePtr theSequence; - char * theOldXpath; - }; - - - /** ChangeSummaryImpl implements the abstract class ChangeSummary. - * The change summary consisists of change items, - * deletion items and creation items. They are held in three - * lists as they have slightly different contents. - */ - - class ChangeSummaryImpl : public ChangeSummary - { - public: - ChangeSummaryImpl(); - - virtual ~ChangeSummaryImpl(); - - /** - * The new and modified objects in the list are references to objects that - * are associated with this change summary. - * The deleted objects in the list are references to copies of the objects - * as they appeared at the time that event logging was enabled; - * if the deleted objects have references to other objects, - * the references will also refer to copies of the target objects. - * Return a list of changed data objects. - */ - - virtual ChangedDataObjectList& getChangedDataObjects(); - - - /** getOldSettings returns a list of settings. - * Returns a list of Settings - * that represent the property values of the given dataObject - * at the point when logging began. - * In the case of a deleted object, - * the list will include Settings for all the properties. - * An old value Setting indicates the value at the - * point logging begins. A setting is only produced for - * modified objects if either the old value differs from the current value or - * if the isSet differs from the current value. - * No Settings are produced for created objects. - * Param dataObject the object in question. - * Return a list of settings. - */ - virtual SettingList& getOldValues(DataObjectPtr dataObject); - - /** getOldXpath returns the old path before the setting. - * - * Returns a path where the object was located before the setting took place. - */ - virtual const char* getOldXpath(RefCountingPointer<commonj::sdo::DataObject> dol); - - - /** beginLogging() sets the change summary in logging mode. - * - * The change summary is initially inactive. Setting it to logging mode - * starts the process of recording all the settings made. - */ - - virtual void beginLogging(); - - /** endLogging() stops logging. - * - * This method stops logging, but does not clear out the change summary. - * The changes are valid until the summary is next set to logging, at which time - * all old settings are lost. - */ - virtual void endLogging(); - - - - /** isLogging() returns true if logging is enabled. - * - * Indicates whether change logging is on (true) or off (false). - */ - - virtual bool isLogging(); - - - - /** isCreated() returns true if the object was created during logging. - * - * Returns whether or not the specified data object was created while logging. - * Any object that was added to the data graph - * but was not in the data graph when logging began, - * will be considered created. - * Param dataObject the data object in question. - * Return true if the specified data object was created. - */ - virtual bool isCreated(DataObjectPtr dataObject); - - /** isDeleted() - true if the object was deleted during logging. - * - * Returns whether or not the specified data object was deleted while logging. - * Any object that is not contained by the data graph will be considered - * deleted. - * Param dataObject the data object in question. - * Return true if the specified data object was deleted. - */ - virtual bool isDeleted(DataObjectPtr dataObject); - - - /** isModified() - true if the object was changed during logging. - * - * Returns whether or not the specified data object was updated while logging. - * An object that was contained in the data graph when logging began, - * and remains in the graph when logging ends will be considered for changes. - * An object considered modified must have at least one old value Setting. - * Param dataObject the data object in question. - * Return true if the specified data object was modified. - */ - virtual bool isModified(DataObjectPtr dataObject); - - /** getOldValue() gets the setting showing the old value. - * - * Returns a setting for the specified property - * representing the property value of the given dataObject - * at the point when logging began. - * Returns null if the property has not changed and - * has not been deleted. - * Param dataObject the object in question. - * Param property the property of the object. - * Return the Setting for the specified property. - */ - - virtual const Setting& getOldValue(DataObjectPtr dataObject, const Property& property); - - /** getOldContainer() gets the container before the setting. - * - * Returns the value of the container data object - * at the point when logging began. - * Param dataObject the object in question. - * Return the old container data object. - */ - virtual DataObjectPtr getOldContainer(DataObjectPtr dataObject); - - /** getOldContainmentProperty() - gives the property before setting. - * - * Returns the value of the containment property data object property - * at the point when logging began. - * Param dataObject the object in question. - * Return the old containment property. - */ - virtual const Property& getOldContainmentProperty(DataObjectPtr dataObject); - - /** undoChanges() - Not Implemented. - * - * NOT IMPLEMENTED - * - * Undoes all changes in the log to restore the tree of - * DataObjects to its original state when logging began. - * isLogging() is unchanged. The log is cleared. - */ - virtual void undoChanges(); - - /** getOldSequence() - Not Implemented. - * - * NOT IMPLEMENTED - * - * This method gives back the sequence of a data object as it - * appeared when logging was switched on. The data object may be - * a deleted data object or a changed data object. If the - * data object was not sequenced, this returns null. - */ - - virtual SDO_API SequencePtr getOldSequence(DataObjectPtr dataObject); - - bool isInCreatedMap(DataObjectImpl* ob); - - void logDeletion(DataObjectImpl* ob, - DataObjectImpl* cont, const Property& prop, - const char* oldpath, - bool loggingChildren = true - ); - - void logCreation(DataObjectImpl* ob, - DataObjectImpl* cont, const Property& prop - ); - - void logChange(DataObjectImpl* ob, const Property& prop - ); - - - SDO_API void debugPrint(); - - void removeFromChanges(DataObjectImpl* ob); - - - /** - * appendToCreations is used by deserialization - * This method helps to rebuild a change summary by populating the - * lists without the changes actually being logged. - */ - - void appendToCreations(const Property& p, - DataObjectPtr dob, - DataObjectPtr cont); - - - /** - * appendToDeletions is used by deserialization - * This method helps to rebuild a change summary by populating the - * lists without the changes actually being logged. - */ - void appendToDeletions(const Property& p, - DataObjectPtr dob, - DataObjectPtr cont, - const char* oldpath); - - - unsigned int stringConvert( - char** value, - const char* c, - const Property& p); - - /** - * appendToChangesis used by deserialization - * This method helps to rebuild a change summary by populating the - * lists without the changes actually being logged. - */ - - void appendToChanges(const Property& p, - DataObjectPtr dob, - SDOXMLString value, - int index); - - void appendToChanges(const Property& p, - DataObjectPtr dob, - DataObjectPtr pdob, - int index); - - DataObjectPtr matchDeletedObject(SDOXMLString path); - - - private: - - - void setPropValue(void** value, unsigned int *len, DataObjectImpl* ob, const Property& prop); - void setManyPropValue(void** value, unsigned int *len, DataObjectImpl* ob, - DataObjectImpl* listob, const Property& prop); - bool logging; - - typedef std::map<DataObjectImpl*, createLogItem> CREATELOG_MAP; - typedef std::map<DataObjectImpl*, deleteLogItem> DELETELOG_MAP; - typedef std::map<DataObjectImpl*, changeLogItem> CHANGELOG_MAP; - - CHANGELOG_MAP changedMap; - CREATELOG_MAP createdMap; - DELETELOG_MAP deletedMap; - - ChangedDataObjectListImpl changedDataObjects; - - - - - -}; -}; -}; -#endif //_CHANGESUMMARYIMPL_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectList.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectList.h deleted file mode 100644 index e28973041f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectList.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _CHANGEDDATAOBJECTLIST_H_ -#define _CHANGEDDATAOBJECTLIST_H_ - - -#include "commonj/sdo/RefCountingPointer.h" - -#include <vector> - -/** - * namespace commonj is the root namespace for SDO - */ - -namespace commonj{ - -/** - * sdo is the namespace holding the SDO core - */ - -namespace sdo{ - -class DataObject; - -/** - * - * A list for holding a record of changes which have happened - * during logging in a change summary. - */ - -class ChangedDataObjectList -{ - -public: - -/** \enum ChangeType - * - * An enum for create, change or delete types in a change record - */ - enum ChangeType - { - Undefined, - Create, - Change, - Delete - }; - -/** [] is the index operator. - * - * Gets the nth element of a list - */ - virtual SDO_API DataObjectPtr operator[] (int pos) = 0; - virtual SDO_API const DataObjectPtr operator[] (int pos) const = 0; - -/** size() returns the number of list elements. - * - * Returns the number of list elements - */ - - virtual SDO_API int size () const = 0; - -/** getType() returns the type of a list element. - * - * The type of change is one of the enum ChangeType, being a - * creation, a deletion or an update. - */ - - virtual SDO_API ChangeType getType(unsigned int index) = 0; - -}; -}; -}; -#endif - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectListImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectListImpl.cpp deleted file mode 100644 index 7462376f01..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectListImpl.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - - -#include "commonj/sdo/ChangedDataObjectListImpl.h" - - -#include <iostream> -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/Logger.h" -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/DataObjectImpl.h" - - -namespace commonj{ -namespace sdo { - - /** CDOListElement - * - * constructor - */ - - CDOListElement::CDOListElement() - { - theObject = 0; - theType = ChangedDataObjectList::Undefined; - } - - /** CDOListElement - * - * constructor from a data object and a change - */ - - CDOListElement::CDOListElement(DataObject* in, ChangedDataObjectList::ChangeType type) - { - theObject = in; - theType = type; - } - - /** ~CDOListElement() - * - * destructor - */ - - CDOListElement::~CDOListElement() - { - } - - /** getObject() - * - * return the changed data object - */ - - DataObject* CDOListElement::getObject() const - { - return theObject; - } - - /** - * - * return the type of change getType() - */ - - ChangedDataObjectList::ChangeType CDOListElement::getType() const - { - return theType; - } - - /** ChangedDataObjectListImpl - * - * constructor - */ - - ChangedDataObjectListImpl::ChangedDataObjectListImpl(CHANGEDDATAOBJECT_VECTOR p) : plist (p) - { - } - - /** ChangedDataObjectListImpl - * - * copy constructor - */ - - ChangedDataObjectListImpl::ChangedDataObjectListImpl(const ChangedDataObjectListImpl &pin) - { - plist = std::vector< CDOListElement >(pin.getVec()); - } - - /** ChangedDataObjectListImpl - * - * default constructor - */ - - ChangedDataObjectListImpl::ChangedDataObjectListImpl() - { - } - - - /** ~ChangedDataObjectListImpl - * - * destructor - */ - - ChangedDataObjectListImpl::~ChangedDataObjectListImpl() - { - } - - /** [] index operator - * - * - */ - - RefCountingPointer<DataObject> ChangedDataObjectListImpl::operator[] (int pos) - { - validateIndex(pos); - return plist[pos].getObject(); - } - - /** [] index operator - * - * - */ - - const RefCountingPointer<DataObject> ChangedDataObjectListImpl::operator[] (int pos) const - { - validateIndex(pos); - return plist[pos].getObject(); - } - - /** get() gets an element at the index. - * - */ - - DataObject* ChangedDataObjectListImpl::get(unsigned int pos) - { - validateIndex(pos); - return plist[pos].getObject(); - } - - /** size() returns the length of the list. - * - * - */ - - int ChangedDataObjectListImpl::size () const - { - return plist.size(); - } - - /** getVec() - * gets the vector which actually stores the data objects. - */ - - CHANGEDDATAOBJECT_VECTOR ChangedDataObjectListImpl::getVec() const - { - return plist; - } - - /** getType() - * returns the type of the change. - */ - - ChangedDataObjectList::ChangeType ChangedDataObjectListImpl::getType(unsigned int pos) - { - validateIndex(pos); - return plist[pos].getType(); - } - - - /** insert() - * inserts an element into the list. - */ - - void ChangedDataObjectListImpl::insert (unsigned int index, - DataObject *d, ChangedDataObjectList::ChangeType type) - { - plist.insert(plist.begin()+index, CDOListElement((DataObject*)d,type)); - } - - /** append() - * appends to the end of the list. - */ - - void ChangedDataObjectListImpl::append (DataObject *d, ChangedDataObjectList::ChangeType type) - { - plist.insert(plist.end(),CDOListElement((DataObject*)d, type)); - } - - /** clear() - * empties the list. - */ - - void ChangedDataObjectListImpl::clear () - { - plist.clear(); - } - - - /** remove() - * removes an item from the list. - */ - - void ChangedDataObjectListImpl::remove(unsigned int index) - { - validateIndex(index); - plist.erase(plist.begin() +index); - return ; - } - - /** validateIndex() - * checks that the index is in range. - */ - - void ChangedDataObjectListImpl::validateIndex(int index) const - { - if ((index < 0) || (index >= size())) - { - std::string msg("Invalid index : "); - msg += index; - SDO_THROW_EXCEPTION("(ChangeSummary)validateIndex", SDOIndexOutOfRangeException, - msg.c_str()); - - } - - } - - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectListImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectListImpl.h deleted file mode 100644 index 9587a8402d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ChangedDataObjectListImpl.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _ChangedDataObjectListImplIMPL_H_ -#define _ChangedDataObjectListImplIMPL_H_ - -#include "commonj/sdo/disable_warn.h" - - -#include <vector> - -#include "commonj/sdo/ChangedDataObjectList.h" -namespace commonj{ -namespace sdo{ - -class DataObjectImpl; -class DataObject; - -/** - * CDOListElement is an element of the changed data object list - * in a change summary,it may be a delete, addition or change. - */ - -class CDOListElement -{ -public: - CDOListElement (); - CDOListElement (DataObject* in, ChangedDataObjectList::ChangeType type); - virtual ~CDOListElement(); - virtual ChangedDataObjectList::ChangeType getType() const; - virtual DataObject* getObject() const; -private: - DataObject* theObject; - ChangedDataObjectList::ChangeType theType; -}; - -typedef std::vector< CDOListElement > CHANGEDDATAOBJECT_VECTOR; - - -/** - * ChangedDataObjectListImpl implements ChangedDataObjectList, part of a - * change summary. - * This is the list of objects which have been altered during - * logging of a change summary. - */ - -class ChangedDataObjectListImpl : public ChangedDataObjectList -{ - -public: - ChangedDataObjectListImpl(CHANGEDDATAOBJECT_VECTOR p); - ChangedDataObjectListImpl(const ChangedDataObjectListImpl &pin); - ChangedDataObjectListImpl(); - - virtual ~ChangedDataObjectListImpl(); - virtual DataObjectPtr operator[] (int pos); - virtual const DataObjectPtr operator[] (int pos) const; - virtual DataObject* get(unsigned int pos); - virtual ChangedDataObjectList::ChangeType getType(unsigned int pos); - - - virtual int size () const; - - virtual void insert (unsigned int index, DataObject *d, ChangedDataObjectList::ChangeType type); - - virtual void append (DataObject* d, ChangedDataObjectList::ChangeType type); - - virtual void clear(); - - virtual void remove (unsigned int index); - - -private: - CHANGEDDATAOBJECT_VECTOR plist; - CHANGEDDATAOBJECT_VECTOR getVec() const; - - void validateIndex(int index) const; -}; -}; -}; -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp deleted file mode 100644 index 9581160044..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp +++ /dev/null @@ -1,264 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/07 08:25:11 $ */ - -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/TypeList.h" -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/DataObjectImpl.h" - - -#include "commonj/sdo/CopyHelper.h" - -namespace commonj{ -namespace sdo{ - - /** CopyHelper provides static copying helper functions. - * - * CopyHelper provides shallow and deep copy of data objects. - * copyShallow() copies the DataType members of the data object. - * copy() copies all the members and recurses downwards though - * the data graph - */ - - void CopyHelper::transferitem(DataObjectPtr to, DataObjectPtr from, const Property& p) - { - switch (p.getTypeEnum()) - { - case Type::BooleanType: - to->setBoolean( p, from->getBoolean(p)); - break; - case Type::ByteType: - to->setByte( p, from->getByte(p)); - break; - case Type::CharacterType: - to->setCharacter( p, from->getCharacter(p)); - break; - case Type::IntegerType: - to->setInteger( p, from->getInteger(p)); - break; - case Type::ShortType: - to->setShort( p,from->getShort(p)); - break; - case Type::DoubleType: - to->setDouble( p, from->getDouble(p)); - break; - case Type::FloatType: - to->setFloat( p, from->getFloat(p)); - break; - case Type::LongType: - to->setLong( p, from->getLong(p)); - break; - case Type::DateType: - to->setDate( p, from->getDate(p)); - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::UriType: - case Type::StringType: - { - unsigned int siz = from->getLength(p); - if (siz > 0) - { - wchar_t * buf = new wchar_t[siz]; - from->getString(p,buf, siz); - to->setString(p, buf, siz); - delete buf; - } - } - break; - case Type::BytesType: - { - unsigned int siz = from->getLength(p); - if (siz > 0) - { - char * buf = new char[siz]; - from->getBytes(p,buf, siz); - to->setBytes(p, buf, siz); - delete buf; - } - } - break; - default: - break; - } // switch - } - - void CopyHelper::transferlist(DataObjectList& to, DataObjectList& from, Type::Types t) - { - for (int i=0;i< from.size(); i++) - { - switch (t) - { - case Type::BooleanType: - to.append(from.getBoolean(i)); - break; - case Type::ByteType: - to.append(from.getByte(i)); - break; - case Type::CharacterType: - to.append(from.getCharacter(i)); - break; -#if __WORDSIZE ==64 - case Type::IntegerType: - to.append((int64_t)(from.getInteger(i))); - break; -#else - case Type::IntegerType: - to.append(from.getInteger(i)); - break; -#endif - case Type::ShortType: - to.append(from.getShort(i)); - break; - case Type::DoubleType: - to.append(from.getDouble(i)); - break; - case Type::FloatType: - to.append(from.getFloat(i)); - break; - case Type::LongType: - to.append(from.getLong(i)); - break; - case Type::DateType: - to.append(from.getDate(i)); - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::UriType: - case Type::StringType: - { - unsigned int siz = from.getLength(i); - if (siz > 0) - { - wchar_t * buf = new wchar_t[siz]; - from.getString(i,buf,siz); - to.append(buf,siz); - delete buf; - } - } - break; - - case Type::BytesType: - { - unsigned int siz = from.getLength(i); - if (siz > 0) - { - char * buf = new char[siz]; - from.getBytes(i,buf,siz); - to.append(buf,siz); - delete buf; - } - } - break; - - default: - break; - } // case - } // for - } // method - - /** CopyHelper provides static copying helper functions. - * - * copyShallow() copies the DataType members of the data object. - * copy() copies all the members and recurses downwards though - * the data graph - */ - DataObjectPtr CopyHelper::copyShallow(DataObjectPtr dataObject) - { - return internalCopy(dataObject, false); - - } - - /** CopyHelper provides static copying helper functions. - * - * copyShallow() copies the DataType members of the data object. - * copy() copies all the members and recurses downwards though - * the data graph - */ - DataObjectPtr CopyHelper::copy(DataObjectPtr dataObject) - { - return internalCopy(dataObject, true); - } - - DataObjectPtr CopyHelper::internalCopy(DataObjectPtr dataObject, - bool fullCopy) - { - - DataObject* theob = dataObject; - DataFactoryPtr fac = ((DataObjectImpl*)theob)->getDataFactory(); - if (!fac) return 0; - - const Type& t = dataObject->getType(); - DataObjectPtr newob = fac->create(t); - if (!newob) return 0; - - PropertyList pl = dataObject->getInstanceProperties(); - for (int i=0;i < pl.size(); i++) - { - if (dataObject->isSet(pl[i])) - { - // data objects are only copied in the deep copy case - if (pl[i].getType().isDataObjectType()) - { - if (!fullCopy) - { - continue; - } - else - { - if (pl[i].isMany()) - { - DataObjectList& dolold = dataObject->getList(pl[i]); - DataObjectList& dolnew = newob->getList(pl[i]); - for (int i=0;i< dolold.size(); i++) - { - dolnew.append(internalCopy(dolold[i],true)); - } - } - else - { - DataObjectPtr dob = dataObject->getDataObject(pl[i]); - newob->setDataObject(pl[i],internalCopy(dob,true)); - } - } - } - else - { - if (pl[i].isMany()) - { - DataObjectList& dolold = dataObject->getList(pl[i]); - DataObjectList& dolnew = newob->getList(pl[i]); - transferlist(dolnew,dolold, pl[i].getTypeEnum()); - } - else - { - transferitem(newob,dataObject, pl[i]); - } - } // else - } - } - return newob; - } - - -} -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/CopyHelper.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/CopyHelper.h deleted file mode 100644 index 954333a15b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/CopyHelper.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _COPYHELPER_H_ -#define _COPYHELPER_H_ - - -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/RefCountingPointer.h" - -namespace commonj{ -namespace sdo{ - - /** CopyHelper provides static copying helper functions. - * - * CopyHelper provides shallow and deep copy of data objects. - * copyShallow() copies the DataType members of the data object. - * copy() copies all the members and recurses downwards though - * the data graph - */ - -class CopyHelper -{ - public: - - /** CopyHelper provides static copying helper functions. - * - * CopyHelper provides shallow and deep copy of data objects. - * copyShallow() copies the DataType members of the data object. - * copy() copies all the members and recurses downwards though - * the data graph - */ - static SDO_API DataObjectPtr copyShallow(DataObjectPtr dataObject); - - /** CopyHelper provides static copying helper functions. - * - * CopyHelper provides shallow and deep copy of data objects. - * copyShallow() copies the DataType members of the data object. - * copy() copies all the members and recurses downwards though - * the data graph - */ - static SDO_API DataObjectPtr copy(DataObjectPtr dataObject); - - private: - static void transferlist(DataObjectList& to, DataObjectList& from, Type::Types t); - static void transferitem(DataObjectPtr to, DataObjectPtr from, const Property& p); - static DataObjectPtr internalCopy(DataObjectPtr dataObject, bool fullCopy); - -}; -}; -}; - -#endif //_COPYHELPER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp deleted file mode 100644 index ed4dc5f8ba..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/DASProperty.h" - - -namespace commonj{ -namespace sdo{ - - - DASProperty::~DASProperty() - { - } -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASProperty.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASProperty.h deleted file mode 100644 index 9cff3a7967..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASProperty.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _DASPROPERTY_H_ -#define _DASPROPERTY_H_ -#include "commonj/sdo/Property.h" -#include "commonj/sdo/DASValues.h" - -#include "commonj/sdo/disable_warn.h" - -namespace commonj{ -namespace sdo{ - -/** - * DASProperty is a class to provide data access services - * with a more flexible Property - */ - - class DASProperty : public Property, public DASValues -{ - public: - - virtual ~DASProperty(); - - - -}; -}; -}; -#endif //_DMSDATAOBJECT_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASType.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASType.cpp deleted file mode 100644 index d249f1a2f0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASType.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/DASType.h" - - -namespace commonj{ -namespace sdo{ - - - DASType::~DASType() - { - } -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASType.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASType.h deleted file mode 100644 index 56f0fa2571..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASType.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/03/01 08:52:41 $ */ - -#ifndef _DASTYPE_H_ -#define _DASTYPE_H_ - -#include "commonj/sdo/disable_warn.h" - - -#include "commonj/sdo/Type.h" -#include "commonj/sdo/DASValues.h" -namespace commonj{ -namespace sdo{ - -/** - * DASType is a class to provide data access services - * with a more flexible Type - */ - -class DASType : public Type, public DASValues -{ - public: - - virtual ~DASType(); - - - - virtual void setOpen(bool set) = 0; - virtual void setSequenced( bool set) = 0; - virtual void setBaseType( const Type* type, bool isRestriction=false) = 0; - - - -}; -}; -}; -#endif //_DASDATAOBJECT_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValue.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValue.cpp deleted file mode 100644 index 66f493b84e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValue.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/DASValue.h" - - -namespace commonj -{ - namespace sdo - { - - DASValue::DASValue() - { - } - - DASValue::DASValue(const char* val) - : value(val) - { - } - - DASValue::~DASValue() - { - - } - - const char* DASValue::getValue() const - { - return value.c_str(); - } - - - } -} -// end - namespace sdo - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValue.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValue.h deleted file mode 100644 index f15a24aae4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValue.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _SDO_DASValue_H_ -#define _SDO_DASValue_H_ - - -#include "commonj/sdo/export.h" -#include "string" - - -namespace commonj -{ - namespace sdo - { - -/** - * DASValue is a class to hold information required by data - * access services but not required by the data factory. - */ - class DASValue - { - public: - SDO_API DASValue(); - SDO_API DASValue(const char* value); - SDO_API virtual ~DASValue(); - SDO_API const char* getValue() const; - - private: - std::string value; - - }; - - } -} -#endif //_SDO_DASValue_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValues.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValues.cpp deleted file mode 100644 index aac9702cfd..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValues.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/DASValues.h" - -using namespace std; -namespace commonj -{ - namespace sdo - { - -/** - * DASValues is a class to hold list of information required by data - * access services but not required by the data factory. - */ - - DASValues::~DASValues() - { - DASValue_MAP::iterator propertyIter; - for (propertyIter = properties.begin() ; propertyIter != properties.end() ; ++propertyIter) - { - delete propertyIter->second; - } - } - - void DASValues::setDASValue(const char* name, DASValue* property) - { - DASValue* prop = getDASValue(name); - if (prop != 0 && prop != property) - { - delete prop; - } - properties[name] = property; - } - - DASValue* DASValues::getDASValue(const char* name) - { - DASValue_MAP::iterator propertyIter; - propertyIter = properties.find(name); - if(propertyIter != properties.end()) - { - return propertyIter->second; - } - return NULL; - - } - - } -} -// end - namespace sdo - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValues.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValues.h deleted file mode 100644 index 6c5ba835c3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DASValues.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _SDO_DASValues_H_ -#define _SDO_DASValues_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/export.h" -#include "commonj/sdo/DASValue.h" -#include "map" -#include "string" - - - -namespace commonj -{ - namespace sdo - { - -/** - * DASValues is a class to hold list of information required by data - * access services but not required by the data factory. - */ - - class DASValues - { - public: - SDO_API virtual ~DASValues(); - SDO_API virtual void setDASValue(const char* name, DASValue* value); - SDO_API virtual DASValue* getDASValue(const char* name); - private: - - typedef std::map<std::string, DASValue*> DASValue_MAP; - DASValue_MAP properties; - - }; - - } -} -#endif //_SDO_DASValues_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp deleted file mode 100644 index 026ed5c871..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - - -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/DataFactoryImpl.h" - -namespace commonj{ -namespace sdo{ - -/** - * DataFactory holds metadata and creates DataObjects. - * - * The DataFactory holds properties and types loaded from XSD, or - * created using the DataFactory API. - */ - - DataFactory::~DataFactory() - { - } - - RefCountingPointer<DataFactory> DataFactory::getDataFactory() - { - DataFactory* dob = (DataFactory*)(new DataFactoryImpl()); - return RefCountingPointer<DataFactory> (dob); - } - - RefCountingPointer<DataFactory> DataFactory::clone() - { - const DataFactoryImpl* df = (const DataFactoryImpl*)this; - DataFactory* dob = (DataFactory*)(new DataFactoryImpl(*df)); - return RefCountingPointer<DataFactory> (dob); - } - -}; -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactory.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactory.h deleted file mode 100644 index 7ee7b1b229..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactory.h +++ /dev/null @@ -1,806 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/07 13:35:33 $ */ - -#ifndef _DATAFACTORY_H_ -#define _DATAFACTORY_H_ - -#include "commonj/sdo/export.h" - -#include "commonj/sdo/TypeList.h" - -#include "commonj/sdo/RefCountingObject.h" -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/SDODate.h" -#include "commonj/sdo/DASValue.h" -#include "commonj/sdo/SDOString.h" - - -namespace commonj{ -namespace sdo{ - -class DataObject; -class Type; - -/** - * DataFactory holds metadata and creates DataObjects. - * - * The DataFactory holds properties and types loaded from XSD, or - * created using the DataFactory API. - */ - -class DataFactory : public RefCountingObject -{ - public: - - - /** - * getDataFactory is static and gets a data factory - * - * Static method to get a new data factory, with a set of base Types defined. - * With the data factory returned, either load Type definitions - * from XSD, or use the DataFactory APIs to define the types. - */ - - static SDO_API DataFactoryPtr getDataFactory(); - - virtual SDO_API ~DataFactory(); - - - /** - * DataFactory::clone copies a data factory - * - * Copy the data factory, and return a new data factory which - * has the same properties and types, but is still able to have - * new types added to it. - */ - - SDO_API virtual DataFactoryPtr clone(); - - /** - * DataFactory::create creates a data object. - * - * Create a data object based on the type specified as a parameter - * Once a data object has been created by this factory, the metadata - * (types and properties) may no longer be altered. - */ - - SDO_API virtual DataObjectPtr create(const char* uri, const char* typeName) = 0; - - SDO_API virtual DataObjectPtr create(const SDOString& uri, const SDOString& typeName) = 0; - - SDO_API virtual DataObjectPtr create(const Type& type) = 0; - - /** - * DataFactory::getType gets a type back from the factory. - * - * Get a type as specified in the data factory. Useful for creating - * data objects or querying properties. - */ - - virtual const Type& getType(const char* uri, const char* inTypeName) const = 0; - - virtual const Type& getType(const SDOString& uri, const SDOString& inTypeName) const = 0; - - - /** - * DataFactory::getTypes gets a list of types back from the factory. - * - * Get all the types available within this data factory. Useful for - * validating whether a data object is of the correct type to be - * usable. - */ - - virtual TypeList getTypes() const = 0; - - /** - * DataFactory::addType adds a type definition. - * - * Add a type defintion to the factory. (Properties may be added later). - * The type is defined by its uri and name. - * -# The type may be sequenced - and therefore work with a sequence API. - * -# The type may be open, indicating that it may have extra properties - * added at runtime. - * -# The type may be abstract, so the data factory will not permit creation - * of instances. - * -# The type may be a data type, indicating that is will not have properties. - * The Type may inherit from another type, but that is specified later with a - * call to setBaseType(). - */ - - - virtual SDO_API void addType(const char* uri, const char* inTypeName, - bool isSequenced = false, - bool isOpen = false, - bool isAbstract = false, - bool isDataType = false) = 0; - - virtual SDO_API void addType(const SDOString& uri, const SDOString& inTypeName, - bool isSequenced = false, - bool isOpen = false, - bool isAbstract = false, - bool isDataType = false) = 0; - - - /** - * DataFactory::setBaseType allows inheritance - * - * The type specified second in the parameters becomes the basetype - * of the first parameter. - * The second type will have all the properties of its baser type, followed - * by any additional properties of its own. The property indices of the properties - * of the subclass will begin at one more than the total number of - * properties of the supertype - * This relationship is fixed when the first data object of any type is - * created by the factory. Up to that point the base type may be changed. - * - */ - - virtual SDO_API void setBaseType( - const Type& type, - const Type& base, - bool isRestriction = false) = 0; - - virtual SDO_API void setBaseType( - const char* typeuri, - const char* typenam, - const char* baseuri, - const char* basename, - bool isRestriction = false) = 0; - - virtual SDO_API void setBaseType( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& baseuri, - const SDOString& basename, - bool isRestriction = false) = 0; - - - /** - * Generate a typesafe interface for a given data factory - * test code. - */ - - virtual SDO_API bool generateInterface(const char* fileroot, - const char *factoryname) = 0; - - virtual SDO_API bool generateInterface(const SDOString& fileroot, - const SDOString& factoryname) = 0; - - - - /** - * DataFactory::setAlias sets an alternative name - * - * A Type may be known to the data factory by several different names. - * This method adds a new name for an existing property. - * - */ - - virtual SDO_API void setAlias(const char* typeuri, - const char* typenam, - const char* alias) = 0; - - virtual SDO_API void setAlias(const SDOString& typeuri, - const SDOString& typenam, - const SDOString& alias) = 0; - - /** - * DataFactory::addPropertyToType adds properties - * - * The various addPropertyToType methods add a property to an - * existing type in the factory, specifying the name of the new property, - * and the type of the new property - which must also be an existing type - * in this factory. - * -# The new property may be many-valued - so it will be a list of values. - * -# The property may be read-only , and may not be altered by user code - - * However the value may be changed by data access service code. - * -# The property may be containment. - * The type of a property may be DataType, or DataObjectType (see Types). - * If the property is a DataType, then the actual value of the property is held - * within the data object containing the property. - * If the property is a DataObjectType, it may be containment, or reference. - * Containment indicates that the value of the property is contained in the - * data object, whilst reference indicates that the property is only a pointer to - * a value somewhere else in the data graph. - * - */ - - - virtual SDO_API void addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool isMany, - bool isReadOnly , - bool isContainment ) = 0; - - virtual SDO_API void addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool isMany , - bool isReadOnly , - bool isContainment ) = 0; - - virtual SDO_API void addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const Type& propType, - bool isMany , - bool isReadOnly , - bool isContainment ) = 0; - - virtual SDO_API void addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const Type& propType, - bool isMany , - bool isReadOnly , - bool isContainment ) = 0; - - virtual SDO_API void addPropertyToType(const Type& type, - const char* propname, - const Type& propType, - bool isMany , - bool isReadOnly , - bool isContainment ) = 0; - - virtual SDO_API void addPropertyToType(const Type& type, - const SDOString& propname, - const Type& propType, - bool isMany , - bool isReadOnly , - bool isContainment ) = 0; - - virtual SDO_API void addPropertyToType(const Type& type, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool isMany , - bool isReadOnly , - bool isContainment ) = 0; - - virtual SDO_API void addPropertyToType(const Type& type, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool isMany , - bool isReadOnly , - bool isContainment ) = 0; - - virtual SDO_API void addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool isMany = false) =0; - - virtual SDO_API void addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool isMany = false) =0; - - virtual SDO_API void addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const Type& propType, - bool isMany = false) =0; - - virtual SDO_API void addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const Type& propType, - bool isMany = false) =0; - - virtual SDO_API void addPropertyToType(const Type& type, - const char* propname, - const Type& propType, - bool isMany = false) =0; - - virtual SDO_API void addPropertyToType(const Type& type, - const SDOString& propname, - const Type& propType, - bool isMany = false) =0; - - virtual SDO_API void addPropertyToType(const Type& type, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool isMany = false) =0; - - virtual SDO_API void addPropertyToType(const Type& type, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool isMany = false) =0; - - /** - * DataFactory::setOpposite sets an opposite name - * - * NOT IMPLEMENTED. - * - */ - - virtual SDO_API void setOpposite( - const Type& type, - const char* propName, - const Type& oppositetype, - const char* oppositePropName) = 0; - - virtual SDO_API void setOpposite( - const Type& type, - const SDOString& propName, - const Type& oppositetype, - const SDOString& oppositePropName) = 0; - - /** - * DataFactory::setAlias sets a property alias name - * - * A property, like a type, may be known to the factory by several - * names. - */ - - virtual SDO_API void setAlias(const char* typeuri, - const char* typname, - const char* propname, - const char* alias) = 0; - - virtual SDO_API void setAlias(const SDOString& typeuri, - const SDOString& typname, - const SDOString& propname, - const SDOString& alias) = 0; - - /** - * DataFactory::setPropertySubstitute sets a substitute for a property - * - * A property is of a specified type. However this method specifies another type - * which will be accepted by the data factory at runtime as a substitute for this - * property, and will be inserted into the parent data object as though it was - * a value for this property. The substitute name is then used for this property - * as a sort of alias. - * names. - */ - - virtual SDO_API void setPropertySubstitute( - const char* uri, - const char* inTypeName, - const char* propname, - const char* subname, - const char* subTypeUri, - const char* subTypeName) = 0; - - virtual SDO_API void setPropertySubstitute( - const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& subname, - const SDOString& subTypeUri, - const SDOString& subTypeName) = 0; - - virtual SDO_API void setPropertySubstitute( - const Type& containertype, - const char* propname, - const char* subname, - const Type& subtype) = 0; - - virtual SDO_API void setPropertySubstitute( - const Type& containertype, - const SDOString& propname, - const SDOString& subname, - const Type& subtype) = 0; - - - /** - * DataFactory::setDefault sets a default value for a property - * - * When querying the value of a property of a data object, that property - * may be set - indicating that a value has been assigned, or unset - indicating that - * no value has yet been assigned. - * If there is no value assigned, then a default value may be returned for that - * property. - * This method allows the data factory to define that default value. - * There is no default value for a DataObjectType. There are overloads for - * each of the primitive DataTypes. - */ - - virtual SDO_API void setDefault( - const Type& t, - const char* propname, - bool b ) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname, - bool b ) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - char c) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - char c) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - wchar_t c) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - wchar_t c) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - char* c) = 0; - -// #pragma message( "GMW: Unimplemented method, writable string parameter" ) -// virtual SDO_API void setDefault( -// const Type& t, -// const SDOString& propname , -// SDOString& c) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - short s) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - short s) = 0; - - -#if __WORDSIZE !=64 - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - long l) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - long l) = 0; -#endif - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - int64_t i) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - int64_t i) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - float f) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - float f) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - long double d) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - long double d) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - const wchar_t* c, - unsigned int len) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - const wchar_t* c, - unsigned int len) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - const char* c, - unsigned int len) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - const SDOString& c, - unsigned int len) = 0; - - - virtual SDO_API void setDefault( - const Type& t, - const char* propname , - const SDODate dat) = 0; - - virtual SDO_API void setDefault( - const Type& t, - const SDOString& propname , - const SDODate dat) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname, - bool b ) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname, - bool b ) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - char c) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - char c) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - wchar_t c) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - wchar_t c) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - char* c) = 0; - -// #pragma message( "GMW: Unimplemented method, writable string parameter" ) -// virtual SDO_API void setDefault( -// const SDOString& typuri, -// const SDOString& typnam, -// const SDOString& propname , -// SDOString& c) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - short s) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - short s) = 0; - - -#if __WORDSIZE !=64 - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - long l) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - long l) = 0; - -#endif - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - int64_t i) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - int64_t i) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - float f) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - float f) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - long double d) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - long double d) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - const wchar_t* c, - unsigned int len) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - const wchar_t* c, - unsigned int len) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - const char* c, - unsigned int len) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - const SDOString& c, - unsigned int len) = 0; - - virtual SDO_API void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - const SDODate dat) = 0; - - virtual SDO_API void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - const SDODate dat) = 0; - - - /** - * DAS values are used by a DAS implementation - */ - - virtual SDO_API void setDASValue( - const Type& type, - const char* name, - DASValue* value) = 0; - - virtual SDO_API void setDASValue( - const Type& type, - const SDOString& name, - DASValue* value) = 0; - - virtual SDO_API void setDASValue( - const char* typeuri, - const char* typenam, - const char* name, - DASValue* value) = 0; - - virtual SDO_API void setDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& name, - DASValue* value) = 0; - - virtual SDO_API DASValue* getDASValue( - const Type& type, - const char* name) const = 0; - - virtual SDO_API DASValue* getDASValue( - const Type& type, - const SDOString& name) const = 0; - - virtual SDO_API DASValue* getDASValue( - const char* typeuri, - const char* typenam, - const char* name) const = 0; - - virtual SDO_API DASValue* getDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& name) const = 0; - - virtual SDO_API void setDASValue( - const Type& type, - const char* propertyName, - const char* name, - DASValue* value) = 0; - - virtual SDO_API void setDASValue( - const Type& type, - const SDOString& propertyName, - const SDOString& name, - DASValue* value) = 0; - - virtual SDO_API void setDASValue( - const char* typeuri, - const char* typenam, - const char* propertyName, - const char* name, - DASValue* value) = 0; - - virtual SDO_API void setDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& propertyName, - const SDOString& name, - DASValue* value) = 0; - - virtual SDO_API DASValue* getDASValue( - const Type& type, - const char* propertyName, - const char* name) const = 0; - - virtual SDO_API DASValue* getDASValue( - const Type& type, - const SDOString& propertyName, - const SDOString& name) const = 0; - - virtual SDO_API DASValue* getDASValue( - const char* typeuri, - const char* typenam, - const char* propertyName, - const char* name) const = 0; - - virtual SDO_API DASValue* getDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& propertyName, - const SDOString& name) const = 0; - - virtual void resolve() = 0; - - }; -}; -}; -#endif //_DATAFACTORY_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.cpp deleted file mode 100644 index d3cb033c6e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.cpp +++ /dev/null @@ -1,2271 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/13 08:35:04 $ */ - -////////////////////////////////////////////////////////////////////// -// DataFactoryImpl.cpp: implementation of the DataFactory class. -// -////////////////////////////////////////////////////////////////////// -#include "commonj/sdo/SDORuntimeException.h" - -#include "commonj/sdo/DataFactoryImpl.h" -#include "commonj/sdo/DataObjectImpl.h" - -#include "commonj/sdo/Logger.h" - - -#include "commonj/sdo/PropertyList.h" - -#include <iostream> -#include <stdio.h> - - -using namespace std; -using namespace commonj::sdo; - -namespace commonj{ -namespace sdo { - -// =================================================================== -// Constructor -// =================================================================== -DataFactoryImpl::DataFactoryImpl() -{ - - /* add the primitives to every mdg - */ - - isResolved = false; - addType(Type::SDOTypeNamespaceURI,"BigDecimal"); - addType(Type::SDOTypeNamespaceURI,"BigInteger"); - addType(Type::SDOTypeNamespaceURI,"Boolean"); - - addType(Type::SDOTypeNamespaceURI,"Byte"); - addType(Type::SDOTypeNamespaceURI,"Bytes"); - addType(Type::SDOTypeNamespaceURI,"Character"); - - addType(Type::SDOTypeNamespaceURI,"String"); - addType(Type::SDOTypeNamespaceURI,"DataObject"); - addType(Type::SDOTypeNamespaceURI,"OpenDataObject", true, true, false, false); - addType(Type::SDOTypeNamespaceURI,"Date"); - addType(Type::SDOTypeNamespaceURI,"Double"); - addType(Type::SDOTypeNamespaceURI,"Float"); - addType(Type::SDOTypeNamespaceURI,"Integer"); - addType(Type::SDOTypeNamespaceURI,"Long"); - addType(Type::SDOTypeNamespaceURI,"Short"); - addType(Type::SDOTypeNamespaceURI,"URI"); - - // abstract - addType(Type::SDOTypeNamespaceURI,"ChangeSummary"); - - rootElementName.erase(); - - - -} - -// =================================================================== -// Destructor -// =================================================================== -DataFactoryImpl::~DataFactoryImpl() -{ - - TYPES_MAP::iterator typeIter; - for (typeIter = types.begin() ; typeIter != types.end() ; ++typeIter) - { - if (strncmp((typeIter->first).c_str(),"ALIAS::", 7)) - { - delete typeIter->second; - } - } - - rootElementName.erase(); - -} - -// =================================================================== -// get the root element name -// =================================================================== -// const char* DataFactoryImpl::getRootElementName() const -const SDOString& DataFactoryImpl::getRootElementName() const -{ - return rootElementName; -} - -// =================================================================== -// set the root element name -// =================================================================== -void DataFactoryImpl::setRootElementName(const char* ren) -{ - - // If the incoming string is meaningful then use it to reset the stored - // value. Otherwise, just erase what we have. - - if (ren != 0 && (strlen(ren) != 0)) - { - rootElementName = ren; - } - else - { - rootElementName.erase(); - } - -} - -void DataFactoryImpl::setRootElementName(const SDOString& ren) -{ - rootElementName = ren; -} - -// =================================================================== -// copy constructor -// =================================================================== -DataFactoryImpl::DataFactoryImpl(const DataFactoryImpl& inmdg) -{ - isResolved = false; - setRootElementName(inmdg.getRootElementName()); - copyTypes(inmdg); -} - -// =================================================================== -// Assignment operator -// =================================================================== -DataFactoryImpl& DataFactoryImpl::operator=(const DataFactoryImpl& inmdg) -{ - if (this != &inmdg) - { - copyTypes(inmdg); - setRootElementName(inmdg.getRootElementName()); - } - return *this; -} - -// =================================================================== -// copy Types to this DataFactory -// =================================================================== -void DataFactoryImpl::copyTypes(const DataFactoryImpl& inmdg) -{ - - if (isResolved) - { - SDO_THROW_EXCEPTION("copyTypes", - SDOUnsupportedOperationException, "Copying Type after data graph completed"); - } - - TYPES_MAP::const_iterator typeIter; - TYPES_MAP::iterator typeIter2; - char* fullTypeName; - - for (typeIter = inmdg.types.begin() ; typeIter != inmdg.types.end() ; ++typeIter) - { - // add this type to this metadata - addType((typeIter->second)->getURI(), (typeIter->second)->getName()); - - // re-find the type we just added. - fullTypeName = getFullTypeName( - (typeIter->second)->getURI(), - (typeIter->second)->getName()); - typeIter2 = types.find(fullTypeName); - if (fullTypeName)delete fullTypeName; - - // copy the aliases , if there are any. - - if ((typeIter->second)->getAliasCount() > 0) - { - for (int j=0;j<(typeIter->second)->getAliasCount();j++) - { - (typeIter2->second)->setAlias( - (typeIter->second)->getAlias()); - } - } - - - // Now add all the properties - PropertyList props = typeIter->second->getProperties(); - for (int i=0; i < props.size(); i++) - { - // Ensure the properties type is added - const Type& propType = props[i].getType(); - addType(propType.getURI(), propType.getName()); - - // Now add the property - addPropertyToType((typeIter->second)->getURI(), - (typeIter->second)->getName(), - props[i].getName(), - propType.getURI(), - propType.getName(), - props[i].isMany(), - props[i].isReadOnly(), - props[i].isContainment()); - - // copy the aliases if there are any. - if (props[i].getAliasCount() > 0) - { - - PropertyImpl* p = (typeIter2->second)-> - getPropertyImpl(props[i].getName()); - if (p != 0) - { - for (int j=0;j<p->getAliasCount();j++) - { - p->setAlias(props[i].getAlias(j)); - } - } - - } - - } // end - iterate over Properties - } // end - iterate over Types -} - -// =================================================================== -// addType - adds a new Type if it does not already exist -// =================================================================== -void DataFactoryImpl::addType(const char* uri, const char* inTypeName, - bool isSeq, - bool isOp, - bool isAbs, - bool isData) -{ - addType(uri,inTypeName,isSeq,isOp,isAbs,isData,false); -} - -void DataFactoryImpl::addType(const SDOString& uri, const SDOString& inTypeName, - bool isSeq, - bool isOp, - bool isAbs, - bool isData) -{ - addType(uri.c_str(),inTypeName.c_str(),isSeq,isOp,isAbs,isData,false); -} - -void DataFactoryImpl::addType(const char* uri, const char* inTypeName, - bool isSeq, - bool isOp, - bool isAbs, - bool isData, - bool isFromList) -{ - - - if (isResolved) - { - SDO_THROW_EXCEPTION("DataFactory::addType", - SDOUnsupportedOperationException, "Adding Type after data graph completed"); - } - - if (inTypeName == 0 || strlen(inTypeName) == 0) - { - SDO_THROW_EXCEPTION("DataFactory::addType", - SDOIllegalArgumentException, " Type has empty name"); - } - - - if (findType(uri, inTypeName) == 0) - { - char* fullTypeName = getFullTypeName(uri, inTypeName); - types[fullTypeName] = new TypeImpl(uri, inTypeName, isSeq, isOp, isAbs, isData, isFromList); - if (fullTypeName)delete fullTypeName; - - } -} - -void DataFactoryImpl::addType(const SDOString& uri, const SDOString& inTypeName, - bool isSeq, - bool isOp, - bool isAbs, - bool isData, - bool isFromList) -{ - addType(uri.c_str(), inTypeName.c_str(), isSeq, isOp, isAbs, isData, isFromList); -} - -// =================================================================== -// Check whether a change summary would clash. -// =================================================================== - -bool DataFactoryImpl::recursiveCheck(TypeImpl* cs, TypeImpl* t) -{ - if (cs->isDataType()) return false; - - if (! strcmp(cs->getName(), t->getName()) && - ! strcmp(cs->getURI() , t->getURI()) ) - { - return true; - } - - PropertyList pl = cs->getProperties(); - - for (int i=0 ; i < pl.size() ; i++ ) - { - if (recursiveCheck((TypeImpl*)&(pl[i].getType()), t)) return true; - } - return false; -} - -// =================================================================== -// Check whether a change summary would clash. -// =================================================================== -bool DataFactoryImpl::checkForValidChangeSummary(TypeImpl* t) -{ - // None of the containing types can have a cs already. - // None of the properties of this type can hold a type - // which has a change summary. - if (isResolved) - { - SDO_THROW_EXCEPTION("DataFactory::addChangeSummary", - SDOUnsupportedOperationException, "Adding Change Summary after data graph completed"); - } - - if (cstypes.size() > 0) { - for (int i = 0 ;i < cstypes.size(); i++) - { - if (recursiveCheck(cstypes[i], t)) - { - return false; - - } - } - } - cstypes.push_back(t); - return true; -} - -// =================================================================== -// addPropertyToType - adds a Property to an existing Type -// =================================================================== -void DataFactoryImpl::addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool many) -{ - char* fullPropTypeName = getFullTypeName(propTypeUri, propTypeName); - TYPES_MAP::iterator typeIter; - typeIter = types.find(fullPropTypeName); - if (fullPropTypeName)delete fullPropTypeName; - if (typeIter != types.end()) - { - addPropertyToType(uri,inTypeName, - propname, - propTypeUri, - propTypeName, - many, - false, - !(typeIter->second)->isDataType()); - } -} - -void DataFactoryImpl::addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool many) -{ - addPropertyToType(uri.c_str(), inTypeName.c_str(), propname.c_str(), propTypeUri.c_str(), propTypeName.c_str(), many); -} - -void DataFactoryImpl::addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool many, - bool rdonly, - bool cont) -{ - if (isResolved) - { - SDO_THROW_EXCEPTION("DataFactory::addPropertyToType", - SDOUnsupportedOperationException, "Adding Properties after data graph completed"); - } - - - - TYPES_MAP::iterator typeIter, typeIter2; - - //cout << "Adding property " << propname << "(" << propTypeUri << "#" << propTypeName - // << ") to type " << uri << "#" << inTypeName << endl; - - - char* fullTypeName = getFullTypeName(uri, inTypeName); - typeIter = types.find(fullTypeName); - if (fullTypeName)delete fullTypeName; - - if(typeIter == types.end()) - { - string msg("Type not found: "); - if (uri != 0)msg += uri; - msg += " "; - if (inTypeName != 0)msg += inTypeName; - SDO_THROW_EXCEPTION("addPropertyToType", - SDOTypeNotFoundException, msg.c_str()); - - } - - if ((typeIter->second)->isDataType()) - { - string msg("Cannot add property "); - msg += propname; - msg += " of type "; - msg += propTypeUri; - msg += "#"; - msg += propTypeName; - msg += " to this data type "; - msg += uri; - msg += "#"; - msg += inTypeName; - SDO_THROW_EXCEPTION("addPropertyToType", - SDOIllegalArgumentException, msg.c_str()); - } - - fullTypeName = getFullTypeName(propTypeUri, propTypeName); - typeIter2 = types.find(fullTypeName); - if (fullTypeName)delete fullTypeName; - - if (typeIter2 == types.end()) - { - string msg("Type not found: "); - if (propTypeUri != 0)msg += propTypeUri; - msg += " "; - if (propTypeName != 0)msg += propTypeName; - SDO_THROW_EXCEPTION("addPropertyToType", - SDOTypeNotFoundException, msg.c_str()); - } - - // Check if its a ChangeSummary - if (propTypeUri != 0 && !strcmp(propTypeUri,Type::SDOTypeNamespaceURI.c_str()) && - !strcmp(propTypeName,"ChangeSummary") ) - { - if (checkForValidChangeSummary(typeIter->second)) - { - // The change summary is allowable if we got to here - force the right params. - // we will not use this property - its just for compatibility. - // we have to use getChangeSummary to get the change summary, - // and isChangeSummaryType to see if this is a type which may have - // a change summary. - (typeIter->second)->addChangeSummary(); - // dont even show the property - its not needed - //((typeIter->second)->addProperty(propname, *(typeIter2->second),false,true, false)); - - } - return; - } - - - if ((typeIter->second)->isDataType()) - { - string msg("Cannot add property to a data type : "); - msg += (typeIter->second)->getName(); - SDO_THROW_EXCEPTION("addPropertyToType", - SDOIllegalArgumentException, msg.c_str()); - // cannot add a property to a primitive - } - - // @PGR@ containment should be ignored for DataType -/* if ((typeIter2->second)->isDataType() && cont == true) - { - string msg("Data types may not be containment : "); - msg += (typeIter2->second)->getName(); - SDO_THROW_EXCEPTION("addPropertyToType", - SDOIllegalArgumentException, msg.c_str()); - // cannot try to make a property containment on a data type - } -*/ - ((typeIter->second)->addProperty(propname, *(typeIter2->second),many,rdonly, cont)); - return; -} - -void DataFactoryImpl::addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool many, - bool rdonly, - bool cont) -{ - addPropertyToType(uri.c_str(), - inTypeName.c_str(), - propname.c_str(), - propTypeUri.c_str(), - propTypeName.c_str(), - many, - rdonly, - cont); -} - -// =================================================================== -// addPropertyToType - adds a Property to an existing Type -// =================================================================== - -void DataFactoryImpl::addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const Type& tprop, - bool many) -{ - addPropertyToType(uri, - inTypeName, - propname, - tprop, - many, - false, - !tprop.isDataType()); -} - -void DataFactoryImpl::addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const Type& tprop, - bool many) -{ - addPropertyToType(uri.c_str(), - inTypeName.c_str(), - propname.c_str(), - tprop, - many, - false, - !tprop.isDataType()); -} - -void DataFactoryImpl::addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const Type& tprop, - bool many, - bool rdonly, - bool cont) -{ - addPropertyToType(uri, - inTypeName, - propname, - tprop.getURI(), - tprop.getName(), - many, - rdonly, cont); -} - -void DataFactoryImpl::addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const Type& tprop, - bool many, - bool rdonly, - bool cont) -{ - addPropertyToType(uri.c_str(), - inTypeName.c_str(), - propname.c_str(), - tprop.getURI(), - tprop.getName(), - many, - rdonly, - cont); -} - -// =================================================================== -// addPropertyToType - adds a Property to an existing Type -// =================================================================== -void DataFactoryImpl::addPropertyToType(const Type& cont, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool many) -{ - addPropertyToType(cont.getURI(), - cont.getName(), - propname, - propTypeUri, - propTypeName, - many); -} - -void DataFactoryImpl::addPropertyToType(const Type& cont, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool many) -{ - addPropertyToType(cont.getURI(), - cont.getName(), - propname.c_str(), - propTypeUri.c_str(), - propTypeName.c_str(), - many); -} - -void DataFactoryImpl::addPropertyToType(const Type& cont, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool many, - bool rdonly, - bool contain) -{ - addPropertyToType(cont.getURI(), - cont.getName(), - propname, - propTypeUri, - propTypeName, - many, - rdonly, - contain); -} - -void DataFactoryImpl::addPropertyToType(const Type& cont, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool many, - bool rdonly, - bool contain) -{ - addPropertyToType(cont.getURI(), - cont.getName(), - propname.c_str(), - propTypeUri.c_str(), - propTypeName.c_str(), - many, - rdonly, - contain); -} - -// =================================================================== -// addPropertyToType - adds a Property to an existing Type -// =================================================================== -void DataFactoryImpl::addPropertyToType(const Type& tp, - const char* propname, - const Type& tprop, - bool many) -{ - addPropertyToType(tp.getURI(), - tp.getName(), - propname, - tprop.getURI(), - tprop.getName(), - many); -} - -void DataFactoryImpl::addPropertyToType(const Type& tp, - const SDOString& propname, - const Type& tprop, - bool many) -{ - addPropertyToType(tp.getURI(), - tp.getName(), - propname.c_str(), - tprop.getURI(), - tprop.getName(), - many); -} - -void DataFactoryImpl::addPropertyToType(const Type& tp, - const char* propname, - const Type& tprop, - bool many, - bool rdonly, - bool cont) -{ - addPropertyToType(tp.getURI(), - tp.getName(), - propname, - tprop.getURI(), - tprop.getName(), - many, - rdonly, - cont); -} - -void DataFactoryImpl::addPropertyToType(const Type& tp, - const SDOString& propname, - const Type& tprop, - bool many, - bool rdonly, - bool cont) -{ - addPropertyToType(tp.getURI(), - tp.getName(), - propname.c_str(), - tprop.getURI(), - tprop.getName(), - many, - rdonly, - cont); -} - -// =================================================================== -// getFullTypeName - return the name used as a key in the types map -// =================================================================== -char* DataFactoryImpl::getFullTypeName(const char* uri, const char* inTypeName) const -{ - char* c; - if (uri != 0 && inTypeName != 0) - { - c = new char[strlen(uri) + strlen(inTypeName) + 2]; - sprintf(c,"%s#%s",uri,inTypeName); - return c; - } - if (uri != 0) - { - c = new char[strlen(uri) + 2]; - sprintf(c,"%s#",uri); - return c; - } - c = new char[strlen(inTypeName) + 2]; - sprintf(c,"#%s",inTypeName); - return c; -} - -char* DataFactoryImpl::getFullTypeName(const SDOString& uri, const SDOString& inTypeName) const -{ - return getFullTypeName(uri.c_str(), inTypeName.c_str()); -} - -// =================================================================== -// getFullTypeName - return the name used as a key in the types map -// =================================================================== -char* DataFactoryImpl::getAliasTypeName(const char* uri, const char* inTypeName) const -{ - char* c; - if (uri != 0 && inTypeName != 0) - { - c = new char[strlen(uri) + strlen(inTypeName) + 9]; - sprintf(c,"ALIAS::%s#%s",uri,inTypeName); - return c; - } - if (uri != 0) - { - c = new char[strlen(uri) + 9]; - sprintf(c,"ALIAS::%s#",uri); - return c; - } - c = new char[strlen(inTypeName) + 9]; - sprintf(c,"ALIAS::#%s",inTypeName); - return c; -} - -char* DataFactoryImpl::getAliasTypeName(const SDOString& uri, const SDOString& inTypeName) const -{ - return getAliasTypeName(uri.c_str(), inTypeName.c_str()); -} - -// =================================================================== -// getType - return a pointer to the required Type -// =================================================================== -const Type& DataFactoryImpl::getType(const char* uri, const char* inTypeName) const -{ - - const Type* type = findType(uri, inTypeName); - - if (type == 0) - { - string msg("Type not found :"); - if (uri != 0) msg += uri; - msg += " "; - if (inTypeName != 0) msg += inTypeName; - SDO_THROW_EXCEPTION("getType" , - SDOTypeNotFoundException, msg.c_str()); - } - - return *type; -} - -const Type& DataFactoryImpl::getType(const SDOString& uri, const SDOString& inTypeName) const -{ - return getType(uri.c_str(), inTypeName.c_str()); -} - -// =================================================================== -// setBaseType - sets the type from which this type inherits properties -// =================================================================== - -void DataFactoryImpl::setBaseType( const Type& type, - const Type& base, bool isRestriction) -{ - setBaseType(type.getURI(),type.getName(),base.getURI(), base.getName(), - isRestriction); -} - -// =================================================================== -// setBaseType - sets the type from which this type inherits properties -// =================================================================== - -void DataFactoryImpl::setBaseType( const char* typeuri, - const char* typenam, - const char* baseuri, - const char* basename, - bool isRestriction ) -{ - const TypeImpl* base = findTypeImpl(baseuri, basename); - if (base == 0) - { - string msg("Type not found :"); - if (baseuri != 0) msg += baseuri; - msg += " "; - if (basename != 0) msg += basename; - SDO_THROW_EXCEPTION("setBaseType" , - SDOTypeNotFoundException, msg.c_str()); - } - - TYPES_MAP::const_iterator typeIter; - - char* fullTypeName = getFullTypeName(typeuri, typenam); - typeIter = types.find(fullTypeName); - if (fullTypeName)delete fullTypeName; - - if(typeIter == types.end()) - { - string msg("Type not found :"); - if (typeuri != 0) msg += typeuri; - msg += " "; - if (typenam != 0) msg += typenam; - SDO_THROW_EXCEPTION("setBaseType" , - SDOTypeNotFoundException, msg.c_str()); - } - - (typeIter->second)->setBaseType(base, isRestriction); -} - -void DataFactoryImpl::setBaseType(const SDOString& typeuri, - const SDOString& typenam, - const SDOString& baseuri, - const SDOString& basename, - bool isRestriction) -{ - setBaseType(typeuri.c_str(), - typenam.c_str(), - baseuri.c_str(), - basename.c_str(), - isRestriction); -} - - -// =================================================================== -// setPropertySubstitute - additional type for a property -// =================================================================== - - void DataFactoryImpl::setPropertySubstitute( - const char* uri, - const char* inTypeName, - const char* propname, - const char* subname, - const char* subTypeUri, - const char* subTypeName) - { - const TypeImpl* cont = findTypeImpl(uri, inTypeName); - if (cont == 0) - { - string msg("Type not found :"); - if (uri != 0) msg += uri; - msg += " "; - if (inTypeName != 0) msg += inTypeName; - SDO_THROW_EXCEPTION("setPropertySubstitute" , - SDOTypeNotFoundException, msg.c_str()); - } - PropertyImpl* pi = cont->getPropertyImpl(propname); - const Type& tsub = getType(subTypeUri, - subTypeName); - if (pi != 0)pi->setSubstitution(this,subname,tsub); - } - - void DataFactoryImpl::setPropertySubstitute( - const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& subname, - const SDOString& subTypeUri, - const SDOString& subTypeName) - { - setPropertySubstitute(uri.c_str(), - inTypeName.c_str(), - propname.c_str(), - subname.c_str(), - subTypeUri.c_str(), - subTypeName.c_str()); - } - - void DataFactoryImpl::setPropertySubstitute( - const Type& containertype, - const char* propname, - const char* subname, - const Type& subtype) - { - setPropertySubstitute( - containertype.getURI(), - containertype.getName(), - propname,subname, - subtype.getURI(),subtype.getName()); - } - - void DataFactoryImpl::setPropertySubstitute( - const Type& containertype, - const SDOString& propname, - const SDOString& subname, - const Type& subtype) - { - setPropertySubstitute(containertype, propname.c_str(), subname.c_str(), subtype); - } -// =================================================================== -// setDefault - sets the default value for a property of a type -// =================================================================== - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname, bool b ) - { - setDefault(t.getURI(), t.getName(), propname, b); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname, bool b ) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), b); - } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , char c) - - { - setDefault(t.getURI(), t.getName(), propname, c); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , char c) - - { - setDefault(t.getURI(), t.getName(), propname.c_str(), c); - } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , wchar_t c) - { - setDefault(t.getURI(), t.getName(), propname, c); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , wchar_t c) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), c); - } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , char* c) - { - setDefault(t.getURI(), t.getName(), propname, c); - } - -// #pragma message( "GMW: Unimplemented method, writable string parameter" ) -// void DataFactoryImpl::setDefault( -// const Type& t, const SDOString& propname , SDOString& c) -// { -// setDefault(t.getURI(), t.getName(), propname.c_str(), c.c_str()); -// } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , short s) - { - setDefault(t.getURI(), t.getName(), propname, s); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , short s) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), s); - } - -#if __WORDSIZE !=64 - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , long l) - { - setDefault(t.getURI(), t.getName(), propname, l); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , long l) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), l); - } - -#endif - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , int64_t i) - { - setDefault(t.getURI(), t.getName(), propname, i); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , int64_t i) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), i); - } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , float f) - { - setDefault(t.getURI(), t.getName(), propname, f); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , float f) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), f); - } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , long double d) - { - setDefault(t.getURI(), t.getName(), propname, d); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , long double d) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), d); - } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , const SDODate d) - { - setDefault(t.getURI(), t.getName(), propname, d); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , const SDODate d) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), d); - } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , const wchar_t* c, unsigned int len) - { - setDefault(t.getURI(), t.getName(), propname, c, len); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , const wchar_t* c, unsigned int len) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), c, len); - } - - void DataFactoryImpl::setDefault( - const Type& t, const char* propname , const char* c, unsigned int len) - { - setDefault(t.getURI(), t.getName(), propname, c, len); - } - - void DataFactoryImpl::setDefault( - const Type& t, const SDOString& propname , const SDOString& c, unsigned int len) - { - setDefault(t.getURI(), t.getName(), propname.c_str(), c.c_str(), len); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname, bool b ) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(b); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname, bool b ) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), b); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , char c) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(c); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , char c) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), c); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , wchar_t c) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(c); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , wchar_t c) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), c); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , char* c) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(c); - } - -// #pragma message( "GMW: Unimplemented method, writable string parameter" ) -// void DataFactoryImpl::setDefault( -// const SDOString& typuri, const SDOString& typnam, -// const SDOString& propname , SDOString& c) -// { -// setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), c.c_str()); -// } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , short s) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(s); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , short s) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), s); - } - -#if __WORDSIZE !=64 - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , long l) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(l); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , long l) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), l); - } - -#endif - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , int64_t i) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(i); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , int64_t i) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), i); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , float f) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(f); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , float f) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), f); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , long double d) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(d); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , long double d) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), d); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , const SDODate d) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(d); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , const SDODate d) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), d); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , const wchar_t* c, unsigned int len) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(c,len); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , const wchar_t* c, unsigned int len) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), c, len); - } - - void DataFactoryImpl::setDefault( - const char* typuri, const char* typnam, - const char* propname , const char* c, unsigned int len) - { - const TypeImpl* ti = findTypeImpl(typuri,typnam); - PropertyImpl* pi = ti->getPropertyImpl(propname); - if (pi != 0)pi->setDefault(c,len); - } - - void DataFactoryImpl::setDefault( - const SDOString& typuri, const SDOString& typnam, - const SDOString& propname , const SDOString& c, unsigned int len) - { - setDefault(typuri.c_str(), typnam.c_str(), propname.c_str(), c.c_str(), len); - } - - void DataFactoryImpl::setOpposite( - const Type& typ, - const char* propnam, - const Type& opptyp, - const char* opppropnam) - { - SDO_THROW_EXCEPTION("setOpposite" , - SDOUnsupportedOperationException, " Not implemented"); - } - - void DataFactoryImpl::setOpposite( - const Type& typ, - const SDOString& propnam, - const Type& opptyp, - const SDOString& opppropnam) - { - setOpposite(typ, propnam.c_str(), opptyp, opppropnam.c_str()); - } - -// =================================================================== -// getTypeImpl - return a pointer to the required TypeImpl -// =================================================================== -const TypeImpl& DataFactoryImpl::getTypeImpl(const char* uri, const char* inTypeName) const -{ - const TypeImpl* type = findTypeImpl(uri, inTypeName); - - if (type == 0) - { - string msg("Type not found :"); - if (uri != 0)msg += uri; - msg += " "; - if (inTypeName != 0)msg += inTypeName; - SDO_THROW_EXCEPTION("getTypeImpl" , - SDOTypeNotFoundException, msg.c_str()); - } - - return *type; -} - -const TypeImpl& DataFactoryImpl::getTypeImpl(const SDOString& uri, const SDOString& inTypeName) const -{ - return getTypeImpl(uri.c_str(), inTypeName.c_str()); -} - -// =================================================================== -// findType -// =================================================================== - -const Type* DataFactoryImpl::findType(const char* uri, const char* inTypeName) const -{ - return (Type*)findTypeImpl(uri,inTypeName); -} - -const Type* DataFactoryImpl::findType(const SDOString uri, const SDOString inTypeName) const -{ - return (Type*) findTypeImpl(uri.c_str(), inTypeName.c_str()); -} - -// =================================================================== -// findTypeImpl -// =================================================================== - -const TypeImpl* DataFactoryImpl::findTypeImpl(const SDOString& uri, const SDOString& inTypeName) const -{ - return findTypeImpl(uri.c_str(), inTypeName.c_str()); -} - -const TypeImpl* DataFactoryImpl::findTypeImpl(const char* uri, const char* inTypeName) const -{ - char* fullTypeName = getFullTypeName(uri, inTypeName); - TYPES_MAP::const_iterator typeIter; - typeIter = types.find(fullTypeName); - if (fullTypeName)delete fullTypeName; - if(typeIter != types.end()) - { - return typeIter->second; - } - else - { - // try alias names - fullTypeName = getAliasTypeName(uri, inTypeName); - typeIter = types.find(fullTypeName); - if (fullTypeName)delete fullTypeName; - if(typeIter != types.end()) - { - return typeIter->second; - } - } - return 0; -} - -// =================================================================== -// setAlias - sets a new alias for this type -// =================================================================== - -void DataFactoryImpl::setAlias(const char* typeuri, - const char* typenam, - const char* alias) -{ - - char* fullTypeName = getFullTypeName(typeuri, typenam); - TYPES_MAP::iterator typeIter; - typeIter = types.find(fullTypeName); - if (fullTypeName)delete fullTypeName; - if(typeIter != types.end()) - { - (typeIter->second)->setAlias(alias); - fullTypeName = getAliasTypeName(typeuri, alias); - types[fullTypeName] = typeIter->second; - } - -} - -void DataFactoryImpl::setAlias(const SDOString& typeuri, - const SDOString& typenam, - const SDOString& alias) -{ - setAlias(typeuri.c_str(), typenam.c_str(), alias.c_str()); -} - -// =================================================================== -// setAlias - sets a new alias for this type -// =================================================================== - -void DataFactoryImpl::setAlias(const char* typeuri, - const char* typenam, - const char* propname, - const char* alias) -{ - const TypeImpl& t = getTypeImpl(typeuri, typenam); - PropertyImpl* p = t.getPropertyImpl(propname); - if (p != 0)p->setAlias(alias); - -} - -void DataFactoryImpl::setAlias(const SDOString& typeuri, - const SDOString& typenam, - const SDOString& propname, - const SDOString& alias) -{ - setAlias(typeuri.c_str(), typenam.c_str(), propname.c_str(), alias.c_str()); -} - -// =================================================================== -// getTypes - gets the full list of types for this factory -// =================================================================== - -TypeList DataFactoryImpl::getTypes() const -{ - TYPES_MAP::const_iterator typeIter; - - - std::vector<const Type*> typeVector; - - for (typeIter = types.begin() ; typeIter != types.end(); - ++typeIter) { - if (strncmp((typeIter->first).c_str(),"ALIAS::", 7)) { - typeVector.insert(typeVector.end(),typeIter->second); - } - } - - - return typeVector; -} - - -// =================================================================== -// resolve - resolves the type and includes all the properties from -// the supertype. After this has been called, no further changes -// to the type hierarchy are allowed. -// =================================================================== - -void DataFactoryImpl::resolve() -{ - if (isResolved) return; - - TYPES_MAP::iterator typeIter; - for (typeIter = types.begin() ; typeIter != types.end(); - ++typeIter) - { - (typeIter->second)->initCompoundProperties(); - (typeIter->second)->validateChangeSummary(); - } - - isResolved = true; -} - -// =================================================================== -// create - creates a data object from the types available. -// This first resolves the type hierarchy, and thus no further changes -// to the type hierarchy are allowed. -// =================================================================== - - -RefCountingPointer<DataObject> DataFactoryImpl::create(const char* uri, const char* typeName) -{ - - if (!isResolved) - { - // Allow creation of types and properties before resolve. - if (uri != 0 && !strcmp(uri,Type::SDOTypeNamespaceURI.c_str())) { - if (!strcmp(typeName,"Type") || !strcmp(typeName,"Property")) - { - DataObject* dob = (DataObject*)(new DataObjectImpl(this, getTypeImpl(uri, typeName))); - return dob; - } - } - resolve(); - } - - const TypeImpl* ti = findTypeImpl(uri,typeName); - if (ti == 0) - { - string msg("Instantiation of unknown type :"); - if (uri != 0) msg += uri; - msg += " "; - if (typeName != 0)msg += typeName; - SDO_THROW_EXCEPTION("create" , - SDOTypeNotFoundException, msg.c_str()); - } - - if (ti->isAbstractType()) - { - string msg("Instantiation of abstract type :"); - if (uri != 0)msg += uri; - msg += " "; - if (typeName != 0)msg += typeName; - SDO_THROW_EXCEPTION("create" , - SDOUnsupportedOperationException, msg.c_str()); - } - - DataObject* dob = (DataObject*)(new DataObjectImpl(this, getTypeImpl(uri, typeName))); - return dob; -} - -// =================================================================== -// create - creates a data object from the types available. -// This first resolves the type hierarchy, and thus no further changes -// to the type hierarchy are allowed. -// =================================================================== - - -RefCountingPointer<DataObject> DataFactoryImpl::create(const SDOString& uri, const SDOString& typeName) -{ - return create(uri.c_str(), typeName.c_str()); -} - -// =================================================================== -// The openProperties map is a list of the curently present open -// properties as used by this factory. It will cause the -// open properties to be written out as attributes and elements -// of the root data object when a graph is serialized. -// =================================================================== - const propertyMap& DataFactoryImpl::getOpenProperties() - { - return openProperties; - } - - void DataFactoryImpl::addOpenProperty(const PropertyImpl& prop) - { - propertyMap::iterator i; - while ((i = openProperties.find(prop.getName())) != - openProperties.end()) - { - openProperties.erase(i); - } - openProperties.insert(make_pair(prop.getName(),prop)); - } - - void DataFactoryImpl::removeOpenProperty(const SDOString& name) - { - removeOpenProperty(name.c_str()); - } - void DataFactoryImpl::removeOpenProperty(const char* name) - { - propertyMap::iterator i = - openProperties.find(name); - if (i != openProperties.end()) - { - openProperties.erase(i); - } - } - - -// =================================================================== -// create - creates a data object from the types available. -// This first resolves the type hierarchy, and thus no further changes -// to the type hierarchy are allowed. -// =================================================================== - -RefCountingPointer<DataObject> DataFactoryImpl::create(const Type& type) -{ - return create( type.getURI(), type.getName()); -} - - -// =================================================================== -// setDASValue - Set a value on a Type -// =================================================================== -void DataFactoryImpl::setDASValue(const Type& type, - const char* name, - DASValue* value) -{ - setDASValue(type.getURI(), type.getName(), name, value); -} - -void DataFactoryImpl::setDASValue(const Type& type, - const SDOString& name, - DASValue* value) -{ - setDASValue(type.getURI(), type.getName(), name.c_str(), value); -} - -void DataFactoryImpl::setDASValue(const char* typeuri, - const char* typenam, - const char* name, - DASValue* value) -{ - TypeImpl* type = (TypeImpl*)findTypeImpl(typeuri, typenam); - if (type != NULL) - { - type->setDASValue(name, value); - } -} - -void DataFactoryImpl::setDASValue(const SDOString& typeuri, - const SDOString& typenam, - const SDOString& name, - DASValue* value) -{ - setDASValue(typeuri.c_str(), typenam.c_str(), name.c_str(), value); -} - -// =================================================================== -// getDASValue - retrieve a value from a Type -// =================================================================== - -DASValue* DataFactoryImpl::getDASValue(const Type& type, - const char* name) const -{ - return getDASValue(type.getURI(), type.getName(), name); -} - -DASValue* DataFactoryImpl::getDASValue(const Type& type, - const SDOString& name) const -{ - return getDASValue(type.getURI(), type.getName(), name.c_str()); -} - -DASValue* DataFactoryImpl::getDASValue(const char* typeuri, - const char* typenam, - const char* name) const -{ - TypeImpl* type = (TypeImpl*)findTypeImpl(typeuri, typenam); - if (type != NULL) - { - return type->getDASValue(name); - } - - return NULL; -} - -DASValue* DataFactoryImpl::getDASValue(const SDOString& typeuri, - const SDOString& typenam, - const SDOString& name) const -{ - return getDASValue(typeuri.c_str(), typenam.c_str(), name.c_str()); -} - -// =================================================================== -// setDASValue - Set a value on a Property -// =================================================================== -void DataFactoryImpl::setDASValue( - const Type& type, - const char* propertyName, - const char* name, - DASValue* value) -{ - setDASValue(type.getURI(), type.getName(), propertyName, name, value); -} - -void DataFactoryImpl::setDASValue( - const Type& type, - const SDOString& propertyName, - const SDOString& name, - DASValue* value) -{ - setDASValue(type.getURI(), type.getName(), propertyName.c_str(), name.c_str(), value); -} - -void DataFactoryImpl::setDASValue( - const char* typeuri, - const char* typenam, - const char* propertyName, - const char* name, - DASValue* value) -{ - const TypeImpl* type = findTypeImpl(typeuri, typenam); - if (type != NULL) - { - PropertyImpl* prop = type->getPropertyImplPure(propertyName); - if (prop != 0)prop->setDASValue(name, value); - } -} - -void DataFactoryImpl::setDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& propertyName, - const SDOString& name, - DASValue* value) -{ - setDASValue(typeuri.c_str(), typenam.c_str(), propertyName.c_str(), name.c_str(), value); -} - -// =================================================================== -// getDASValue - retrieve a value from a Property -// =================================================================== -DASValue* DataFactoryImpl::getDASValue( - const Type& type, - const char* propertyName, - const char* name) const -{ - return getDASValue(type.getURI(), type.getName(), propertyName, name); -} - -DASValue* DataFactoryImpl::getDASValue( - const Type& type, - const SDOString& propertyName, - const SDOString& name) const -{ - return getDASValue(type.getURI(), type.getName(), propertyName.c_str(), name.c_str()); -} - -DASValue* DataFactoryImpl::getDASValue( - const char* typeuri, - const char* typenam, - const char* propertyName, - const char* name) const -{ - const TypeImpl* type = findTypeImpl(typeuri, typenam); - if (type != NULL) - { - try - { - PropertyImpl* prop = type->getPropertyImpl(propertyName); - if (prop != 0)return prop->getDASValue(name); - } - catch (const SDOPropertyNotFoundException&) - { - // Ignore - return null - } - } - - return NULL; -} - -DASValue* DataFactoryImpl::getDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& propertyName, - const SDOString& name) const -{ - return getDASValue(typeuri.c_str(), typenam.c_str(), propertyName.c_str(), name.c_str()); -} - -bool DataFactoryImpl::compareTypes(const TypeImpl* t1, const Type& t2) -{ - PropertyList pl = t2.getProperties(); - for (int i=0;i<pl.size();i++) - { - PropertyImpl* p = t1->getPropertyImpl(i); - if (p == 0) return false; - if (p->isMany() != pl[i].isMany()) return false; - if (p->isContainment() != pl[i].isContainment()) return false; - if (strcmp( p->getType().getURI(), - pl[i].getType().getURI())) return false; - if (strcmp( p->getType().getName(), - pl[i].getType().getName())) return false; - } - return true; - -} -bool DataFactoryImpl::checkType(const Type& t) -{ - const TypeImpl* t2 = findTypeImpl(t.getURI(), - t.getName()); - - if (t2 == 0) return false; - - if (!compareTypes(t2,t)) return false; - - PropertyList pl = t.getProperties(); - for (int i=0;i<pl.size();i++) - { - if (pl[i].getType().isDataObjectType()) - { - if (!checkType(pl[i].getType())) return false; - } - } - return true; -} - - -// only checks the tree dirctly descended from this object if the -// object is specified, otherwise validates the whole factory - -bool DataFactoryImpl::isCompatible(DataFactory* df, DataObject* d) -{ - if (d == 0) - { - TypeList tl = df->getTypes(); - for (int j=0;j<tl.size();j++) - { - const TypeImpl* t = findTypeImpl(tl[j].getURI(), - tl[j].getName()); - - if (t == 0) return false; - if (!compareTypes(t,tl[j]))return false; - } - return true; - } - else - { - return checkType(d->getType()); - } -} - -bool DataFactoryImpl::generateInterface(const char* fileroot, const char* factoryname) -{ - - FILE* header; - FILE* body; - - if ((fileroot == 0) || (strlen(fileroot) == 0)) return false; - - if (factoryname == 0 || (strlen(factoryname) == 0)) return false; - - - char *headername = new char[strlen(fileroot) + 5]; - char *bodyname = new char[strlen(fileroot) + 5]; - strcpy(headername,fileroot); - strcpy(bodyname,fileroot); - strcat(headername,".h"); - strcat(bodyname,".cpp"); - - // here we should check the files - and if they are present with - // contents we should read them, and merge the new generated code - // I think the way to do that is to allow sections in between comment - // pairs in three locations: - // a) outside any method in the CPP file. - // b) in the header file anywhere. - // c) inside method definitions in cpp, either before, or after the - // entire generated contents. - // - // - - header = fopen(headername,"w+"); - if (header == 0) return false; - - body = fopen(bodyname,"w+"); - if (body == 0) return false; - - - fprintf(header,"/*******************************************\n"); - fprintf(header," * Generated Typesafe Interface Header *\n"); - fprintf(header," *******************************************/\n\n\n"); - fprintf(header,"#include \"commonj/sdo/SDO.h\"\n"); - fprintf(header,"using namespace commonj::sdo;\n\n\n"); - - fprintf(body,"/*******************************************\n"); - fprintf(body," * Generated Typesafe Interface Body *\n"); - fprintf(body," *******************************************/\n\n\n"); - fprintf(body,"#include \"%s\"\n",headername); - fprintf(body,"using namespace commonj::sdo;\n\n\n"); - - delete headername; - delete bodyname; - - try { - - int nscount; - - TypeList tl = getTypes(); - - // forward declarations and smart pointers - - fprintf(header,"/*******************************************\n"); - fprintf(header," * Forward declarations and smart pointers *\n"); - fprintf(header," *******************************************/\n\n\n"); - - int i; - for (i=0;i<tl.size();i++) - { - nscount = 0; - - if (!strcmp(tl[i].getURI(),"commonj.sdo")) continue; - - const char *uri = tl[i].getURI(); - char *c = (char*)strchr(uri,'.'); - - if (c == 0) - { - fprintf(header,"namespace %s{\n",uri); - nscount = 1; - } - else - { - char* buf = new char[strlen(uri) + 1]; - strcpy(buf, uri); - c = buf; - char* c1; - do { - c1 = strchr(c,'.'); - if (c1) *c1 = 0; - fprintf(header,"namespace %s{\n", c); - nscount++; - if (c1) c = c1+1; - } while (c1 != 0); - delete buf; - } - - const char* name = tl[i].getName(); - - fprintf(header," class %s;\n",name); - fprintf(header," typedef RefCountingPointer<%s> %sPtr;\n", - name, name); - - for (int i=0;i<nscount;i++) - { - fprintf(header,"}\n"); - } - } - fprintf(header,"\n\n"); - fprintf(header,"/*******************************************\n"); - fprintf(header," * The Data factory *\n"); - fprintf(header," *******************************************/\n\n\n"); - - fprintf(header,"class %sDataFactory {\n", factoryname); - fprintf(header," public:\n"); - fprintf(header," static %sDataFactory* get%sDataFactory();\n", - factoryname, factoryname); - - for (i=0;i<tl.size();i++) - { - - if (!strcmp(tl[i].getURI(),"commonj.sdo")) continue; - - const char *uri = tl[i].getURI(); - const char *name = tl[i].getName(); - char* the_uri = (char*) strchr(uri,'.'); - - if (the_uri == 0) - { - the_uri = new char[strlen(uri) + 1]; - strcpy(the_uri,uri); - } - else - { - the_uri = new char[2 * strlen(uri) + 1]; - int jj=0; - for (int ii=0;ii<strlen(uri);ii++) - { - if (uri[ii] == '.') - { - the_uri[jj++]=':'; - the_uri[jj++]=':'; - } - else - { - the_uri[jj++] = uri[ii]; - } - } - the_uri[jj] = 0; - } - - fprintf(header," %s::%sPtr create%s();\n", the_uri, name, name); - - fprintf(body,"%s::%sPtr %sDataFactory::create%s()\n",the_uri, name, factoryname, name); - fprintf(body,"{\n"); - fprintf(body," DataObjectPtr dob = the_factory->create(\"%s\",\"%s\");\n", - tl[i].getURI(),name); - fprintf(body," %s::%s* the_ob = new %s::%s(dob);\n",the_uri,name,the_uri,name); - fprintf(body," return the_ob;\n"); - fprintf(body,"}\n\n"); - - delete the_uri; - - } - - fprintf(header," DataFactory* getDataFactory()\n"); - fprintf(header," {\n"); - fprintf(header," return (DataFactory*)the_factory;\n"); - fprintf(header," }\n"); - fprintf(header," private:\n"); - fprintf(header," DataFactoryPtr the_factory;\n"); - fprintf(header,"};\n"); - - fprintf(header,"\n\n"); - - fprintf(body,"%sDataFactory* %sDataFactory::get%sDataFactory()\n", - factoryname,factoryname,factoryname); - fprintf(body,"{\n"); - fprintf(body," %sDataFactory* t = new %sDataFactory();\n", - factoryname, factoryname); - fprintf(body," t->the_factory = DataFactory::getDataFactory();\n"); - fprintf(body," return t;\n"); - fprintf(body,"}\n\n"); - - - fprintf(header,"/*******************************************\n"); - fprintf(header," * DataObject Type definitions *\n"); - fprintf(header," *******************************************/\n\n\n"); - - - for (i=0;i<tl.size();i++) - { - nscount = 0; - - if (!strcmp(tl[i].getURI(),"commonj.sdo")) continue; - const char *uri = tl[i].getURI(); - char *c = (char*) strchr(uri,'.'); - - if (c == 0) - { - fprintf(header,"namespace %s{\n",uri); - fprintf(body, "namespace %s{\n",uri); - nscount = 1; - } - else - { - char* buf = new char[strlen(uri) + 1]; - strcpy(buf, uri); - c = buf; - char* c1; - do { - c1 = strchr(c,'.'); - if (c1) *c1 = 0; - fprintf(header,"namespace %s{\n", c); - fprintf(body, "namespace %s{\n", c); - nscount++; - if (c1) c = c1+1; - } while (c1 != 0); - delete buf; - } - - - const char* name = tl[i].getName(); - - fprintf(header," class %s :public RefCountingObject {\n", name); - fprintf(header," public:\n"); - fprintf(header," %s(DataObject* d);",name); - - // construction from a data object - - fprintf(body,"%s::%s(DataObject* d)\n",name,name); - fprintf(body,"{\n"); - fprintf(body," the_object = d;\n"); - fprintf(body," the_object->setUserData((void*)this);\n"); - fprintf(body,"}\n\n\n"); - - - - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - const char* pname = pl[j].getName(); - - if (pl[j].isMany()) - { - fprintf(header," DataObjectList& get%s();\n",pname); - fprintf(body, "DataObjectList& %s::get%s\n{\n",name,pname); - fprintf(body, " return the_object->getList(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - } - else - { - if (pl[j].getType().isDataType()) - { - switch (pl[j].getTypeEnum()) - { - case Type::BooleanType: - fprintf(header," bool get%s();\n",pname); - fprintf(body, "bool %s::get%s\n(){\n",name, pname); - fprintf(body, " return the_object->getBoolean(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(bool b);\n",pname); - fprintf(body, "void %s::set%s(bool b)\n{\n",name, pname); - fprintf(body, " the_object->setBoolean(\"%s\",b);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::ByteType: - - fprintf(header," char get%s();\n",pname); - fprintf(body, "char %s::get%s\n{\n",name, pname); - fprintf(body, " return the_object->getByte(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(char c);\n",pname); - fprintf(body, "void %s::set%s(char c)\n{\n",name, pname); - fprintf(body, " the_object->setByte(\"%s\",c);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::BytesType: - - fprintf(header," unsigned int get%s(char *buf, unsigned int len);\n",pname); - fprintf(body, "unsigned int %s::get%s(char *buf, unsigned int len)\n{\n",name, - pname); - fprintf(body, " return the_object->getBytes(\"%s\", buf,len);\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(char *buf,unsigned int len);\n",pname); - fprintf(body, "void %s::set%s(char *buf, unsigned int len)\n{\n",name, - pname); - fprintf(body, " the_object->setBytes(\"%s\", buf,len);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::CharacterType: - - fprintf(header," wchar_t get%s();\n",pname); - fprintf(body, "wchar_t %s::get%s\n{\n",name, pname); - fprintf(body, " return the_object->getCharacter(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(wchar_t c);\n",pname); - fprintf(body, "void %s::set%s(wchar_t c)\n{\n",name, pname); - fprintf(body, " the_object->setCharacter(\"%s\",c);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::DateType: - - fprintf(header," SDODate get%s();\n",pname); - fprintf(body, "SDODate %s::get%s\n{\n",name, pname); - fprintf(body, " return the_object->getDate(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(const SDODate c);\n",pname); - fprintf(body, "void %s::set%s(const SDODate c)\n{\n",name, pname); - fprintf(body, " the_object->setDate(\"%s\",c);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::DoubleType: - - fprintf(header," long double get%s();\n",pname); - fprintf(body, "long double %s::get%s\n{\n",name, pname); - fprintf(body, " return the_object->getDouble(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(long double c);\n",pname); - fprintf(body, "void %s::set%s(long double c)\n{\n",name, pname); - fprintf(body, " the_object->setDouble(\"%s\",c);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::FloatType: - - fprintf(header," float get%s();\n",pname); - fprintf(body, "float %s::get%s\n{\n",name, pname); - fprintf(body, " return the_object->getFloat(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(float c);\n",pname); - fprintf(body, "void %s::set%s(float c)\n{\n",name, pname); - fprintf(body, " the_object->setFloat(\"%s\",c);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::IntegerType: - - fprintf(header," long get%s();\n",pname); - fprintf(body, "long %s::get%s\n{\n",name, pname); - fprintf(body, " return the_object->getInteger(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(long c);\n",pname); - fprintf(body, "void %s::set%s(long c)\n{\n",name, pname); - fprintf(body, " the_object->setInteger(\"%s\",c);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::LongType: - - fprintf(header," int64_t get%s();\n",pname); - fprintf(body, "int64_t %s::get%s\n{\n",name, pname); - fprintf(body, " return the_object->getLong(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(int64_t c);\n",pname); - fprintf(body, "void %s::set%s(int64_t c)\n{\n",name, pname); - fprintf(body, " the_object->setLong(\"%s\",c);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::ShortType: - - fprintf(header," short get%s();\n",pname); - fprintf(body, "short %s::get%s\n{\n",name, pname); - fprintf(body, " return the_object->getShort(\"%s\");\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(short c);\n",pname); - fprintf(body, "void %s::set%s(short c)\n{\n",name, pname); - fprintf(body, " the_object->setShort(\"%s\",c);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - case Type::StringType: - case Type::UriType: - - fprintf(header," unsigned int get%s(wchar_t *buf, unsigned int len);\n",pname); - fprintf(body, "unsigned int %s::get%s(wchar_t *buf, unsigned int len)\n{\n",name, - pname); - fprintf(body, " return the_object->getString(\"%s\", buf,len);\n",pname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(wchar_t *buf,unsigned int len);\n",pname); - fprintf(body, "void %s::set%s(wchar_t *buf, unsigned int len)\n{\n",name, - pname); - fprintf(body, " the_object->setString(\"%s\", buf,len);\nreturn;\n",pname); - fprintf(body, "}\n\n"); - - break; - - default: - fprintf(header,"/* unknown primitive:%s */\n",pname); - break; - } - } - else - - { - const char* ttname = pl[j].getType().getName(); - - fprintf(header," %sPtr get%s();\n",ttname, pname); - - fprintf(body, "%sPtr %s::get%s()\n{\n", - ttname, - name, - pname); - fprintf(body, "DataObjectPtr dob = the_object->getDataObject(\"%s\");\n",pname); - fprintf(body, "DataObject* d = (DataObject*)dob;\n"); - fprintf(body,"%s* value = (%s*)(d->getUserData());\n",ttname, ttname); - fprintf(body, " return (%s*)value;\n", ttname); - fprintf(body, "}\n\n"); - fprintf(header," void set%s(%sPtr dob);\n",pname, ttname); - fprintf(body, "void %s::set%s(%sPtr dob)\n{\n", - name,pname,ttname); - fprintf(body,"%s* ptr = dob;\n", ttname); - fprintf(body,"DataObject* the_obj = ptr->getDataObject();\n"); - fprintf(body,"the_object->setDataObject(\"%s\", the_obj);\nreturn;\n", - pname); - fprintf(body, "}\n\n"); - - } - } - } // for - - // now print the contained data object - - fprintf(header," DataObject* getDataObject()\n"); - fprintf(header," {\n"); - fprintf(header," return (DataObject*)the_object;\n"); - fprintf(header," }\n"); - fprintf(header," private:\n"); - fprintf(header," DataObjectPtr the_object;\n"); - - fprintf(header,"};\n"); - for (int i=0;i<nscount;i++) - { - fprintf(header,"}\n"); - fprintf(body,"}\n"); - } - } - fclose (header); - fclose (body); - } - catch (SDORuntimeException e) - { - cout << "Exception in code Generation" << endl; - cout << e << endl; - } - return true; -} - -bool DataFactoryImpl::generateInterface(const SDOString& fileroot, const SDOString& factoryname) -{ - return generateInterface(fileroot.c_str(), factoryname.c_str()); -} - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h deleted file mode 100644 index 046160bc71..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h +++ /dev/null @@ -1,716 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/13 08:35:04 $ */ - -#ifndef _DataFactoryIMPL_H_ -#define _DataFactoryIMPL_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/TypeImpl.h" -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/PropertyImpl.h" -#include "commonj/sdo/SDOXMLString.h" - - -#include <map> - - - -namespace commonj{ -namespace sdo{ - - typedef std::map<std::string, PropertyImpl> propertyMap; - -/** - * DataFactoryImpl implements the abstract class DataFactory. - * DataFactoryImpl holds metadata and creates DataObjects. - * - * The DataFactory holds properties and types loaded from XSD, or - * created using the DataFactory API. - */ -class DataFactoryImpl : public DataFactory -{ -public: - DataFactoryImpl(); - virtual ~DataFactoryImpl(); - - DataFactoryImpl(const DataFactoryImpl& inmdg); - DataFactoryImpl& operator=(const DataFactoryImpl& inmdg); - - virtual void addType(const char* uri, const char* inTypeName, - bool isSeqenced = false, - bool isOpen = false, - bool isAbstract = false, - bool isDataType = false - ); - - virtual void addType(const SDOString& uri, const SDOString& inTypeName, - bool isSeqenced = false, - bool isOpen = false, - bool isAbstract = false, - bool isDataType = false - ); - - virtual void addType(const char* uri, const char* inTypeName, - bool isSeqenced , - bool isOpen , - bool isAbstract , - bool isDataType , - bool isFromList ); - - virtual void addType(const SDOString& uri, const SDOString& inTypeName, - bool isSeqenced , - bool isOpen , - bool isAbstract , - bool isDataType , - bool isFromList ); - - virtual void addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool isMany = false); - - virtual void addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool isMany = false); - - virtual void addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const Type& propType, - bool isMany = false); - - virtual void addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const Type& propType, - bool isMany = false); - - virtual void addPropertyToType(const Type& type, - const char* propname, - const Type& propType, - bool isMany = false); - - virtual void addPropertyToType(const Type& type, - const SDOString& propname, - const Type& propType, - bool isMany = false); - - virtual void addPropertyToType(const Type& type, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool isMany = false); - - virtual void addPropertyToType(const Type& type, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool isMany = false); - - virtual void addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool isMany , - bool isReadOnly, - bool isContainment); - - virtual void addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool isMany , - bool isReadOnly, - bool isContainment); - - virtual void addPropertyToType(const char* uri, - const char* inTypeName, - const char* propname, - const Type& propType, - bool isMany, - bool isReadOnly, - bool isContainment); - - virtual void addPropertyToType(const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const Type& propType, - bool isMany, - bool isReadOnly, - bool isContainment); - - virtual void addPropertyToType(const Type& type, - const char* propname, - const Type& propType, - bool isMany, - bool isReadOnly, - bool isContainment); - - virtual void addPropertyToType(const Type& type, - const SDOString& propname, - const Type& propType, - bool isMany, - bool isReadOnly, - bool isContainment); - - virtual void addPropertyToType(const Type& type, - const char* propname, - const char* propTypeUri, - const char* propTypeName, - bool isMany, - bool isReadOnly, - bool isContainment); - - virtual void addPropertyToType(const Type& type, - const SDOString& propname, - const SDOString& propTypeUri, - const SDOString& propTypeName, - bool isMany, - bool isReadOnly, - bool isContainment); - - - virtual void setBaseType( const Type& type, - const Type& base, - bool isRestriction = false); - - virtual void setBaseType( const char* typeuri, - const char* typenam, - const char* baseuri, - const char* basename, - bool isRestriction = false); - - virtual void setBaseType( const SDOString& typeuri, - const SDOString& typenam, - const SDOString& baseuri, - const SDOString& basename, - bool isRestriction = false); - - virtual const Type& getType(const char* uri, const char* inTypeName) const; - - virtual const Type& getType(const SDOString& uri, const SDOString& inTypeName) const; - - virtual TypeList getTypes() const; - - virtual DataObjectPtr create(const char* uri, const char* typeName) ; - - virtual DataObjectPtr create(const SDOString& uri, const SDOString& typeName) ; - - virtual DataObjectPtr create(const Type& type) ; - - virtual void setAlias(const char* typeuri, - const char* typenam, - const char* alias) ; - - virtual void setAlias(const SDOString& typeuri, - const SDOString& typenam, - const SDOString& alias) ; - - virtual void setAlias(const char* typeuri, - const char* typname, - const char* propname, - const char* alias) ; - - virtual void setAlias(const SDOString& typeuri, - const SDOString& typname, - const SDOString& propname, - const SDOString& alias) ; - - virtual void setOpposite (const Type& type, - const char* propname, - const Type& opptype, - const char* opppropname) ; - - virtual void setOpposite (const Type& type, - const SDOString& propname, - const Type& opptype, - const SDOString& opppropname) ; - - - virtual void setPropertySubstitute( - const char* uri, - const char* inTypeName, - const char* propname, - const char* subname, - const char* subTypeUri, - const char* subTypeName); - - virtual void setPropertySubstitute( - const SDOString& uri, - const SDOString& inTypeName, - const SDOString& propname, - const SDOString& subname, - const SDOString& subTypeUri, - const SDOString& subTypeName); - - virtual void setPropertySubstitute( - const Type& containertype, - const char* propname, - const char* subname, - const Type& subtype); - - virtual void setPropertySubstitute( - const Type& containertype, - const SDOString& propname, - const SDOString& subname, - const Type& subtype); - - //////////////////////////////////////////////////////// - virtual void setDefault( - const Type& t, - const char* propname, - bool b ) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname, - bool b ) ; - - virtual void setDefault( - const Type& t, - const char* propname , - char c) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - char c) ; - - virtual void setDefault( - const Type& t, - const char* propname , - wchar_t c) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - wchar_t c) ; - - virtual void setDefault( - const Type& t, - const char* propname , - char* c) ; - -// #pragma message( "GMW: Unimplemented method, writable string parameter" ) -// virtual void setDefault( -// const Type& t, -// const SDOString& propname , -// SDOString& c) ; - - virtual void setDefault( - const Type& t, - const char* propname , - short s) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - short s) ; - - - -#if __WORDSIZE !=64 - virtual void setDefault( - const Type& t, - const char* propname , - long l) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - long l) ; - -#endif - - virtual void setDefault( - const Type& t, - const char* propname , - int64_t i) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - int64_t i) ; - - virtual void setDefault( - const Type& t, - const char* propname , - float f) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - float f) ; - - virtual void setDefault( - const Type& t, - const char* propname , - long double d) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - long double d) ; - - virtual void setDefault( - const Type& t, - const char* propname , - const SDODate d) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - const SDODate d) ; - - virtual void setDefault( - const Type& t, - const char* propname , - const wchar_t* c, - unsigned int len) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - const wchar_t* c, - unsigned int len) ; - - virtual void setDefault( - const Type& t, - const char* propname , - const char* c, - unsigned int len) ; - - virtual void setDefault( - const Type& t, - const SDOString& propname , - const SDOString& c, - unsigned int len) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname, - bool b ) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname, - bool b ) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - char c) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - char c) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - wchar_t c) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - wchar_t c) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - char* c) ; - -// #pragma message( "GMW: Unimplemented method, writable string parameter" ) -// virtual void setDefault( -// const SDOString& typuri, -// const SDOString& typnam, -// const SDOString& propname , -// SDOString& c) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - short s) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - short s) ; - -#if __WORDSIZE !=64 - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - long l) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - long l) ; - -#endif - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - int64_t i) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - int64_t i) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - float f) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - float f) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - long double d) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - long double d) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - const SDODate d) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - const SDODate d) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - const wchar_t* c, - unsigned int len) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - const wchar_t* c, - unsigned int len) ; - - virtual void setDefault( - const char* typuri, - const char* typnam, - const char* propname , - const char* c, - unsigned int len) ; - - virtual void setDefault( - const SDOString& typuri, - const SDOString& typnam, - const SDOString& propname , - const SDOString& c, - unsigned int len) ; - - virtual void setDASValue( - const Type& type, - const char* name, - DASValue* value); - - virtual void setDASValue( - const Type& type, - const SDOString& name, - DASValue* value); - - virtual void setDASValue( - const char* typeuri, - const char* typenam, - const char* name, - DASValue* value); - - virtual void setDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& name, - DASValue* value); - - virtual DASValue* getDASValue( - const Type& type, - const char* name) const; - - virtual DASValue* getDASValue( - const Type& type, - const SDOString& name) const; - - virtual DASValue* getDASValue( - const char* typeuri, - const char* typenam, - const char* name) const; - - virtual DASValue* getDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& name) const; - - virtual void setDASValue( - const Type& type, - const char* propertyName, - const char* name, - DASValue* value); - - virtual void setDASValue( - const Type& type, - const SDOString& propertyName, - const SDOString& name, - DASValue* value); - - virtual void setDASValue( - const char* typeuri, - const char* typenam, - const char* propertyName, - const char* name, - DASValue* value); - - virtual void setDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& propertyName, - const SDOString& name, - DASValue* value); - - virtual DASValue* getDASValue( - const Type& type, - const char* propertyName, - const char* name) const; - - virtual DASValue* getDASValue( - const Type& type, - const SDOString& propertyName, - const SDOString& name) const; - - virtual DASValue* getDASValue( - const char* typeuri, - const char* typenam, - const char* propertyName, - const char* name) const; - - virtual DASValue* getDASValue( - const SDOString& typeuri, - const SDOString& typenam, - const SDOString& propertyName, - const SDOString& name) const; - - virtual void resolve(); - -// TODO: Remove char* form of method since it is not exposed to users - const Type* findType (const char* uri, const char* inTypeName) const; - const Type* findType(const SDOString uri, const SDOString inTypeName) const; - -// TODO: Remove char* form of method since it is not exposed to users - const TypeImpl* findTypeImpl (const char* uri, const char* inTypeName) const; - const TypeImpl* findTypeImpl(const SDOString& uri, const SDOString& inTypeName) const; - - void addOpenProperty(const PropertyImpl& prop); -// TODO: Remove char* form of method since it is not exposed to users - void removeOpenProperty(const char* name); - void removeOpenProperty(const SDOString& name); - const propertyMap& getOpenProperties(); -// TODO: Remove char* form of method since it is not exposed to users - virtual const TypeImpl& getTypeImpl(const char* uri, const char* inTypeName) const; - virtual const TypeImpl& getTypeImpl(const SDOString& uri, const SDOString& inTypeName) const; - virtual const SDOString& getRootElementName() const; -// TODO: Remove char* form of method since it is not exposed to users - virtual void setRootElementName(const char* ren); - virtual void setRootElementName(const SDOString& ren); - virtual bool checkType(const Type& t); - virtual bool isCompatible(DataFactory* df, DataObject* d); - virtual bool compareTypes(const TypeImpl* t1, const Type& t2); - - virtual bool generateInterface(const char* fileroot, const char* factoryname); - - virtual bool generateInterface(const SDOString& fileroot, const SDOString& factoryname); - -private: - typedef std::map<std::string, TypeImpl*> TYPES_MAP; - TYPES_MAP types; - - std::vector<DataFactory*> compatibleFactories; - - SDOString rootElementName; - - propertyMap openProperties; - - // Need to validate and 'lock' the data model for base types to - // work properly. - - bool isResolved; - - bool recursiveCheck(TypeImpl* cs, TypeImpl* t); - bool checkForValidChangeSummary(TypeImpl* t); - - typedef std::vector<TypeImpl*> TYPES_VECTOR; - TYPES_VECTOR cstypes; - -// TODO: Remove char* form of method since it is not exposed to users - char* getFullTypeName(const char* uri, const char* inTypeName) const; - char* getFullTypeName(const SDOString& uri, const SDOString& inTypeName) const; -// TODO: Remove char* form of method since it is not exposed to users - char* getAliasTypeName(const char* uri, const char* inTypeName) const; - char* getAliasTypeName(const SDOString& uri, const SDOString& inTypeName) const; - - void copyTypes(const DataFactoryImpl& inmdg); -}; -}; -}; -#endif // _DataFactoryIMPL_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraph.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraph.cpp deleted file mode 100644 index a367853f06..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraph.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/disable_warn.h" -#include "commonj/sdo/DataGraph.h" -#include "commonj/sdo/SDORuntimeException.h" - -namespace commonj{ - namespace sdo { - - DataGraph::~DataGraph() - { - } - - - }; -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraph.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraph.h deleted file mode 100644 index 715223992a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraph.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _DATAGRAPH_H_ -#define _DATAGRAPH_H_ - -#include "commonj/sdo/RefCountingObject.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/export.h" -#include "commonj/sdo/DataObject.h" - - -namespace commonj{ -namespace sdo{ - -/** - * DataGraph holds a whole graph of data objects, starting from - * a single root. This class is not currently used in the C++ - * implementation, but will be required by DAS implementations. - */ - -class DataGraph : public RefCountingObject -{ - public: - virtual ~DataGraph(); - - /** - * - * Gets the root data object of this graph. - */ - - - virtual SDO_API DataObjectPtr getRootObject() = 0; - - /** - * - * gets the name of the element from which the root - * object was loaded (The XML definition). - */ - virtual SDO_API const char* getRootElementName() = 0; - - /** - * Sets the Root data object. - * - */ - virtual SDO_API void setRootObject(DataObjectPtr dob) = 0; - - /** - * Creates a root data object - used by DAS implementations. - * - */ - - virtual SDO_API DataObjectPtr createRootObject(const char* uri, - const char* name) = 0; - - /** - * Creates a root data object - used by DAS implementations. - * - */ - - virtual SDO_API DataObjectPtr createRootObject(const Type& t) = 0; - - /** - * Gets the change summary if there is one. - * - */ - - virtual SDO_API ChangeSummaryPtr getChangeSummary() = 0; - - /** - * Gets a type from the data factory. - * - */ - - virtual SDO_API const Type& getType(const char* uri, - const char* name) = 0; - - -}; -}; -}; - -#endif //_DATAGRAPH_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraphImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraphImpl.cpp deleted file mode 100644 index 636dbed25f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraphImpl.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/DataGraphImpl.h" -#include "commonj/sdo/DataObjectImpl.h" -#include "commonj/sdo/SDORuntimeException.h" - - - -namespace commonj{ - namespace sdo { - -/** - * DataGraphImpl implements DataGraph. - * DataGraph holds a whole graph of data objects, starting from - * a single root. This class is not currently used in the C++ - * implementation, but will be required by DAS implementations. - */ - DataGraphImpl::~DataGraphImpl() - { - } - - DataGraphImpl::DataGraphImpl(DataFactoryPtr fac) - { - factory = fac; - root = 0; - } - - - DataObjectPtr DataGraphImpl::getRootObject() - { - return root; - } - - const char* DataGraphImpl::getRootElementName() - { - if (root == 0) return 0; - return root->getInstanceProperties()[0].getName(); - } - - void DataGraphImpl::setRootObject(DataObjectPtr dob) - { - if (root != 0) - { - SDO_THROW_EXCEPTION("setRootObject",SDOUnsupportedOperationException, - "Root data object already exists"); - } - root = dob; - } - - - DataObjectPtr DataGraphImpl::createRootObject(const char* uri, - const char* name) - { - if (root != 0) - { - SDO_THROW_EXCEPTION("createRootObject",SDOUnsupportedOperationException, - "Root data object already exists"); - } - root = factory->create(uri,name); - if (root->getInstanceProperties()[0].getType().isDataType()) - { - SDO_THROW_EXCEPTION("createRootObject",SDOUnsupportedOperationException, - "Root data object cannot have a datatype property at element 0"); - } - return root; - } - - - DataObjectPtr DataGraphImpl::createRootObject(const Type& t) - { - if (root != 0) - { - SDO_THROW_EXCEPTION("createRootObject",SDOUnsupportedOperationException, - "Root data object already exists"); - } - root = factory->create(t); - if (root->getInstanceProperties()[0].getType().isDataType()) - { - SDO_THROW_EXCEPTION("createRootObject",SDOUnsupportedOperationException, - "Root data object cannot have a datatype property at element 0"); - } - return root; - } - - - ChangeSummaryPtr DataGraphImpl::getChangeSummary() - { - if (!root) return 0; - return root->getChangeSummary(); - } - - - const Type& DataGraphImpl::getType(const char* uri, - const char* name) - { - return factory->getType(uri,name); - } - - }; -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraphImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraphImpl.h deleted file mode 100644 index 15cc994171..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataGraphImpl.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#ifndef _DATAGRAPHIMPL_H_ -#define _DATAGRAPHIMPL_H_ -#include "commonj/sdo/export.h" -#include "commonj/sdo/DataGraph.h" -#include "commonj/sdo/disable_warn.h" - - -namespace commonj{ -namespace sdo{ - -/** - * DataGraphImpl implements the abstract class DataGraph. - * DataGraph holds a whole graph of data objects, starting from - * a single root. This class is not currently used in the C++ - * implementation, but will be required by DAS implementations. - */ - -class DataGraphImpl : public DataGraph -{ - public: - virtual ~DataGraphImpl(); - - SDO_API DataGraphImpl(DataFactoryPtr fac); - - /** - * Sets the root data object. - * - */ - - virtual SDO_API void setRootObject(DataObjectPtr dob); - - /** - * Gets the root data object. - * - */ - - virtual DataObjectPtr getRootObject(); - - /** - * Gets the name of the root data element (from the XML - * description). - * - */ - - virtual const char* getRootElementName(); - - /** - * Creates the root data object - for use by DAS implementations - * - */ - - virtual DataObjectPtr createRootObject(const char* uri, - const char* name); - - /** - * Creates the root data object - for use by DAS implementations - * - */ - - - virtual DataObjectPtr createRootObject(const Type& t); - - /** - * - * Gets the change summary if there is one. - */ - - virtual ChangeSummaryPtr getChangeSummary(); - - /** - * - * Gets a type from the data factory. - */ - - virtual const Type& getType(const char* uri, - const char* name); - - private: - - DataFactoryPtr factory; - DataObjectPtr root; - -}; -}; -}; - -#endif //_DATAGRAPHIMPL_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObject.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObject.cpp deleted file mode 100644 index 190da0649e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObject.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:14 $ */ - -#include "commonj/sdo/DataObject.h" - -namespace commonj{ -namespace sdo{ - - - DataObject::~DataObject() - { - } -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObject.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObject.h deleted file mode 100644 index 0e538b27ab..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObject.h +++ /dev/null @@ -1,550 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/02 16:41:30 $ */ - -#ifndef _DATAOBJECT_H_ -#define _DATAOBJECT_H_ -#include "commonj/sdo/export.h" - - -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/DataObjectList.h" -#include "commonj/sdo/PropertyList.h" - - -namespace commonj{ -namespace sdo{ - -class DataGraph; -class DataObjectList; -class DataFactory; -class ChangeSummary; - - - /** - * DataObjects are the non-primitive members of a Data graph. - *<p> - * A data object is a representation of some structured data. - * it is the fundamental component in the SDO (Service Data Objects) package. - * Data objects support reflection, path-based accesss, convenience creation - * and deletion methods,and the ability to be part of a data graph. - * Each data object holds its data as a series of properties. - * Properties can be accessed by name, property index, or using the property - * meta object itself. - * <p> - * A data object can also contain references to other data objects, through - * reference-type properties. - * <p> - * A data object has a series of convenience accessors for its properties. - * These methods either use a path (String), a property index, - * or the property's meta object itself, to identify the property. - * Some examples of the path-based accessors are as follows: - * <p> - * DataObjectPtr company = ...;<br> - * company->getString("name");<br> - * company->setString("name", "acme");<br> - * company->getString("department.0/name")<br> - * company->getString("department[1]/name")<br> - * (Note .n indexes from 0, whilst [] indexes from 1.<br> - * company->getDataObject("department[number=123]") returns the department where number=123<br> - * company->getDataObject("..") returns the containing data object<br> - * company->getDataObject("/") returns the root containing data object<br> - * There are specific accessors for the primitive types and commonly used - * data types like String. - */ - -class DataObject : public RefCountingObject -{ - public: - virtual ~DataObject(); - - /** - * - * Introspection - properties and types - */ - - /** getPropertyIndex gets the unique index of a property - * - * A property of a data object has a unique index associated with it. - * This method gets a property index for this object from the property, - * or throw SDOPropertyNotFoundException if the property is not part - * of this data object. - */ - - virtual unsigned int SDO_API getPropertyIndex(const Property& p) = 0; - - - /** getInstanceProperties gets the props of the current object. - * - * Returns a read-only List of the Properties currently used in this DataObject. - * This list will contain all of the properties in getType().getProperties() - * and any properties where isSet(property) is true. - * For example, properties resulting from the use of - * open or mixed XML content are present if allowed by the Type. - * The list does not contain duplicates. - * The order of the properties in the list begins with getType().getProperties() - * and the order of the remaining properties is determined by the implementation. - * The same list will be returned unless the DataObject is updated so that - * the contents of the list change - * Returns the list of Properties currently used in this DataObject. - */ - - virtual SDO_API PropertyList getInstanceProperties() = 0; - - /** - * See if the property currently exists - */ - - virtual SDO_API bool hasProperty(const char* name) = 0; - virtual SDO_API bool hasProperty(const SDOString& name) = 0; - /** - * These are just like getType().getProperty(), but may return - * values other than the property list for open types. - */ - - virtual const Property& getProperty(unsigned int index) = 0; - - virtual const Property& getProperty(const char* prop) = 0; - virtual const Property& getProperty(const SDOString& prop) = 0; - - - /** - * return the data factory which created this object - */ - - virtual SDO_API DataFactory* getDataFactory() = 0; - - /** getContainer get the containing object - * - * Returns the containing data object - * or 0 if there is no container. - */ - - virtual SDO_API DataObjectPtr getContainer() = 0; - - /** getContainmentProperty returns the property containing this object - * - * Return the Property of the data object containing this data object - * or throw an SDOPropertyNotFoundException if there is no container. - */ - - virtual SDO_API const Property& getContainmentProperty() = 0; - - /** getType returns the data object's type. - * - * getType returns the data object's type. - * The type defines the properties available for reflective access. - */ - - virtual SDO_API const Type& getType() = 0; - - /* getTypeEnum returns an enumerator for the type - * - * Returns an enumerator for the type for easy switching on basic types. - * The enumerator is part of the Type class - */ - - virtual SDO_API const Type::Types getTypeEnum() = 0; - - - - - - /** getDataObject returns a data object by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API DataObjectPtr getDataObject(const SDOString& path) = 0; - virtual SDO_API DataObjectPtr getDataObject(const char* path) = 0; - virtual SDO_API DataObjectPtr getDataObject(unsigned int propertyIndex) = 0; - virtual SDO_API DataObjectPtr getDataObject(const Property& property) = 0; - - /** setDataObject sets a value by path, index or property - * - * Sets a property of either this object or an object reachable from it, - * as identified by the specified path, - * to the specified value. - */ - - - virtual SDO_API void setDataObject(const char* path, DataObjectPtr value) = 0; - virtual SDO_API void setDataObject(const SDOString& path, DataObjectPtr value) = 0; - virtual SDO_API void setDataObject(unsigned int propertyIndex, DataObjectPtr value) = 0; - virtual SDO_API void setDataObject(const Property& property, DataObjectPtr value) = 0; - - /** getBoolean returns a boolean by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API bool getBoolean(const char* path) = 0; - virtual SDO_API bool getBoolean(const SDOString& path) = 0; - virtual SDO_API bool getBoolean(unsigned int propindex) = 0; - virtual SDO_API bool getBoolean(const Property& p) = 0; - - virtual SDO_API void setBoolean(const char* path, bool b) = 0; - virtual SDO_API void setBoolean(unsigned int propindex, bool b) = 0; - virtual SDO_API void setBoolean(const Property& p, bool b) = 0; - - /** getByte returns a char by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API char getByte(const char* path) = 0; - virtual SDO_API char getByte(unsigned int propindex) = 0; - virtual SDO_API char getByte(const Property& p) = 0; - - virtual SDO_API void setByte(const char* path, char c) = 0; - virtual SDO_API void setByte(unsigned int propindex, char c) = 0; - virtual SDO_API void setByte(const Property& p, char c) = 0; - - /** getCharacter returns a wchar_t by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API wchar_t getCharacter(const char* path) = 0; - virtual SDO_API wchar_t getCharacter(unsigned int propindex) = 0; - virtual SDO_API wchar_t getCharacter(const Property& p) = 0; - - virtual SDO_API void setCharacter(const char* path, wchar_t c) = 0; - virtual SDO_API void setCharacter(unsigned int propindex, wchar_t c) = 0; - virtual SDO_API void setCharacter(const Property& p, wchar_t c) = 0; - - - /** getlength returns the length of a string - * - * Specific to Bytes and Characters data objects. This returns the - * length of the buffer required to hold the contents of the object. - * len = do->getLength("name"); - * buf = new char[len]; - * reallen = do->getBytes("name",buf,len); - */ - virtual SDO_API unsigned int getLength(const char* path) = 0; - virtual SDO_API unsigned int getLength(unsigned int propindex) = 0; - virtual SDO_API unsigned int getLength(const Property& p) = 0; - virtual SDO_API unsigned int getLength() = 0; - - - /** getBytes returns a byte buffer - * - * A DataObject of type Bytes holds an array of bytes as its value. These - * methods transfer the contents of that buffer into an array of chars allocated - * by the users program. The return value is the number of bytes actually - * copied. - * The byte array is not necessarily null terminated. If a null terminated - * C style string is required, then getCString is an alternative. - * The third paarameter is the length of the allocated buffer, which may be more - * than the length of the byte array. If the length specified is less than the - * length of the byte array, then only a portion of the - * byte array is returned. - */ - - - virtual SDO_API unsigned int getBytes(const char* path, char* buf, unsigned int max) = 0; - virtual SDO_API unsigned int getBytes(unsigned int propindex, char* buf, unsigned int max) = 0; - virtual SDO_API unsigned int getBytes(const Property& p, char* buf, unsigned int max) = 0; - - virtual SDO_API void setBytes(const char* path, const char* c, unsigned int length) = 0; - virtual SDO_API void setBytes(unsigned int propindex, const char* c, unsigned int length) = 0; - virtual SDO_API void setBytes(const Property& p, const char* c, unsigned int length) = 0; - - /** getString returns a wide char buffer - * - * A DataObject of type String holds an array of wide characters as its value. These - * methods transfer the contents of that buffer into an array of wchar_t allocated - * by the users program. The return value is the number of wchar_t actually - * copied. - * The array is not necessarily null terminated. - * The third paarameter is the length of the allocated buffer, which may be more - * than the length of the array. If the length specified is less than the - * length of the array, then only a portion of the array is returned. - */ - - virtual SDO_API unsigned int getString(const char* path , wchar_t* c, unsigned int max) = 0; - virtual SDO_API unsigned int getString(unsigned int propindex, wchar_t* c, unsigned int max) = 0; - virtual SDO_API unsigned int getString(const Property& p, wchar_t* c, unsigned int max) = 0; - - virtual SDO_API void setString(const char* path, const wchar_t* c, unsigned int length) = 0; - virtual SDO_API void setString(unsigned int propindex, const wchar_t* c, unsigned int length) = 0; - virtual SDO_API void setString(const Property& p, const wchar_t* c, unsigned int length) = 0; - - /** getDate returns an SDODate by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - virtual SDO_API const SDODate getDate(const char* path) = 0; - virtual SDO_API const SDODate getDate(unsigned int propindex) = 0; - virtual SDO_API const SDODate getDate(const Property& p) = 0; - - virtual SDO_API void setDate(const char* path, const SDODate d) = 0; - virtual SDO_API void setDate(unsigned int propindex, const SDODate d) = 0; - virtual SDO_API void setDate(const Property& p, const SDODate d) = 0; - - /** getDouble returns a long double by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API long double getDouble(const char* path) = 0; - virtual SDO_API long double getDouble(unsigned int propindex) = 0; - virtual SDO_API long double getDouble(const Property& p) = 0; - - virtual SDO_API void setDouble(const char* path, long double d) = 0; - virtual SDO_API void setDouble(unsigned int propindex, long double d) = 0; - virtual SDO_API void setDouble(const Property& p, long double d) = 0; - - /** getFloat returns a float by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API float getFloat(const char* path) = 0; - virtual SDO_API float getFloat(unsigned int propindex) = 0; - virtual SDO_API float getFloat(const Property& p) = 0; - - virtual SDO_API void setFloat(const char* path, float f) = 0; - virtual SDO_API void setFloat(unsigned int propindex, float f) = 0; - virtual SDO_API void setFloat(const Property& p, float f) = 0; - - /** getInteger returns a long by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API long getInteger(const char* path) = 0; - virtual SDO_API long getInteger(unsigned int propindex) = 0; - virtual SDO_API long getInteger(const Property& p) = 0; - - virtual SDO_API void setInteger(const char* path, long i) = 0; - virtual SDO_API void setInteger(unsigned int propindex, long i) = 0; - virtual SDO_API void setInteger(const Property& p, long i) = 0; - - /** getLong returns a int64_t by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API int64_t getLong(const char* path) = 0; - virtual SDO_API int64_t getLong(unsigned int propindex) = 0; - virtual SDO_API int64_t getLong(const Property& p) = 0; - - virtual SDO_API void setLong(const char* path, int64_t l) = 0; - virtual SDO_API void setLong(unsigned int propindex, int64_t l) = 0; - virtual SDO_API void setLong(const Property& p, int64_t l) = 0; - - /** getShort returns a short by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API short getShort(const char* path) = 0; - virtual SDO_API short getShort(unsigned int propindex) = 0; - virtual SDO_API short getShort(const Property& p) = 0; - - virtual SDO_API void setShort(const char* path, short s) = 0; - virtual SDO_API void setShort(unsigned int propindex, short s) = 0; - virtual SDO_API void setShort(const Property& p, short s) = 0; - - - /** getCString returns a null terminated string by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual SDO_API const char* getCString(const char* path) = 0; - virtual SDO_API const char* getCString(unsigned int propertyIndex) = 0; - virtual SDO_API const char* getCString(const Property& prop) = 0; - - virtual SDO_API void setCString(const char* path, const char* value) = 0; - virtual SDO_API void setCString(unsigned int propertyIndex, const char* value) = 0; - virtual SDO_API void setCString (const Property& prop, const char* value) = 0; - - - /** setNull sets a data object value to null. - * - * A DataObjectType or DataType value may be set or unset. If it is set, then - * it may have a value, or it may be set to null. A distinction is drawn between - * being unset, having the default value, being set and being null. - * When the value of an integer (for example) is returned as zero, it could have - * been set to zero, or it could be null. Use isNull() to verify. - */ - - virtual SDO_API void setNull(const char* path) = 0; - virtual SDO_API void setNull(unsigned int propertyIndex) = 0; - virtual SDO_API void setNull(const Property& prop) = 0; - - virtual SDO_API bool isNull(const char* path) = 0; - virtual SDO_API bool isNull(unsigned int propertyIndex) = 0; - virtual SDO_API bool isNull(const Property& prop) = 0; - - /** isSet test whether the value has been set - * - * Returns whether a property of either this object or an object reachable - * from it, as identified by the specified path, - * is considered to be set. - */ - - virtual SDO_API bool isSet(const char* path) = 0; - virtual SDO_API bool isSet(unsigned int propertyIndex) = 0; - virtual SDO_API bool isSet(const Property& property) = 0; - - - /** isValid shows true if the value is set or defaulted. - * - * A property can be set, null, or have a default value - all - * of these are valid. It can also be unset, and have no default - * in which case this returns false. - */ - - virtual SDO_API bool isValid(const char* path) = 0; - virtual SDO_API bool isValid(unsigned int propertyIndex) = 0; - virtual SDO_API bool isValid(const Property& property ) =0; - - /** unset unsets a value previously set. - * - * unsets a property of either this object or an object reachable - * from it, as identified by the specified path. - */ - - virtual SDO_API void unset(const char* path) = 0; - virtual SDO_API void unset(unsigned int propertyIndex) = 0; - virtual SDO_API void unset(const Property& property) = 0; - - /** setUserData sets a reserved field in the data object. - * - * Each data object has precisely one 32 bit slot available to - * be used by applications. This is not part of the data, its - * just a place to store anything for later retrieval. - */ - - virtual SDO_API void setUserData(const char* path,void* value) = 0; - virtual SDO_API void setUserData(unsigned int propertyIndex, void* value) = 0; - virtual SDO_API void setUserData(const Property& property, void* value) = 0; - virtual SDO_API void setUserData(void* value) = 0; - virtual SDO_API void* getUserData(const char* path) = 0; - virtual SDO_API void* getUserData(unsigned int propertyIndex) = 0; - virtual SDO_API void* getUserData(const Property& property) = 0; - virtual SDO_API void* getUserData() = 0; - - - /** getSequence returns the sequence for a data object - * - * Returns the value of a Sequence property identified by - * the specified path. See Sequence. - */ - - virtual SDO_API SequencePtr getSequence() = 0; - virtual SDO_API SequencePtr getSequence(const char* path) = 0; - virtual SDO_API SequencePtr getSequence(unsigned int propertyIndex) = 0; - virtual SDO_API SequencePtr getSequence(const Property& property) = 0; - - - - /** createDataObject creates a data object value - * - * Returns a new data object contained by this object using the - * specified property,which must be a containment property. - * The type of the created object is the declared type - * of the specified property. - * If the property is many valued, this method adds an element to the - * list, otherwise it sets the value, removing any old value. - */ - - virtual SDO_API DataObjectPtr createDataObject(const char* propertyName) = 0; - virtual SDO_API DataObjectPtr createDataObject(unsigned int propertyIndex) = 0; - virtual SDO_API DataObjectPtr createDataObject(const Property& property) = 0; - - - - /** detach detaches an object from the graph - * - * This method removes the current data object from the graph, but does - * not destroy it. The DataObject can be re-attached to the graph later. - */ - - virtual SDO_API void detach() = 0; - - /** clear unsets all the properties - * - * This method unsets all the properties, and deletes all the data object - * propertiy values from this data object. - */ - - virtual SDO_API void clear() = 0; - - - /** getList gets the value of a many-valued property - * - * Many valued properties are returned as lists of DataObjects. - * These lists may contain primitives or data objects, but they behave - * like data objects. - * Getting a many valued integer consists of getting the list, then - * using the DataObjectList API to getInteger() for each list element. - */ - - virtual SDO_API DataObjectList& getList(const char* path) = 0; - virtual SDO_API DataObjectList& getList(unsigned int propIndex) = 0; - virtual SDO_API DataObjectList& getList(const Property& p) = 0; - virtual DataObjectList& getList() = 0; - - - /** getChangeSummary get the applicable change summary - * - * This method gets the applicable change summary for a data object. - * The summary is not necessarily attached to the data object, it may be - * the summary for a parent data object. No object with a summary attached - * may be a child of another object with a summary attached. - * See the ChangeSummary API for details of using the change sumamry. - */ - - virtual SDO_SPI ChangeSummaryPtr getChangeSummary() = 0; - virtual SDO_SPI ChangeSummaryPtr getChangeSummary(const char* path) = 0; - virtual SDO_SPI ChangeSummaryPtr getChangeSummary(unsigned int propIndex) = 0; - virtual SDO_SPI ChangeSummaryPtr getChangeSummary(const Property& prop) = 0; - - /** objectToXPath - utility to find the xpath from the root. - * - * objectToXPath returns a string which could be used to locate this data - * object from the root data object of the graph. - */ - - virtual SDO_SPI const char* objectToXPath() = 0; - - -}; -}; -}; - -#endif //_DATAOBJECT_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectImpl.cpp deleted file mode 100644 index 0188c26d6d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectImpl.cpp +++ /dev/null @@ -1,4307 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 12:33:33 $ */ - -#include "commonj/sdo/disable_warn.h" -#include "commonj/sdo/DataObjectImpl.h" - - - -#include "commonj/sdo/SDORuntimeException.h" - -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/TypeList.h" -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/SequenceImpl.h" - -#include "commonj/sdo/PropertyList.h" - -#include "commonj/sdo/Logging.h" - -#include "commonj/sdo/TypeImpl.h" - -#include "commonj/sdo/ChangeSummaryImpl.h" -#include "commonj/sdo/DataFactoryImpl.h" - -#include <string> -#include <stdio.h> -using std::string; - - - - -namespace commonj{ -namespace sdo { - - /** - * RDO is an internal class holding a property value - */ - - rdo::rdo(unsigned int infirst, DataObjectImpl* insecond) - : first(infirst), second(insecond) - { - } - - rdo::rdo() - { - first = 0; - second = 0; - } - - rdo::rdo (const rdo& inrdo) - { - first = inrdo.first; - second = inrdo.second; - } - - rdo::~rdo() - { - } - - -/** @def getPrimitive - * - * A macro for the getting of primitive values from a data object - */ - -#define getPrimitive(primval,retval,defval)\ - retval DataObjectImpl::get ##primval (unsigned int propertyIndex)\ - {\ - validateIndex(propertyIndex);\ - PropertyImpl* p = getPropertyImpl(propertyIndex);\ - if (p != 0 ) \ - {\ - if (p->isMany() || p->getTypeImpl()->isFromList())\ - {\ - string msg("Get value not available on many valued property:");\ - msg += p->getName();\ - SDO_THROW_EXCEPTION("get value", SDOUnsupportedOperationException,\ - msg.c_str());\ - }\ - DataObjectImpl* d = getDataObjectImpl(propertyIndex);\ - if (d != 0) \ - {\ - if (d->isNull())return (retval)0;\ - return d->get ##primval ();\ - }\ - if (isSet(propertyIndex)) return (retval)0;\ - return p->get ##primval ##Default();\ - }\ - return (retval)0;\ - } - -/** @def getCharsBasic - * - * A macro for the getting of primitive characters from a data object - */ - -#define getCharsBasic(primval,retval,defval)\ - unsigned int DataObjectImpl::get ##primval (unsigned int propertyIndex, retval valptr , unsigned int max)\ - {\ - validateIndex(propertyIndex);\ - PropertyImpl* p = getPropertyImpl(propertyIndex);\ - if (p != 0) \ - {\ - if (p->isMany()|| p->getTypeImpl()->isFromList())\ - {\ - string msg("Get value not available on many valued property:");\ - msg += p->getName();\ - SDO_THROW_EXCEPTION("character getter", SDOUnsupportedOperationException,\ - msg.c_str());\ - }\ - DataObjectImpl* d = getDataObjectImpl(propertyIndex);\ - if (d != 0) \ - { \ - if (d->isNull()) return 0;\ - return d->get ##primval ( valptr , max);\ - }\ - if (isSet(propertyIndex))return 0;\ - return p->get ##primval ##Default( valptr , max);\ - }\ - return 0;\ - } - - -/** @def setPrimitive - * - * A macro for the setting of primitive values in a data object - */ - -#define setPrimitive(primval,primtype,primnam)\ - void DataObjectImpl::set ##primval (unsigned int propertyIndex, primtype value)\ - {\ - validateIndex(propertyIndex);\ - PropertyImpl* pl = getPropertyImpl(propertyIndex);\ - if (pl != 0) \ - {\ - if (pl->isMany()|| pl->getTypeImpl()->isFromList())\ - {\ - string msg("Set value not available on many valued property:");\ - msg += pl->getName();\ - SDO_THROW_EXCEPTION("set value",SDOUnsupportedOperationException,\ - msg.c_str());\ - }\ - PropertyValueMap::iterator i;\ - for (i = PropertyValues.begin(); i != PropertyValues.end();++i)\ - {\ - if ((*i).first == propertyIndex)\ - {\ - logChange(propertyIndex);\ - (*i).second->unsetNull();\ - (*i).second->set ##primval (value);\ - return;\ - }\ - }\ - DataFactory* df = getDataFactory();\ - DataObjectImpl* b = new DataObjectImpl(df, df->getType(Type::SDOTypeNamespaceURI, primnam));\ - b->setContainer(this);\ - b->setApplicableChangeSummary();\ - logChange(propertyIndex);\ - PropertyValues.insert(PropertyValues.end(), rdo(propertyIndex,b));\ - b->set ##primval (value);\ - }\ - return;\ - } - - -/** @def setCharsBasic - * - * A macro for the setting of primitive characters in a data object - */ - -#define setCharsBasic(primval,primtype,primnam)\ - void DataObjectImpl::set ##primval (unsigned int propertyIndex, primtype value, unsigned int len)\ - {\ - validateIndex(propertyIndex);\ - PropertyImpl* pl = getPropertyImpl(propertyIndex);\ - if (pl != 0) \ - {\ - if (pl->isMany()|| pl->getTypeImpl()->isFromList())\ - {\ - string msg("Set value not available on many valued property:");\ - msg += pl->getName();\ - SDO_THROW_EXCEPTION("setter",SDOUnsupportedOperationException,\ - msg.c_str());\ - }\ - PropertyValueMap::iterator i;\ - for (i = PropertyValues.begin(); i != PropertyValues.end();++i)\ - {\ - if ((*i).first == propertyIndex)\ - {\ - logChange(propertyIndex);\ - (*i).second->unsetNull();\ - (*i).second->set ##primval (value, len);\ - return;\ - }\ - }\ - DataFactory* df = getDataFactory();\ - DataObjectImpl* b = new DataObjectImpl(df, df->getType(Type::SDOTypeNamespaceURI, primnam));\ - b->setContainer(this);\ - b->setApplicableChangeSummary();\ - logChange(propertyIndex);\ - PropertyValues.insert(PropertyValues.end(),rdo(propertyIndex,b));\ - b->set ##primval (value, len);\ - }\ - return;\ - } - - -/** @def getPrimitiveFromPath - * - * A macro for the getting of primitive values from a data object by path - */ - -#define getPrimitiveFromPath(primval, retval, defval)\ - retval DataObjectImpl::get ##primval (const char* path)\ - {\ - DataObjectImpl* d;\ - char *spath = 0;\ - char* prop = 0;\ - try {\ - spath = DataObjectImpl::stripPath(path);\ - prop = findPropertyContainer(spath,&d);\ - if (spath){\ - delete spath;\ - spath = 0;\ - }\ - if (d != 0) {\ - if (prop == 0 || (strlen(prop) == 0)) {\ - return d->get ##primval ();\ - }\ - else {\ - PropertyImpl* p = d->getPropertyImpl(prop);\ - if (p != 0) \ - {\ - if (p->isMany()|| p->getTypeImpl()->isFromList())\ - {\ - long l;\ - DataObjectImpl* doi = d->findDataObject(prop,&l);\ - delete prop;\ - prop = 0;\ - if (doi != 0) {\ - return doi->get ## primval();\ - }\ - string msg("Get value - index out of range:");\ - msg += path;\ - SDO_THROW_EXCEPTION("getter", SDOIndexOutOfRangeException,\ - msg.c_str());\ - }\ - else\ - {\ - delete prop;\ - prop = 0;\ - if (!d->isSet(*p)) {\ - return p->get ##primval ##Default();\ - }\ - return d->get ##primval (*p);\ - }\ - }\ - }\ - if (prop) {\ - delete prop;\ - prop = 0;\ - }\ - }\ - string msg("Get value - path not found");\ - SDO_THROW_EXCEPTION("getter", SDOPathNotFoundException,\ - msg.c_str());\ - }\ - catch (SDORuntimeException e) {\ - if (spath)delete spath;\ - if (prop) delete prop;\ - SDO_RETHROW_EXCEPTION("getter", e);\ - }\ - } - -#define getPrimitiveFromPathUsingSDOString(primval, retval, defval)\ - retval DataObjectImpl::get ##primval (const SDOString& path)\ - {\ - DataObjectImpl* d;\ - SDOString spath;\ - SDOString prop;\ - try {\ - DataObjectImpl::stripPath(path, spath);\ - prop = findPropertyContainer(spath, &d);\ - if (d != 0) {\ - if (prop.empty()) {\ - return d->get ##primval ();\ - }\ - else {\ - PropertyImpl* p = d->getPropertyImpl(prop);\ - if (p != 0) \ - {\ - if (p->isMany()|| p->getTypeImpl()->isFromList())\ - {\ - long l;\ - DataObjectImpl* doi = d->findDataObject(prop,&l);\ - if (doi != 0) {\ - return doi->get ## primval();\ - }\ - string msg("Get value - index out of range:");\ - msg += path;\ - SDO_THROW_EXCEPTION("getter", SDOIndexOutOfRangeException,\ - msg.c_str());\ - }\ - else\ - {\ - if (!d->isSet(*p)) {\ - return p->get ##primval ##Default();\ - }\ - return d->get ##primval (*p);\ - }\ - }\ - }\ - }\ - string msg("Get value - path not found");\ - SDO_THROW_EXCEPTION("getter", SDOPathNotFoundException,\ - msg.c_str());\ - }\ - catch (SDORuntimeException e) {\ - SDO_RETHROW_EXCEPTION("getter", e);\ - }\ - } - -/** @def getCharsFromPath - * - * A macro for the getting of primitive characters from a data object by path - */ - -#define getCharsFromPath(primval, retval, defval)\ - unsigned int DataObjectImpl::get ##primval (const char* path, retval valptr , unsigned int max)\ - {\ - DataObjectImpl* d;\ - char *spath = 0;\ - char* prop = 0;\ - try {\ - spath = DataObjectImpl::stripPath(path);\ - prop = findPropertyContainer(spath,&d);\ - if (spath){\ - delete spath;\ - spath = 0;\ - }\ - if (d != 0) {\ - if (prop == 0 || (strlen(prop) == 0)) {\ - return d->get ##primval ( valptr , max);\ - }\ - else {\ - PropertyImpl* p = d->getPropertyImpl(prop);\ - if (p != 0)\ - {\ - if (p->isMany() || p->getTypeImpl()->isFromList())\ - {\ - long l;\ - DataObjectImpl* doi = d->findDataObject(prop,&l);\ - delete prop;\ - prop = 0;\ - if (doi != 0) {\ - return doi->get ## primval (valptr, max);\ - }\ - string msg("Get value - index out of range");\ - msg += path;\ - SDO_THROW_EXCEPTION("getChars", SDOIndexOutOfRangeException,\ - msg.c_str());\ - }\ - else { \ - delete prop;\ - prop = 0;\ - if (!d->isSet(*p)) {\ - return p->get ##primval ##Default( valptr , max );\ - }\ - return d->get ##primval (*p, valptr , max);\ - }\ - }\ - }\ - if (prop) {\ - delete prop;\ - prop = 0;\ - }\ - }\ - string msg("Get value - path not found");\ - SDO_THROW_EXCEPTION("getCString", SDOPathNotFoundException,\ - msg.c_str());\ - }\ - catch (SDORuntimeException e) {\ - if (spath)delete spath;\ - if (prop) delete prop;\ - SDO_RETHROW_EXCEPTION("character getter", e);\ - }\ - } - - - -/** @def setPrimitiveFromPath - * - * A macro for the setting of primitive values in a data object by path - */ - -#define setPrimitiveFromPath(primval,setval,platval)\ - void DataObjectImpl::set ##primval (const char* path, setval value)\ - {\ - DataObjectImpl *d;\ - char* spath = 0;\ - char* prop = 0;\ - try {\ - spath = DataObjectImpl::stripPath(path);\ - prop = findPropertyContainer(spath,&d);\ - if (spath) {\ - delete spath;\ - spath = 0;\ - }\ - if (d != 0)\ - {\ - if (prop == 0 || (strlen(prop) == 0)) {\ - d->set ##primval (value);\ - }\ - else {\ - const PropertyImpl* p = d->getPropertyImpl(prop);\ - if (p == 0 && d->getType().isOpenType()) \ - {\ - p = d->define ##primval (prop);\ - }\ - if (p == 0)\ - {\ - string msg("Set value - path not found");\ - SDO_THROW_EXCEPTION("setter", SDOPathNotFoundException,\ - msg.c_str());\ - }\ - if (p->isMany()|| p->getTypeImpl()->isFromList())\ - {\ - long l;\ - DataObjectList& dol = d->getList((Property&)*p);\ - DataObjectImpl* doi = d->findDataObject(prop,&l);\ - delete prop;\ - prop = 0;\ - if (doi != 0) {\ - doi->set ## primval (value);\ - }\ - else {\ - dol.append(( platval) value);\ - }\ - }\ - else {\ - delete prop;\ - prop = 0;\ - d->set ##primval ((Property&)*p,value);\ - }\ - }\ - }\ - if (prop){\ - delete prop;\ - prop = 0;\ - }\ - }\ - catch (SDORuntimeException e) {\ - if (spath) delete spath;\ - if (prop) delete prop;\ - SDO_RETHROW_EXCEPTION("setter",e);\ - }\ - } - -/** @def setCharsFromPath - * - * A macro for the setting of primitive characters in a data object by path - */ - -#define setCharsFromPath(primval,setval)\ - void DataObjectImpl::set ##primval (const char* path, setval value, unsigned int len)\ - {\ - DataObjectImpl *d;\ - char* spath = 0;\ - char* prop = 0;\ - try {\ - spath = DataObjectImpl::stripPath(path);\ - prop = findPropertyContainer(spath,&d);\ - if (spath) {\ - delete spath;\ - spath = 0;\ - }\ - if (d != 0)\ - {\ - if (prop == 0 || (strlen(prop) == 0)) {\ - d->set ##primval (value, len);\ - }\ - else {\ - const PropertyImpl* p = d->getPropertyImpl(prop);\ - if (p == 0 && d->getType().isOpenType())\ - {\ - p = d->define ##primval (prop);\ - }\ - if (p == 0)\ - {\ - string msg("Set value - path not found");\ - SDO_THROW_EXCEPTION("setter", SDOPathNotFoundException,\ - msg.c_str());\ - }\ - if (p->isMany()|| p->getTypeImpl()->isFromList())\ - {\ - long l;\ - DataObjectList& dol = d->getList((Property&)*p);\ - DataObjectImpl* doi = d->findDataObject(prop,&l);\ - delete prop;\ - prop = 0;\ - if (doi != 0) {\ - doi->set ## primval (value, len);\ - }\ - else {\ - dol.append(value,len);\ - }\ - }\ - else { \ - delete prop;\ - prop = 0;\ - d->set ##primval ((Property&)*p,value, len);\ - }\ - }\ - }\ - if (prop){\ - delete prop;\ - prop = 0;\ - }\ - }\ - catch (SDORuntimeException e) {\ - if (spath) delete spath;\ - if (prop) delete prop;\ - SDO_RETHROW_EXCEPTION("setter",e);\ - }\ - } - - - - -/** @def getPrimitiveFromProperty - * - * A macro for the getting of primitive values in a data object by property - */ - -#define getPrimitiveFromProperty(primval,retval)\ - retval DataObjectImpl::get ##primval (const Property& property)\ - {\ - return get ##primval (getPropertyIndex(property));\ - } - - -/** @def getCharsFromProperty - * - * A macro for the getting of primitive characters in a data object by property - */ - -#define getCharsFromProperty(primval,retval)\ - unsigned int DataObjectImpl::get ##primval (const Property& property, retval val, unsigned int max)\ - {\ - return get ##primval (getPropertyIndex(property), val, max);\ - } - - -/** @def setPrimitiveFromProperty - * - * A macro for the setting of primitive values in a data object by property - */ - -#define setPrimitiveFromProperty(primval,primtype)\ - void DataObjectImpl::set ##primval (const Property& property, primtype value)\ - {\ - set ##primval (getPropertyIndex(property),value);\ - } - -/** @def setCharsFromProperty - * - * A macro for the setting of primitive characters in a data object by property - */ - -#define setCharsFromProperty(primval,primtype)\ - void DataObjectImpl::set ##primval (const Property& property, primtype value, unsigned int len)\ - {\ - set ##primval (getPropertyIndex(property),value, len);\ - } - - - - /** DataObject - * DataObjects are the non-primitive members of a Data graph. - * - * A data object is a representation of some structured data. - * it is the fundamental component in the SDO (Service Data Objects) package. - * Data objects support reflection, path-based accesss, convenience creation - * and deletion methods,and the ability to be part of a data graph. - * Each data object holds its data as a series of properties. - * Properties can be accessed by name, property index, or using the property - * meta object itself. - * A data object can also contain references to other data objects, through - * reference-type properties. - * A data object has a series of convenience accessors for its properties. - * These methods either use a path (String), a property index, - * or the property's meta object itself, to identify the property. - * Some examples of the path-based accessors are as follows: - * DataObjectPtr company = ...; - * company->getString("name"); - * company->setString("name", "acme"); - * company->getString("department.0/name") - * .n indexes from 0. - * company->getString("department[1]/name") [] indexes from 1. - * company->getDataObject("department[number=123]") returns the department where number=123 - * company->getDataObject("..") returns the containing data object - * company->getDataObject("/") returns the root containing data object - * There are specific accessors for the primitive types and commonly used - * data types like String. - */ - - -void DataObjectImpl::handlePropertyNotSet(const char* name) -{ - // change of behaviour - no longer throw for this. - -// string msg("Get value on unset and undefaulted property:"); -// msg += name; -// SDO_THROW_EXCEPTION("get value", SDOPropertyNotSetException, -// msg.c_str()); -} - - - - // setters and getters from a path specification - - getCharsFromPath(String, wchar_t* , 0); - getCharsFromPath(Bytes, char* , 0); - setCharsFromPath(String, const wchar_t*); - setCharsFromPath(Bytes, const char*); - getCharsFromProperty(String,wchar_t*); - getCharsFromProperty(Bytes,char*); - setCharsFromProperty(String,const wchar_t*); - setCharsFromProperty(Bytes,const char*); - getCharsBasic(String,wchar_t*,0); - getCharsBasic(Bytes,char*,0); - setCharsBasic(String,const wchar_t*,"String"); - setCharsBasic(Bytes,const char*,"Bytes"); - - - // Convenience methods for string/bytes length - - unsigned int DataObjectImpl::getLength(const Property& p) - { - switch (p.getType().getTypeEnum()) { - case Type::BooleanType: - return BOOL_SIZE; - case Type::CharacterType: - case Type::ByteType: - return BYTE_SIZE; - case Type::ShortType: - case Type::IntegerType: - case Type::LongType: - return MAX_LONG_SIZE; - case Type::FloatType: - return MAX_FLOAT_SIZE; - case Type::DoubleType: - return MAX_DOUBLE_SIZE; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::UriType: - case Type::StringType: - return getString(p,0,0); - case Type::BytesType: - return getBytes(p,0,0); - default: - return 0; - } - } - - unsigned int DataObjectImpl::getLength() - { - switch (getType().getTypeEnum()) { - case Type::BooleanType: - return BOOL_SIZE; - case Type::CharacterType: - case Type::ByteType: - return BYTE_SIZE; - case Type::ShortType: - case Type::IntegerType: - case Type::LongType: - return MAX_LONG_SIZE; - case Type::FloatType: - return MAX_FLOAT_SIZE; - case Type::DoubleType: - return MAX_DOUBLE_SIZE; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::UriType: - case Type::StringType: - return getString(0,0); - case Type::BytesType: - return getBytes(0,0); - default: - return 0; - } - } - - unsigned int DataObjectImpl::getLength(const char* path) - { - DataObjectImpl* d; - char * spath = DataObjectImpl::stripPath(path); - char * prop = findPropertyContainer(spath,&d); - if (spath) delete spath; - if (d != 0) { - if (prop == 0 || (strlen(prop) == 0)) { - return 0; - } - else - { - const Property& p = d->getProperty(prop); - delete prop; - return getLength(p); - } - } - else - { - if (prop) - { - const Property& p = getProperty(prop); - delete prop; - - return getLength(p); - } - else - { - return 0; - } - } - } - - unsigned int DataObjectImpl::getLength(unsigned int index) - { - return getLength(getProperty(index)); - } - - bool DataObjectImpl::getBoolean(const char* path) - { - return getBoolean(SDOString(path)); - } - - // getPrimitiveFromPath(Boolean,bool,false); // Provides DataObjectImpl::getBoolean(const char*) - getPrimitiveFromPathUsingSDOString(Boolean,bool,false); // Provides DataObjectImpl::getBoolean(const SDOString&) - getPrimitiveFromPath(Byte,char,0); - getPrimitiveFromPath(Character,wchar_t,0); - getPrimitiveFromPath(Short,short,0); - getPrimitiveFromPath(Integer,long,0); - getPrimitiveFromPath(Long,int64_t,0L); - getPrimitiveFromPath(Double,long double,0.0); - getPrimitiveFromPath(Float,float,0.0); - getPrimitiveFromPath(Date,const SDODate,0); - - - setPrimitiveFromPath(Boolean,bool, bool); - setPrimitiveFromPath(Byte,char, char); - setPrimitiveFromPath(Character,wchar_t, wchar_t); - setPrimitiveFromPath(Short,short, short); -#if __WORDSIZE ==64 - setPrimitiveFromPath(Integer,long, int64_t); -#else - setPrimitiveFromPath(Integer,long, long); -#endif - setPrimitiveFromPath(Long,int64_t, int64_t); - setPrimitiveFromPath(Float,float, float); - setPrimitiveFromPath(Double,long double, long double); - setPrimitiveFromPath(Date,const SDODate, const SDODate); - - - getPrimitiveFromProperty(Boolean,bool); - getPrimitiveFromProperty(Byte,char); - getPrimitiveFromProperty(Character,wchar_t); - getPrimitiveFromProperty(Short,short); - getPrimitiveFromProperty(Integer,long); - getPrimitiveFromProperty(Long,int64_t); - getPrimitiveFromProperty(Double,long double); - getPrimitiveFromProperty(Float,float); - getPrimitiveFromProperty(Date,const SDODate); - - setPrimitiveFromProperty(Boolean,bool); - setPrimitiveFromProperty(Byte,char); - setPrimitiveFromProperty(Character,wchar_t); - setPrimitiveFromProperty(Short,short); - setPrimitiveFromProperty(Integer,long); - setPrimitiveFromProperty(Long,int64_t); - setPrimitiveFromProperty(Float,float); - setPrimitiveFromProperty(Double,long double); - setPrimitiveFromProperty(Date,const SDODate); - - getPrimitive(Boolean,bool,false); - getPrimitive(Byte,char,0); - getPrimitive(Character,wchar_t,0); - getPrimitive(Short,short,0); - getPrimitive(Integer,long,0); - getPrimitive(Long,int64_t,0L); - getPrimitive(Double,long double,0.0); - getPrimitive(Float,float,0.0); - getPrimitive(Date,const SDODate,0); - - setPrimitive(Boolean,bool,"Boolean"); - setPrimitive(Byte,char, "Byte"); - setPrimitive(Character,wchar_t,"Character"); - setPrimitive(Short,short,"Short"); - setPrimitive(Integer,long,"Integer"); - setPrimitive(Long,int64_t,"Long"); - setPrimitive(Float,float,"Float"); - setPrimitive(Double,long double,"Double"); - setPrimitive(Date,const SDODate,"Date"); - - - - // open type support - - const PropertyImpl* DataObjectImpl::defineProperty(const char* propname, - const Type& t) - { - openProperties.insert( - openProperties.end(), PropertyImpl(getType(),propname, - (TypeImpl&)t, false, false, true)); - DataFactory* df = factory; - ((DataFactoryImpl*)df)->addOpenProperty( - PropertyImpl(getType(),propname, - (TypeImpl&)t, false, false, true)); - - return getPropertyImpl(propname); - } - const PropertyImpl* DataObjectImpl::defineProperty(const SDOString& propname, - const Type& t) - { - openProperties.insert(openProperties.end(), - PropertyImpl(getType(), - propname, - (TypeImpl&)t, - false, - false, - true)); - DataFactory* df = factory; - ((DataFactoryImpl*)df)->addOpenProperty(PropertyImpl(getType(), - propname, - (TypeImpl&)t, - false, - false, - true)); - - return getPropertyImpl(propname); - } - - void DataObjectImpl::undefineProperty(unsigned int index) - { - int point = index - openBase; - if (point < 0 || point >= openProperties.size()) return; - - // downgrade all the property settings above this one - - PropertyValueMap::iterator pit; - for (pit = PropertyValues.begin(); pit != PropertyValues.end();++pit) - { - if ((*pit).first > index) - { - if (getPropertyImpl((*pit).first)->isMany()) - { - DataObjectListImpl* dl = (*pit).second->getListImpl(); - if (dl != 0) dl->decrementPindex(); - } - (*pit).first-=1; - } - } - - // then remove this property from the list - - std::list<PropertyImpl>::iterator it = - openProperties.begin(); - for (int i=0;i<point;i++)++it; /* there must be a better way */ - - DataFactory* df = factory; - ((DataFactoryImpl*)df)->removeOpenProperty((*it).getName()); - - openProperties.erase(it); - - return; - } - - const PropertyImpl* DataObjectImpl::defineList(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "OpenDataObject"); - openProperties.insert( - openProperties.end(), PropertyImpl(getType(),propname, - (TypeImpl&)t, true, false, true)); - - DataFactory* df = factory; - ((DataFactoryImpl*)df)->addOpenProperty(PropertyImpl(getType(),propname, - (TypeImpl&)t, true, false, true)); - - return getPropertyImpl(propname); - } - - const PropertyImpl* DataObjectImpl::defineBoolean(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Boolean"); - return defineProperty(propname,t); - } - - const PropertyImpl* DataObjectImpl::defineByte(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Byte"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineCharacter(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Character"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineString(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "String"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineBytes(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Bytes"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineShort(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Short"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineInteger(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Integer"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineLong(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Long"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineFloat(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Float"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineDouble(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Double"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineDate(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Date"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineCString(const char* propname) - { - const Type& t = factory->getType(Type::SDOTypeNamespaceURI, "Bytes"); - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineDataObject(const char* propname, - const Type& t) - { - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineDataObject(const SDOString& propname, - const Type& t) - { - return defineProperty(propname,t); - } - const PropertyImpl* DataObjectImpl::defineDataObject(const char* propname, - const char* typeURI, const char* typeName) - { - const Type& t = factory->getType(typeURI, typeName); - return defineProperty(propname,t); - } - - // Used to return empty values - remove when defaults are there. - const char* DataObjectImpl::emptyString = ""; - - // Useful for debug, so not included in the macros above - but - // could be. - // getters and setters for strings - - const char* DataObjectImpl::getCString(unsigned int propertyIndex) - { - validateIndex(propertyIndex); - if ((getProperty(propertyIndex).isMany()) - || getPropertyImpl(propertyIndex)->getTypeImpl()->isFromList()) - { - - string msg("Get value not available on many valued property:"); - msg += getProperty(propertyIndex).getName(); - SDO_THROW_EXCEPTION("getCString", SDOUnsupportedOperationException, - msg.c_str()); - } - DataObjectImpl* d = getDataObjectImpl(propertyIndex); - if (d != 0) { - if (!d->isNull()) return d->getCString (); - return 0; - } - PropertyImpl* p = (PropertyImpl*)getPropertyImpl(propertyIndex); - if (p != 0) - { - if (isSet(propertyIndex)) return 0; - //if (p->isDefaulted()) - //{ - return p->getCStringDefault(); - //} - //else - //{ - // handlePropertyNotSet(p->getName()); - //} - } - return 0; - } - - - void DataObjectImpl::setCString (unsigned int propertyIndex, const char* value) - { - validateIndex(propertyIndex); - PropertyValueMap::iterator i; - if ((getProperty(propertyIndex).isMany()) - || getPropertyImpl(propertyIndex)->getTypeImpl()->isFromList()) - { - string msg("Set value not available on many valued property:"); - msg += getProperty(propertyIndex).getName(); - SDO_THROW_EXCEPTION("setString", SDOUnsupportedOperationException, - msg.c_str()); - } - for (i = PropertyValues.begin(); i != PropertyValues.end();++i) - { - if ((*i).first == propertyIndex) - { - logChange(propertyIndex); - (*i).second->unsetNull(); - (*i).second->setCString(value); - return; - } - } - DataFactory* df = getDataFactory(); - DataObjectImpl* b = new DataObjectImpl(df, df->getType(Type::SDOTypeNamespaceURI,"String")); - b->setContainer(this); - b->setApplicableChangeSummary(); - logChange(propertyIndex); - PropertyValues.insert(PropertyValues.end(),rdo(propertyIndex,b)); - b->setCString(value); - return; - } - - - const char* DataObjectImpl::getCString (const char* path) - { - DataObjectImpl* d = 0; - char* spath = 0; - char *prop = 0; - try { - spath = DataObjectImpl::stripPath(path); - prop = findPropertyContainer(spath,&d); - if (spath) { - delete spath; - spath = 0; - } - if (d != 0) { - if (prop == 0 || (strlen(prop) == 0)) { - return d->getCString(); - } - else { - PropertyImpl* p = d->getPropertyImpl(prop); - if (p != 0) - { - if (p->isMany()|| p->getTypeImpl()->isFromList()) - { - long l; - DataObjectImpl* doi = d->findDataObject(prop,&l); - delete prop; - prop = 0; - if (doi != 0) { - return doi->getCString(); - } - string msg("Get CString - index out of range"); - msg += path; - SDO_THROW_EXCEPTION("getter", SDOIndexOutOfRangeException, - msg.c_str()); - } - else { - delete prop; - prop = 0; - if (!d->isSet(*p)) { - //if (p->isDefaulted()) - //{ - return p->getCStringDefault(); - //} - //else - //{ - // handlePropertyNotSet(p->getName()); - //} - } - return d->getCString(*p); - } - } - } - } - if (prop){ - delete prop; - prop = 0; - } - string msg("Get CString - object not found"); - SDO_THROW_EXCEPTION("getCString", SDOPathNotFoundException, - msg.c_str()); - } - catch (SDORuntimeException e) { - if (spath) delete spath; - if (prop) delete prop; - SDO_RETHROW_EXCEPTION("getCString",e); - } - } - - - - void DataObjectImpl::setCString(const char* path, const char* value) - { - DataObjectImpl *d = 0; - char* spath = 0; - char* prop = 0; - try { - spath = DataObjectImpl::stripPath(path); - prop = findPropertyContainer(spath,&d); - if (spath) { - delete spath; - spath = 0; - } - if (d != 0) { - if (prop == 0 || (strlen(prop) == 0)) { - d->setCString(value); - } - else { - const PropertyImpl* p = d->getPropertyImpl(prop); - if (p == 0 && d->getType().isOpenType()) - { - p = d->defineBytes(prop); - } - if (p != 0) - { - if (p->isMany()|| p->getTypeImpl()->isFromList()) { - long l; - DataObjectList& dol = d->getList((Property&)*p); - DataObjectImpl* doi = d->findDataObject(prop,&l); - if (doi != 0) - { - doi->setCString(value); - } - else - { - dol.append(value); - } - } - else { - d->setCString((Property&)*p,value); - } - } - delete prop; - prop = 0; - } - } - if (prop) { - delete prop; - prop = 0; - } - } - catch (SDORuntimeException e) { - if (spath) delete spath; - if (prop) delete prop; - SDO_RETHROW_EXCEPTION("setCString",e); - } - } - - - - const char* DataObjectImpl::getCString (const Property& property) - { - return getCString(getPropertyIndex(property)); - } - - - void DataObjectImpl::setCString(const Property& property, const char* value) - { - setCString(getPropertyIndex(property),value); - } - - // null support - - bool DataObjectImpl::isNull(const unsigned int propertyIndex) - { - validateIndex(propertyIndex); - if ((getProperty(propertyIndex).isMany())) - { - return false; - } - - PropertyValueMap::iterator i; - for (i = PropertyValues.begin(); i != PropertyValues.end();++i) - { - if ((*i).first == propertyIndex) - { - return (*i).second->isNull(); - } - } - return false; - } - - bool DataObjectImpl::isNull(const Property& property) - { - return isNull(getPropertyIndex(property)); - } - - bool DataObjectImpl::isNull(const char* path) - { - DataObjectImpl *d = 0; - char* spath = 0; - char* prop = 0; - try { - spath = DataObjectImpl::stripPath(path); - prop = findPropertyContainer(spath,&d); - if (spath) { - delete spath; - spath = 0; - } - if (d != 0) { - if (prop == 0 || (strlen(prop) == 0)) { - return d->isNull(); - } - else { - const Property& p = d->getProperty(prop); - delete prop; - return d->isNull(p); - } - } - if (prop) { - delete prop; - prop = 0; - } - return false; - } - catch (SDORuntimeException e) { - if (spath) delete spath; - if (prop) delete prop; - SDO_RETHROW_EXCEPTION("isNull",e); - } - - } - void DataObjectImpl::setNull(const unsigned int propertyIndex) - { - validateIndex(propertyIndex); - if ((getProperty(propertyIndex).isMany())) - { - string msg("Setting a list to null is not supported:"); - msg += getProperty(propertyIndex).getName(); - SDO_THROW_EXCEPTION("setNull", SDOUnsupportedOperationException, - msg.c_str()); - } - - PropertyValueMap::iterator i; - for (i = PropertyValues.begin(); i != PropertyValues.end();++i) - { - if ((*i).first == propertyIndex) - { - logChange(propertyIndex); - (*i).second->setNull(); - return; - } - } - // The property was not set yet... - logChange(propertyIndex); - DataFactory* df = getDataFactory(); - DataObjectImpl* b = new DataObjectImpl(df, - getProperty(propertyIndex).getType()); - b->setContainer(this); - b->setApplicableChangeSummary(); - PropertyValues.insert(PropertyValues.end(),rdo(propertyIndex,b)); - b->setNull(); - - - } - void DataObjectImpl::setNull(const Property& property) - { - setNull(getPropertyIndex(property)); - } - - void DataObjectImpl::setNull(const char* path) - { - DataObjectImpl *d = 0; - char* spath = 0; - char* prop = 0, *pc = 0; - try { - spath = DataObjectImpl::stripPath(path); - prop = findPropertyContainer(spath,&d); - if (spath) { - delete spath; - spath = 0; - } - if (d != 0) { - if (prop == 0 || (strlen(prop) == 0)) { - try { - DataObjectImpl* cont = d->getContainerImpl(); - if (cont != 0) - { - pc = (char*) strrchr(path,'/'); - if (pc != 0)pc++; - } - const Property& pcont = cont->getProperty(pc); - cont->logChange(pcont); - } - catch (SDORuntimeException&) - { - } - d->setNull(); - } - else { - const PropertyImpl* p = d->getPropertyImpl(prop); - if (p == 0) - { - if(d->getType().isOpenType()) - { - string msg("Cannot set unassigned open property to null:"); - msg += prop; - SDO_THROW_EXCEPTION("setNull", SDOUnsupportedOperationException, - msg.c_str()); - } - else - { - string msg("Property Not Found:"); - msg += prop; - SDO_THROW_EXCEPTION("setNull", SDOPropertyNotFoundException, - msg.c_str()); - } - } - delete prop; - d->setNull((Property&)*p); - return; - } - } - if (prop) { - delete prop; - prop = 0; - } - return; - } - catch (SDORuntimeException e) { - if (spath) delete spath; - if (prop) delete prop; - SDO_RETHROW_EXCEPTION("setNull",e); - } - - } - - - - // getters and setters for a List data object - - DataObjectList& DataObjectImpl::getList(const char* path) - { - DataObjectImpl *d; - char* spath = DataObjectImpl::stripPath(path); - char* prop = findPropertyContainer(spath,&d); - if (spath) delete spath; - if (d != 0) { - if (prop == 0 || (strlen(prop) == 0)) { - return d->getList(); - } - else { - const PropertyImpl* p = d->getPropertyImpl(prop); - if (p == 0 && d->getType().isOpenType()) - { - p = d->defineList(prop); - } - if (p != 0) - { - delete prop; - return d->getList((Property&)*p); - } - } - } - if (prop) delete prop; - - string msg("Invalid path:"); - msg += path; - SDO_THROW_EXCEPTION("getList",SDOPathNotFoundException, msg.c_str()); - - } - - - - DataObjectList& DataObjectImpl::getList(unsigned int propIndex) - { - if (!(getProperty(propIndex).isMany())) - { - if (!getPropertyImpl(propIndex)->getTypeImpl()->isFromList()) - { - string msg("Get list not available on single valued property:"); - msg += getProperty(propIndex).getName(); - SDO_THROW_EXCEPTION("getList", SDOUnsupportedOperationException, - msg.c_str()); - } - } - DataObjectImpl* d = getDataObjectImpl(propIndex); - if (d == 0) - { - string msg("Property Not Found:"); - msg += getType().getProperty(propIndex).getName(); - SDO_THROW_EXCEPTION("getList", SDOPropertyNotFoundException, - msg.c_str()); - } - return d->getList(); - } - - DataObjectList& DataObjectImpl::getList(const Property& p) - { - if (!p.isMany()) - { - PropertyImpl* pi = (PropertyImpl*)&p; - if (!pi->getTypeImpl()->isFromList()) - { - string msg("Get list not available on single valued property:"); - msg += p.getName(); - SDO_THROW_EXCEPTION("getList", SDOUnsupportedOperationException, - msg.c_str()); - } - } - - int propIndex = getPropertyIndex(p); - DataObjectImpl* d = getDataObjectImpl(propIndex); - if (d == 0) { - // There is no list yet, so we need to create an - // empty data object to hold the list - DataFactory* df = getDataFactory(); - d = new DataObjectImpl(df, df->getType(Type::SDOTypeNamespaceURI,"DataObject")); - PropertyValues.insert(PropertyValues.end(),rdo(propIndex,d)); - d->setContainer(this); - d->setApplicableChangeSummary(); - - DataObjectListImpl* list = new DataObjectListImpl(df,this, - propIndex,p.getType().getURI(),p.getType().getName()); - d->setList(list); - - } - return d->getList(); - } - - - - DataObjectList& DataObjectImpl::getList() - { - if (getTypeImpl().isFromList()) - { - return getList("values"); - } - return *listValue; - } - - DataObjectListImpl* DataObjectImpl::getListImpl() - { - if (getTypeImpl().isFromList()) - { - DataObjectList& dl = getList("values"); - return (DataObjectListImpl*)&dl; - } - return listValue; - } - - - - ///////////////////////////////////////////////////////////////////////////// - // Utilities - ///////////////////////////////////////////////////////////////////////////// - - - // get an index, or throw if the prop is not part of this DO - - unsigned int DataObjectImpl::getPropertyIndex(const Property& p) - { - PropertyList props = getType().getProperties(); - - for (int i = 0; i < props.size() ; ++i) - { - if (!strcmp(props[i].getName(),p.getName()) ) - { - return i; - } - } - if (getType().isOpenType()) - { - std::list<PropertyImpl>::iterator j; - int count = 0; - for (j = openProperties.begin() ; - j != openProperties.end() ; ++j) - { - if (!strcmp((*j).getName(),p.getName())) - { - return count+openBase; - } - count++; - } - } - string msg("Cannot find property:"); - msg += p.getName(); - SDO_THROW_EXCEPTION("getPropertyIndex", SDOPropertyNotFoundException, - msg.c_str()); - } - - const Property& DataObjectImpl::getProperty(unsigned int index) - { - PropertyImpl* pi = getPropertyImpl(index); - if (pi == 0) - { - string msg("Index out of range"); - SDO_THROW_EXCEPTION("getProperty", SDOIndexOutOfRangeException, - msg.c_str()); - } - return (Property&)*pi; - } - - /** - * See if the property currently exists - */ - - bool DataObjectImpl::hasProperty(const char* name) - { - PropertyImpl* pi = getPropertyImpl(name); - if (pi == 0) return false; - return true; - } - - bool DataObjectImpl::hasProperty(const SDOString& name) - { - PropertyImpl* pi = getPropertyImpl(name); - if (pi == 0) return false; - return true; - } - - - PropertyImpl* DataObjectImpl::getPropertyImpl(unsigned int index) - { - PropertyList props = getType().getProperties(); - if (index < props.size()) - { - return (PropertyImpl*)&props[index]; - } - - if (getType().isOpenType()) - { - if (index >= openBase && index - openBase < openProperties.size()) - { - std::list<PropertyImpl>::iterator j; - int val = 0; - j = openProperties.begin(); - while (val < index-openBase && j != openProperties.end()) - { - val++; - j++; - } - if (j != openProperties.end()) return &(*j); - } - } - return 0; - } - - - ////////////////////////////////////////////////////////////////////// - // TODO - this is rubbish, but gets us by until XPATH is done - // trip the path down to characters which I am going to - // recognise later (a-z, A-Z _ [ ] .) - ////////////////////////////////////////////////////////////////////// - - const char* DataObjectImpl::templateString = - " /abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890=[]._#"; - - char* DataObjectImpl::stripPath(const char* path) - { - int pos = 0; - char* s = 0; - if (path == 0) return s; - - s = new char[strlen(path)+1]; - - for (int i=0;i < strlen(path); i++) - { - if (strchr(templateString,path[i]) != 0) { - s[pos++] = path[i]; - } - } - s[pos++] = 0; - return s; - } - - void DataObjectImpl::stripPath(const SDOString& path, SDOString& result) - { - result.erase(); - result.reserve(path.length()); - - size_t start = 0; - size_t position = path.find_first_not_of(templateString); - - while (position != string::npos) - { - result.append(path, start, (position - start)); - start = ++position; - position = path.find_first_not_of(templateString, position); - } - - result.append(path, start, string::npos); - - return; - } - - ////////////////////////////////////////////////////////////////////// - // Find a data object or return 0 if not found - ////////////////////////////////////////////////////////////////////// - - DataObjectImpl* DataObjectImpl::findDataObject(char* token, long* index) - { - // name , name[int], name[x=y] name.int - char c = 0; - char* beginbrace = strchr(token,'['); - char* endbrace = strchr(token,']'); - char* dot = strchr(token,'.'); - char* breaker = 0; - - - if (dot != 0) - { - if (beginbrace != 0) - { - breaker = (beginbrace < dot)? beginbrace:dot; - } - else - { - breaker = dot; - } - } - else - { - breaker = beginbrace; - } - - if (breaker == 0){ - // its this object, and a property thereof - *index = -1; - const Property& p = getProperty(token); - return getDataObjectImpl(p); - - } - - c = *breaker; - *breaker = 0; - const Property& p = getProperty(token); - *breaker = c; - - - breaker++; - - if (endbrace != 0) - { - *endbrace = 0; - } - - char* eq = strchr(breaker,'='); - - if (eq == 0) - { - int val = atoi(breaker); - DataObjectList& list = getList(p); - - // The spec says that depts[1] is the first element, - // as is depts.0 - - if (beginbrace != 0)val--; - - if (endbrace != 0)*endbrace = ']'; - - if (val >=0 && val < list.size()) - { - DataObject* dob = list[val]; - *index = val; - return (DataObjectImpl*)dob; - } - *index = -1; - return 0; - } - *eq = 0; - // breaker is now propname - eq++; - // eq is now propval - - DataObjectList& list = getList(p); - for (int li = 0 ; li < list.size() ; ++li) - { - // TODO comparison for double not ok - - const Type & t = list[li]->getType(); - const Property& p = list[li]->getProperty(breaker); - int ok = 0; - - switch (p.getTypeEnum()) - { - case Type::BooleanType: - { - // getCString will return "true" or "false" - if (!strcmp(eq,list[li]->getCString(p))) ok = 1; - } - break; - - case Type::ByteType: - { - char cc = (char)eq[0]; - // getByte return a char - if (cc == list[li]->getByte(p)) ok = 1; - } - break; - - case Type::CharacterType: - { - wchar_t wc = (wchar_t)((wchar_t*)eq)[0]; - // TODO - this is not a very accesible way of storing a wchar - if (wc == list[li]->getCharacter(p)) ok = 1; - } - break; - - case Type::IntegerType: - { - long ic = atol(eq); - if (ic == list[li]->getInteger(p)) ok = 1; - } - break; - - case Type::DateType: - { - long dc = atol(eq); - if (dc == (long)(list[li]->getDate(p).getTime())) ok = 1; - } - break; - - case Type::DoubleType: - { - // TODO - double needs a bigger size than float - long double ldc = (long double)atof(eq); - if (ldc == list[li]->getDouble(p)) ok = 1; - } - break; - - case Type::FloatType: - { - float fc = atof(eq); - if (fc == list[li]->getFloat(p)) ok = 1; - } - break; - - case Type::LongType: - { -#if defined(WIN32) || defined (_WINDOWS) - int64_t lic = (int64_t)_atoi64(eq); -#else - int64_t lic = (int64_t)strtoll(eq, NULL, 0); -#endif - - if (lic == list[li]->getLong(p)) ok = 1; - } - break; - - case Type::ShortType: - { - short sic = atoi(eq); - if (sic == list[li]->getShort(p)) ok = 1; - } - break; - - - case Type::BytesType: - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - { - - if (!strcmp(eq, list[li]->getCString(p))) ok = 1; - // try with quotes too - char *firstquote = strchr(eq,'"'); - char *firstsingle = strchr(eq,'\''); - char searchchar = 0; - - if (firstsingle == 0) - { - if (firstquote != 0) - { - searchchar = '"'; - } - } - else - { - if (firstquote != 0 && firstquote < firstsingle) - { - searchchar = '"'; - } - else - { - searchchar = '\''; - firstquote = firstsingle; - } - } - - if (searchchar != 0) - { - char* ender = strchr(firstquote+1,searchchar); - if (ender != 0) - { - *ender = 0; - if (!strcmp(firstquote+1, list[li]->getCString(p))) ok = 1; - *ender = searchchar; - } - } - } - break; - - case Type::DataObjectType: - break; - - default: - break; - } - - if (ok == 1) - { - *--eq='='; - if (endbrace != 0)*endbrace = ']'; - DataObject* dob = list[li]; - *index = li; - return (DataObjectImpl*)dob; - } - } - if (endbrace != 0)*endbrace = ']'; - *--eq='='; - return 0; - } -DataObjectImpl* DataObjectImpl::findDataObject(const SDOString& token, long* index) -{ - // name , name[int], name[x=y] name.int - // char c = 0; - size_t beginbrace = token.find('['); - size_t dot = token.find('.'); - size_t breaker = 0; - -// char* beginbrace = strchr(token,'['); -// char* endbrace = strchr(token,']'); -// char* dot = strchr(token,'.'); -// char* breaker = 0; - - if (dot != string::npos) - { - if (beginbrace != string::npos) - { - breaker = (beginbrace < dot) ? beginbrace : dot; - } - else - { - breaker = dot; - } - } - else - { - breaker = beginbrace; - } - - if (breaker == string::npos){ - // its this object, and a property thereof - *index = -1; - const Property& p = getProperty(token); - return getDataObjectImpl(p); - } - - // We did find a breaker character. - const Property& p = getProperty(SDOString(token, 0, breaker)); - - breaker++; - - size_t endbrace = token.find(']'); - SDOString breakerStr = token.substr(breaker, (endbrace - breaker)); - // Search for the first occurence of an = sign starting at the previously - // identified "breaker" character and ending at the endbrace just found. We - // need to make a new SDOString to contain that substring. - - size_t eq = breakerStr.find('='); - - if (eq == string::npos) - { - // There is no "=" sign - int val = atoi(breakerStr.c_str()); - DataObjectList& list = getList(p); - - // The spec says that depts[1] is the first element, as is depts.0 - if (beginbrace != string::npos) val--; - - if (val >=0 && val < list.size()) - { - DataObject* dob = list[val]; - *index = val; - return (DataObjectImpl*)dob; - } - *index = -1; - return 0; - } - - // We did find an "=" sign. - // *eq = 0; - SDOString PropertyName = token.substr(breaker, (eq - breaker)); - // breaker is now propname - eq++; - SDOString PropertyValue = token.substr(eq, (endbrace - eq)); - // eq is now propval - - DataObjectList& list = getList(p); - for (int li = 0 ; li < list.size() ; ++li) - { - // TODO comparison for double not ok - - const Type & t = list[li]->getType(); - const Property& p = list[li]->getProperty(PropertyName); - int ok = 0; - - switch (p.getTypeEnum()) - { - case Type::BooleanType: - { - // getCString will return "true" or "false" - if (!strcmp(PropertyValue.c_str(), list[li]->getCString(p))) ok = 1; - } - break; - - case Type::ByteType: - { - char cc = PropertyValue[0]; - // getByte return a char - if (cc == list[li]->getByte(p)) ok = 1; - } - break; - - case Type::CharacterType: - { - wchar_t wc = *((wchar_t*) PropertyValue.c_str()); - // wchar_t wc = (wchar_t)((wchar_t*)eq)[0]; - // TODO - this is not a very accesible way of storing a wchar - if (wc == list[li]->getCharacter(p)) ok = 1; - } - break; - - case Type::IntegerType: - { - long ic = atol(PropertyValue.c_str()); - if (ic == list[li]->getInteger(p)) ok = 1; - } - break; - - case Type::DateType: - { - long dc = atol(PropertyValue.c_str()); - if (dc == (long)(list[li]->getDate(p).getTime())) ok = 1; - } - break; - - case Type::DoubleType: - { - // TODO - double needs a bigger size than float - long double ldc = (long double)atof(PropertyValue.c_str()); - if (ldc == list[li]->getDouble(p)) ok = 1; - } - break; - - case Type::FloatType: - { - float fc = atof(PropertyValue.c_str()); - if (fc == list[li]->getFloat(p)) ok = 1; - } - break; - - case Type::LongType: - { -#if defined(WIN32) || defined (_WINDOWS) - int64_t lic = (int64_t)_atoi64(PropertyValue.c_str()); -#else - int64_t lic = (int64_t)strtoll(PropertyValue.c_str(), NULL, 0); -#endif - - if (lic == list[li]->getLong(p)) ok = 1; - } - break; - - case Type::ShortType: - { - short sic = atoi(PropertyValue.c_str()); - if (sic == list[li]->getShort(p)) ok = 1; - } - break; - - case Type::BytesType: - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - { - - if (!strcmp(PropertyValue.c_str(), list[li]->getCString(p))) ok = 1; - // try with quotes too - size_t firstquote = PropertyValue.find('"'); - size_t firstsingle = PropertyValue.find('\''); - - char searchchar = 0; - - if (firstsingle == string::npos) - { - if (firstquote != string::npos) - { - searchchar = '"'; - } - } - else - { - if (firstquote != string::npos && firstquote < firstsingle) - { - searchchar = '"'; - } - else - { - searchchar = '\''; - firstquote = firstsingle; - } - } - - if (searchchar != 0) - { - size_t ender = PropertyValue.find(searchchar, firstquote + 1); - if (ender != string::npos) - { - if (!strcmp(PropertyValue.substr(firstquote + 1, ender - firstquote).c_str(), list[li]->getCString(p))) - ok = 1; - } - } - } - break; - - case Type::DataObjectType: - break; - - default: - break; - } - - if (ok == 1) - { - DataObject* dob = list[li]; - *index = li; - return (DataObjectImpl*)dob; - } - } - return 0; -} - - - ////////////////////////////////////////////////////////////////////// - // Find a data object and a property name within it. - ////////////////////////////////////////////////////////////////////// - - char* DataObjectImpl::findPropertyContainer(const char* path, DataObjectImpl** din) - { - - // initially check for "#/" which indicates that we need to find the root - // object first - if (path == 0) return 0; - - if (strlen(path) <= 2) - { - if (path[0] == '#') - { - DataObjectImpl* root = this; - while (root->getContainerImpl() != 0) - { - root = root->getContainerImpl(); - } - *din = root; - return 0; - } - } - - if (path[0] == '#' && path[1] == '/') - { - DataObjectImpl* root = this; - while (root->getContainerImpl() != 0) - { - root = root->getContainerImpl(); - } - return root->findPropertyContainer(&path[2],din); - } - - DataObjectImpl* d; - char* i = (char*) strchr(path,'/'); - char* remaining = 0; - char* token = 0; - - if (i != 0) - { - int j = strlen(path) - strlen(i); - if (j > 0) - { - token = new char[j + 1]; - strncpy(token,path, j); - token[j] = 0; - } - if (strlen(i) > 1) - { - remaining = new char[strlen(i)]; - strcpy(remaining, i+1); - } - } - else - { - remaining = new char[strlen(path) + 1]; - strcpy(remaining,path); - } - - if (token == 0) - { - if (remaining != 0 && !strcmp(remaining,"..")) - { - /* Its the container itself */ - *din = getContainerImpl(); - delete remaining; - return 0; - } - - /* Its this data object - property could be empty or - valid or invalid - user must check */ - *din = this; - return remaining; - } - - if (!strcmp(token,"..")) { - /* Its derived from the container */ - d = getContainerImpl(); - /* carry on trying to find a property */ - if (d != 0) { - char* ret = d->findPropertyContainer(remaining, din); - delete token; - if (remaining) delete remaining; - return ret; - } - /* Give up - no container */ - delete token; - if (remaining) delete remaining; - *din = 0; - return 0; - } - - - /* Try to find a property ....*/ - long l; - d = findDataObject(token,&l); - if (d != 0) { - char* ret = d->findPropertyContainer(remaining,din); - delete token; - if (remaining) delete remaining; - return ret; - } - - /* Give up its not in the tree */ - - delete token; - if (remaining) delete remaining; - *din = 0; - return 0; - } - SDOString DataObjectImpl::findPropertyContainer(const SDOString& path, DataObjectImpl** din) - { - // initially check for "#/" which indicates that we need to find the root object first - if (path.empty()) return 0; - - if (path.length() <= 2) - { - if (path[0] == '#') - { - DataObjectImpl* root = this; - while (root->getContainerImpl() != 0) - { - root = root->getContainerImpl(); - } - *din = root; - return SDOString(); - } - } - - if (path[0] == '#' && path[1] == '/') - { - DataObjectImpl* root = this; - while (root->getContainerImpl() != 0) - { - root = root->getContainerImpl(); - } - return root->findPropertyContainer(SDOString(path, 2), din); - } - - DataObjectImpl* d; - size_t slashPos = path.find('/'); // i is the subscript of the found character - SDOString remaining; - SDOString token; - - if (slashPos != string::npos) // If we found a slash character - { - if (slashPos > 0) // If there is something before the slash - { - token.assign(path, 0, slashPos); - } - if ((path.length() - slashPos) > 1) // If there is something after the slash - { - remaining.assign(path, slashPos + 1, string::npos); - } - } - else - { - remaining = path; - } - - if (token.empty()) - { - if (remaining == "..") - { - /* Its the container itself */ - *din = getContainerImpl(); - return SDOString(); - } - - /* Its this data object - property could be empty or - valid or invalid - user must check */ - *din = this; - return remaining; - } - - if (token == "..") { - /* Its derived from the container */ - d = getContainerImpl(); - /* carry on trying to find a property */ - if (d != 0) { - return d->findPropertyContainer(remaining, din); - } - /* Give up - no container */ - *din = 0; - return 0; - } - - /* Try to find a property ....*/ - long l; - d = findDataObject(token, &l); - if (d != 0) { - return d->findPropertyContainer(remaining, din); - } - - /* Give up its not in the tree */ - *din = 0; - return 0; - } - - - - - // Returns a read-only List of the Properties currently used in thIs DataObject. - // ThIs list will contain all of the properties in getType().getProperties() - // and any properties where isSet(property) is true. - // For example, properties resulting from the use of - // open or mixed XML content are present if allowed by the Type. - // The list does not contain duplicates. - // The order of the properties in the list begins with getType().getProperties() - // and the order of the remaining properties is determined by the implementation. - // The same list will be returned unless the DataObject is updated so that - // the contents of the list change - // @return the list of Properties currently used in thIs DataObject. - - PropertyList /* Property */ DataObjectImpl::getInstanceProperties() - { - std::vector<PropertyImpl*> theVec; - PropertyList propList = getType().getProperties(); - for (int i = 0 ; i < propList.size() ; ++i) - { - Property& p = propList[i]; - theVec.insert(theVec.end(),(PropertyImpl*)&p); - } - std::list<PropertyImpl>::iterator j; - for (j = openProperties.begin() ; - j != openProperties.end() ; ++j) - { - theVec.insert(theVec.end(),&(*j)); - } - return PropertyList(theVec); - } - - void DataObjectImpl::setInstancePropertyType(unsigned int index, - const Type* t) - { - if (index >= openBase && index - openBase < openProperties.size()) - { - std::list<PropertyImpl>::iterator j; - unsigned int count = openBase; - for (j = openProperties.begin() ; - j != openProperties.end() ; ++j) - { - if (count == index) - { - openProperties.insert(j, - PropertyImpl(getType(), - (*j).getName(), - (TypeImpl&)*t, - (*j).isMany(), - (*j).isReadOnly(), - (*j).isContainment())); - - DataFactory* df = factory; - ((DataFactoryImpl*)df)->addOpenProperty( - PropertyImpl(getType(), - (*j).getName(), - (TypeImpl&)*t, - (*j).isMany(), - (*j).isReadOnly(), - (*j).isContainment())); - - openProperties.erase(j); - - return; - } - count++; - } - } - return; - } - - // Returns the Sequence for thIs DataObject. - // When Type.isSequencedType() == true, - // the Sequence of a DataObject corresponds to the - // XML elements representing the values of its properties. - // Updates through DataObject and the Lists or Sequences returned - // from DataObject operate on the same data. - // When Type.isSequencedType() == false, null is returned. - // @return the <code>Sequence</code> or null. - - SequenceImpl* DataObjectImpl::getSequenceImpl() - { - - return sequence; - } - - SequencePtr DataObjectImpl::getSequence() - { - return (SequencePtr)sequence; - } - - SequencePtr DataObjectImpl::getSequence(const char* path) - { - DataObject* d = (DataObject*)getDataObject(path); - if (d) return d->getSequence(); - return 0; - } - - SequencePtr DataObjectImpl::getSequence(unsigned int propertyIndex) - { - DataObject* d = (DataObject*)getDataObject(propertyIndex); - if (d) return d->getSequence(); - return 0; - } - - SequencePtr DataObjectImpl::getSequence(const Property& property) - { - DataObject* d = (DataObject*)getDataObject(property); - if (d) return d->getSequence(); - return 0; - } - - - - ChangeSummaryPtr DataObjectImpl::getChangeSummary(const char* path) - { - DataObjectImpl* d = getDataObjectImpl(path); - return d->getChangeSummary(); - } - - ChangeSummaryPtr DataObjectImpl::getChangeSummary(unsigned int propIndex) - { - DataObjectImpl* d = getDataObjectImpl(propIndex); - return d->getChangeSummary(); - } - - ChangeSummaryPtr DataObjectImpl::getChangeSummary(const Property& prop) - { - DataObjectImpl* d = getDataObjectImpl(prop); - return d->getChangeSummary(); - - } - - ChangeSummaryPtr DataObjectImpl::getChangeSummary() - { - if (getType().isChangeSummaryType()) - { - return (ChangeSummaryPtr)localCS; - } - // The changesummaryobject MUST be a change summary type - // but as an additional check against looping, I will use - // a redundent getSummary() method. - // TODO - remove this. - if (changesummaryobject != 0) return - (ChangeSummaryPtr)(changesummaryobject->getSummary()); - return 0; - } - - - ChangeSummaryImpl* DataObjectImpl::getChangeSummaryImpl() - { - if (getType().isChangeSummaryType()) - { - return localCS; - } - // The changesummaryobject MUST be a change summary type - // but as an additional check against looping, I will use - // a redundent getSummary() method. - // TODO - remove this. - if (changesummaryobject != 0) return changesummaryobject->getSummary(); - return 0; - } - - ChangeSummaryImpl* DataObjectImpl::getSummary() - { - return localCS; - } - - // sets a property of either this object or an object reachable from it, - // as identified by the specified path, - // to the specified value. - // @param path the path to a valid object and property. - // @param value the new value for the property. - - void DataObjectImpl::setDataObject(const char* path, DataObjectPtr value) - { - DataObjectImpl* d; - char* prop = findPropertyContainer(path, &d); - if (d != 0) - { - if (prop != 0) { - const PropertyImpl* p = d->getPropertyImpl(prop); - if (p == 0 && d->getType().isOpenType()) - { - if (value != 0) - { - p = d->defineDataObject(prop, value->getType()); - } - } - if (p != 0) - { - if (p->isMany()) - { - DataObjectList& dol = d->getList((Property&)*p); - long index; - DataObjectImpl* dx = d->findDataObject(prop,&index); - if (index >= 0) - { - if(index < dol.size()) - { - dol.setDataObject((unsigned int)index,value); - } - else - { - dol.append(value); - } - delete prop; - return; - } - string msg("Set of data object on many valued item"); - msg += path; - SDO_THROW_EXCEPTION("setDataObject", SDOUnsupportedOperationException, - msg.c_str()); - } - else - { - d->setDataObject((Property&)*p,value); - delete(prop); - return; - } - } - } - } - if (prop != 0)delete prop; - - string msg("Path not valid:"); - msg += path; - SDO_THROW_EXCEPTION("setDataObject", SDOPathNotFoundException, - msg.c_str()); - } - -void DataObjectImpl::setDataObject(const SDOString& path, DataObjectPtr value) -{ - DataObjectImpl* d; - SDOString prop = findPropertyContainer(path, &d); - if (d != 0) - { - if (!prop.empty()) { - const PropertyImpl* p = d->getPropertyImpl(prop); - if (p == 0 && d->getType().isOpenType()) - { - if (value != 0) - { - p = d->defineDataObject(prop, value->getType()); - } - } - if (p != 0) - { - if (p->isMany()) - { - DataObjectList& dol = d->getList((Property&)*p); - long index; - DataObjectImpl* dx = d->findDataObject(prop,&index); - if (index >= 0) - { - if(index < dol.size()) - { - dol.setDataObject((unsigned int)index,value); - } - else - { - dol.append(value); - } - return; - } - string msg("Set of data object on many valued item"); - msg += path; - SDO_THROW_EXCEPTION("setDataObject", SDOUnsupportedOperationException, - msg.c_str()); - } - else - { - d->setDataObject((Property&)*p,value); - return; - } - } - } - } - - string msg("Path not valid:"); - msg += path; - SDO_THROW_EXCEPTION("setDataObject", SDOPathNotFoundException, - msg.c_str()); -} - - void DataObjectImpl::validateIndex(unsigned int index) - { - PropertyList pl = getType().getProperties(); - - if (index >= pl.size()) { - - // open type support - if (getType().isOpenType()) - { - if (index < openBase + openProperties.size()) - { - return; - } - } - - string msg("Index of property out of range:"); - msg += index; - SDO_THROW_EXCEPTION("Index Validation", SDOIndexOutOfRangeException, - msg.c_str()); - } - } - - void DataObjectImpl::transferChildren(DataObject* d, DataFactory* f) - { - bool isData = false; - PropertyList pl = d->getInstanceProperties(); - for (int i=0;i<pl.size();i++) - { - // even primitives need their DF fixed up - if (pl[i].getType().isDataType()) - { - isData = true; - } - - if (!d->isSet(pl[i]) || d->isNull(pl[i])) - { - continue; - } - if (pl[i].isMany()) - { - DataObjectList& dl = d->getList(pl[i]); - for (int j=0;j<dl.size();j++) - { - - DataObject* d2 = dl[j]; - if (d2) { - ((DataObjectImpl*)d2)->setDataFactory(f); - if (!isData)transferChildren(d2,f); - } - } - } - else - { - DataObject* d3 = d->getDataObject(pl[i]); - if (d3) - { - ((DataObjectImpl*)d3)->setDataFactory(f); - if (!isData)transferChildren(d3,f); - } - } - } - } - - - - void DataObjectImpl::checkFactory(DataObjectPtr dob, - unsigned int propertyIndex) - { - - DataObjectImpl* d = (DataObjectImpl*)(DataObject*)dob; - - if (d->getDataFactory() == getDataFactory()) return; - - // Temporary alteration to test the feasibility and - // problems associated with allowing data object 'migration' - // lets move this one and all its children to the factory of the - // new parent if the factories are compatible. - - DataFactoryImpl* f = (DataFactoryImpl*)getDataFactory(); - - if (d->getContainer() != 0) - { - string msg("Insertion of object from another factory is only allowed if the parent is null: "); - const Type& t = d->getType(); - msg += t.getURI(); - msg += "#"; - msg += t.getName(); - msg += " into property "; - msg += getProperty(propertyIndex).getName(); - msg += " of "; - msg += getType().getURI(); - msg += "#"; - msg += getType().getName(); - SDO_THROW_EXCEPTION("checkFactory", SDOInvalidConversionException, - msg.c_str()); - } - - if (f->isCompatible(d->getDataFactory(),d)) - { - d->setDataFactory(getDataFactory()); - transferChildren(d,getDataFactory()); - return; - } - - - // This is the default position.... - - string msg("Insertion from incompatible factory "); - const Type& t = d->getType(); - msg += t.getURI(); - msg += "#"; - msg += t.getName(); - msg += " into property "; - msg += getProperty(propertyIndex).getName(); - msg += " of "; - msg += getType().getURI(); - msg += "#"; - msg += getType().getName(); - SDO_THROW_EXCEPTION("checkFactory", SDOInvalidConversionException, - msg.c_str()); - } - - - void DataObjectImpl::checkType( const Property& prop, - const Type& objectType) - { - const Type& propType = prop.getType(); - if (propType.equals(objectType)) return; - - DataFactory* df = (DataFactory*)factory; - - const TypeImpl* ti = ((DataFactoryImpl*)df)->findTypeImpl - (objectType.getURI(),objectType.getName()); - if (ti != 0) - { - do - { - ti = (const TypeImpl*)ti->getBaseType(); - if (ti == 0) break; - if (propType.equals(*ti)) return; - } while (ti != 0); - - // allow types of any substitutes - const PropertyImpl* pi = - getPropertyImpl(getPropertyIndex(prop)); - if (pi != 0) - { - unsigned int subcount = pi->getSubstitutionCount(); - for (int i=0;i<subcount;i++) - { - const Type* tsub = pi->getSubstitutionType(i); - if (tsub != 0 && tsub->equals(objectType)) return; - } - } - } - - // no match.. - string msg("Insertion of object of incompatible type "); - msg += objectType.getURI(); - msg += "#"; - msg += objectType.getName(); - msg += " into property of type "; - msg += propType.getURI(); - msg += "#"; - msg += propType.getName(); - SDO_THROW_EXCEPTION("TypeCheck", SDOInvalidConversionException, - msg.c_str()); - } - - void DataObjectImpl::setDataObject(unsigned int propertyIndex, DataObjectPtr value) - { - setDataObject(getProperty(propertyIndex), value); - } - - void DataObjectImpl::setDataObject(const Property& prop, DataObjectPtr value) - { - unsigned int propertyIndex = getPropertyIndex(prop); - - - if (value != 0) - { - checkFactory(value, propertyIndex); - checkType(prop,value->getType()); - } - - validateIndex(propertyIndex); - - if (prop.isReference() && value != 0) - { - // just need to make sure that the object is already part of our - // tree. - DataObjectImpl* r1 = this; - while (r1->getContainerImpl() != 0) - { - r1 = r1->getContainerImpl(); - } - DataObjectImpl* r2 = (DataObjectImpl*)(DataObject*)value; - while (r2->getContainerImpl() != 0) - { - r2 = r2->getContainerImpl(); - } - if (r1 != r2) - { - string msg("Set of a reference to an object outside the graph"); - SDO_THROW_EXCEPTION("setDataObject", SDOUnsupportedOperationException, - msg.c_str()); - } - } - - if ((prop.isMany())) - { - string msg("Set operation on a many valued property:"); - msg += prop.getName(); - SDO_THROW_EXCEPTION("setDataObject", SDOUnsupportedOperationException, - msg.c_str()); - } - - - if (value == 0) - { - PropertyValueMap::iterator j; - for (j = PropertyValues.begin(); j != PropertyValues.end(); ++j) - { - if ((*j).first == propertyIndex) { - if (prop.isReference()) - { - ((*j).second)->unsetReference(this, prop); - } - else - { - // log both deletion and change - change is not - // automatically recorded by deletion. - ((*j).second)->logDeletion(); - } - logChange(prop); - (*j).second = RefCountingPointer<DataObjectImpl>(0); - - return; - } - } - logChange(prop); - PropertyValues.insert(PropertyValues.end(),rdo(propertyIndex,(DataObjectImpl*)0)); - return; - } - - DataObject* dob = value; - PropertyValueMap::iterator i; - for (i = PropertyValues.begin(); i != PropertyValues.end(); ++i) - { - if ((*i).first == propertyIndex) { - - if (prop.isReference()) - { - ((*i).second)->unsetReference(this, prop); - } - else - { - // log both deletion and change - change is not - // automatically recorded by deletion. - ((*i).second)->logDeletion(); - } - logChange(prop); - - (*i).second = RefCountingPointer<DataObjectImpl>((DataObjectImpl*)dob); - - - if (prop.isReference()) - { - ((DataObjectImpl*)dob)->setReference(this, prop); - } - else - { - logCreation((*i).second, this, prop); - } - return; - } - } - if (prop.isReference()) - { - ((DataObjectImpl*)dob)->setReference(this, prop); - } - else - { - ((DataObjectImpl*)dob)->setContainer(this); - ((DataObjectImpl*)dob)->setApplicableChangeSummary(); - // log creation before putting into property values. - // also log change - not done by logCreation - logCreation((DataObjectImpl*)dob, this, prop); - } - - logChange(prop); - - PropertyValues.insert(PropertyValues.end(),rdo(propertyIndex,(DataObjectImpl*)dob)); - return; - } - - - bool DataObjectImpl::isValid(const char* path) - { - DataObjectImpl* d; - char* prop = findPropertyContainer(path,&d); - if (d != 0) { - if (prop != 0) { - const Property& p = d->getProperty(prop); - delete prop; - return d->isValid(p); - } - } - if (prop != 0)delete prop; - string msg("Invalid path:"); - msg += path; - SDO_THROW_EXCEPTION("isSet" ,SDOPathNotFoundException, - msg.c_str()); - } - - - // Returns whether a property of either this object or an object reachable - // from it, as identified by the specified path, - // is considered to be set. - // @param path the path to a valid Object* and property. - - bool DataObjectImpl::isSet(const char* path) - { - DataObjectImpl* d; - char* prop = findPropertyContainer(path,&d); - if (d != 0) { - if (prop != 0) { - const Property& p = d->getProperty(prop); - delete prop; - return d->isSet(p); - } - } - if (prop != 0)delete prop; - string msg("Invalid path:"); - msg += path; - SDO_THROW_EXCEPTION("isSet" ,SDOPathNotFoundException, - msg.c_str()); - } - - bool DataObjectImpl::isValid(unsigned int propertyIndex) - { - return isValid(getProperty(propertyIndex)); - } - - bool DataObjectImpl::isValid(const Property& p) - { - if (p.isDefaulted()) return true; - if (isSet(p))return true; - return false; - } - - bool DataObjectImpl::isSet(unsigned int propertyIndex) - { - return isSet(getProperty(propertyIndex), propertyIndex); - } - - bool DataObjectImpl::isSet(const Property& property) - { - return isSet(property, getPropertyIndex(property)); - } - - bool DataObjectImpl::isSet(const Property& prop, unsigned int propertyIndex) - { - PropertyValueMap::iterator i; - for (i = PropertyValues.begin(); i != PropertyValues.end(); ++i) - { - if ((*i).first == propertyIndex) { - if (prop.isMany()) - { - DataObjectImpl* dol = (*i).second; - if (dol != 0 && dol->getList().size() == 0) - { - return false; - } - } - return true; - } - } - return false; - } - - - // unSets a property of either this Object or an Object reachable from it, - // as identified by the specified path. - // @param path the path to a valid Object and property. - // @see #unSet(Property) - - void DataObjectImpl::unset(const char* path) - { - - DataObjectImpl* d; - char* prop = findPropertyContainer(path,&d); - if (d != 0) - { - if (prop != 0){ - const Property& p = d->getProperty(prop); - if (p.isMany()) - { - char *c; - if ((c = strchr(prop,'[')) != 0) - { - char *c1 = strchr(c,']'); - if (c1 != 0)*c1 = 0; - unsigned int i = atoi(++c); - if (i > 0){ - i--; - DataObjectList& li = d->getList(p); - li.remove(i); - } - delete prop; - return; - } - if ((c = strchr(prop,'.')) != 0) - { - unsigned int i = atoi(++c); - DataObjectList& li = d->getList(p); - li.remove(i); - delete prop; - return; - } - } - delete prop; - d->unset(p); - return; - } - } - if (prop != 0) delete prop; - - string msg("Invalid path:"); - msg += path; - SDO_THROW_EXCEPTION("unset", SDOPathNotFoundException, - msg.c_str()); - } - - void DataObjectImpl::unset(unsigned int propertyIndex) - { - unset(getProperty(propertyIndex)); - } - - void DataObjectImpl::unset(const Property& p) - { - PropertyValueMap::iterator i; - unsigned int index = getPropertyIndex(p); - - if (getType().isSequencedType()) - { - Sequence* sq = getSequence(); - sq->removeAll(p); - } - - for (i = PropertyValues.begin(); i != PropertyValues.end(); ++i) - { - if ((*i).first == index) { - DataObjectImplPtr dol = (*i).second; - if (p.getType().isDataType()) - { - dol->clearReferences(); - logChange(index); - if (p.isMany()) { - DataObjectList& dl = dol->getList(); - while (dl.size() > 0) - { - RefCountingPointer<DataObject> dli = dl.remove(0); - } - } - else - { - PropertyValues.erase(i); - } - } - else { - // if its a reference, we dont want to delete anything - if (!p.isReference()) - { - if (dol) { - dol->clearReferences(); - if (p.isMany()) { - DataObjectList& dl = dol->getList(); - while (dl.size() > 0) - { - if (p.getType().isDataObjectType()) - { - DataObject* dob = dl[0]; - ((DataObjectImpl*)dob)->logDeletion(); - } - // the remove will record a change - // remove will also clear the container. - RefCountingPointer<DataObject> dli = dl.remove(0); - } - } - else - { - PropertyValues.erase(i); - dol->logDeletion(); - logChange(index); - } - } - else - { - logChange(index); - PropertyValues.erase(i); - } - } - else { - logChange(index); - PropertyValues.erase(i); - } - } - if (getType().isOpenType() && index >= openBase) - { - if (p.isMany()) - { - PropertyValues.erase(i); - } - undefineProperty(index); - } - return; - } - } - return; - } - - - - // Returns the value of a DataObject property identified by - // the specified path. - // @param path the path to a valid object and property. - // @return the DataObject value of the specified property. - - RefCountingPointer<DataObject> DataObjectImpl::getDataObject(const char* path) - { - DataObjectImpl* ptr = getDataObjectImpl(path); - return RefCountingPointer<DataObject> ((DataObject*)ptr); - } - - RefCountingPointer<DataObject> DataObjectImpl::getDataObject(const SDOString& path) - { - DataObjectImpl* ptr = getDataObjectImpl(path); - return RefCountingPointer<DataObject> ((DataObject*)ptr); - } - - DataObjectImpl* DataObjectImpl::getDataObjectImpl(const char* path) - { - - DataObjectImpl* d = 0; - char* prop = findPropertyContainer(path,&d); - if (d != 0) { - if (prop != 0) { - if (strchr(prop,'[') || strchr(prop,'.')) { - /* Its a multlvalued property */ - long l; - DataObjectImpl* theob = d->findDataObject(prop,&l); - delete prop; - if (theob == 0) { - string msg("Get DataObject - index out of range:"); - msg += path; - SDO_THROW_EXCEPTION("getDataObject" ,SDOIndexOutOfRangeException, - msg.c_str()); - } - return theob; - } - else - { - if (strlen(prop) == 0) - { - delete prop; - prop = 0; - return d; - } - const Property& p = d->getProperty(prop); - delete prop; - prop = 0; - return d->getDataObjectImpl(p); - } - } - else { - return d; - } - } - if (prop != 0)delete prop; - - string msg("Invalid path:"); - msg += path; - SDO_THROW_EXCEPTION("getDataObject" ,SDOPathNotFoundException, - msg.c_str()); - } - - // +++ - - DataObjectImpl* DataObjectImpl::getDataObjectImpl(const SDOString& path) - { - - DataObjectImpl* d = 0; - SDOString prop = findPropertyContainer(path,&d); - // char* prop = findPropertyContainer(path,&d); - if (d != 0) { - if (!prop.empty()) { - if (prop.find_first_of("[.") != string::npos) { - /* Its a multlvalued property */ - long l; - DataObjectImpl* theob = d->findDataObject(prop,&l); - if (theob == 0) { - string msg("Get DataObject - index out of range:"); - msg += path; - SDO_THROW_EXCEPTION("getDataObject" ,SDOIndexOutOfRangeException, - msg.c_str()); - } - return theob; - } - else - { - if (prop.length() == 0) - { - return d; - } - const Property& p = d->getProperty(prop); - return d->getDataObjectImpl(p); - } - } - else { - return d; - } - } - - string msg("Invalid path:"); - msg += path; - SDO_THROW_EXCEPTION("getDataObject" ,SDOPathNotFoundException, - msg.c_str()); - } - - // --- - - RefCountingPointer<DataObject> DataObjectImpl::getDataObject(unsigned int propertyIndex) - { - if ((getProperty(propertyIndex).isMany())) - { - string msg("get operation on a many valued property:"); - msg += getProperty(propertyIndex).getName(); - SDO_THROW_EXCEPTION("getDataObject", SDOUnsupportedOperationException, - msg.c_str()); - } - DataObjectImpl* ptr = getDataObjectImpl(propertyIndex);; - return RefCountingPointer<DataObject>((DataObject*)ptr); - } - - DataObjectImpl* DataObjectImpl::getDataObjectImpl(unsigned int propertyIndex) - { - PropertyValueMap::iterator i; - for (i = PropertyValues.begin(); i != PropertyValues.end(); ++i) - { - if ((*i).first == propertyIndex) - { - DataObject* dob = (*i).second; - if (dob == 0 || ((DataObjectImpl*)dob)->isNull())return 0; - return (DataObjectImpl*)dob; - } - } - return 0; - } - - - RefCountingPointer<DataObject> DataObjectImpl::getDataObject(const Property& property) - { - DataObjectImpl* ptr = getDataObjectImpl(property); - return RefCountingPointer<DataObject>((DataObject*)ptr); - } - - DataObjectImpl* DataObjectImpl::getDataObjectImpl(const Property& property) - { - return getDataObjectImpl(getPropertyIndex(property)); - } - - - - - - // Returns a new DataObject contained by this Object using the specified property, - // which must be a containment property. - // The type of the created Object is the declared type of the specified property. - - RefCountingPointer<DataObject> DataObjectImpl::createDataObject(const char* propertyName) - { - // Throws runtime exception for type or property not found - - const Property& p = getProperty(propertyName); - return createDataObject(p); - } - - // Returns a new DataObject contained by this Object using the specified property, - // which must be a containment property. - // The type of the created Object is the declared type of the specified property. - - RefCountingPointer<DataObject> DataObjectImpl::createDataObject(unsigned int propertyIndex) - { - const Property& p = getProperty(propertyIndex); - return createDataObject(p); - } - - // Returns a new DataObject contained by this Object using the specified property, - // which must be a containment property. - // The type of the created Object is the declared type of the specified property. - - RefCountingPointer<DataObject> DataObjectImpl::createDataObject(const Property& property) - { - const Type& tp = property.getType(); - return createDataObject(property,tp.getURI(), tp.getName()); - } - - - // Returns a new DataObject contained by this Object using the specified property, - // which must be a containment property. - // The type of the created Object is the declared type of the specified property. - - RefCountingPointer<DataObject> DataObjectImpl::createDataObject(const Property& property, const char* namespaceURI, - const char* typeName) - { - if (!property.isContainment()) - { - string msg("Create data object on non-containment property:"); - msg += property.getName(); - SDO_THROW_EXCEPTION("createDataObject", SDOUnsupportedOperationException, - msg.c_str()); - } - - DataFactory* df = getDataFactory(); - if (property.isMany()) { - /* add to the list */ - RefCountingPointer<DataObject> ptr = df->create(namespaceURI, typeName); - DataObject* dob = ptr; - ((DataObjectImpl*)dob)->setContainer(this); - ((DataObjectImpl*)dob)->setApplicableChangeSummary(); - - // log creation before adding to list - the change must record the old state - // of the list - logCreation(((DataObjectImpl*)dob), this, property); - //logChange(property); - - DataObjectImpl* theDO = getDataObjectImpl(property); - if ( theDO == 0) { /* No value set yet */ - unsigned int ind = getPropertyIndex(property); - RefCountingPointer<DataObject> listptr = - df->create(Type::SDOTypeNamespaceURI,"DataObject"); - - DataObject* doptr = listptr; - PropertyValues.insert(PropertyValues.end(),rdo(ind,(DataObjectImpl*)doptr)); - ((DataObjectImpl*)doptr)->setContainer(this); - ((DataObjectImpl*)doptr)->setApplicableChangeSummary(); - - DataObjectListImpl* list = new DataObjectListImpl(df, - this, ind, namespaceURI,typeName); - - ((DataObjectImpl*)doptr)->setList(list); - // the append will log a change to the property. - list->append(ptr); - - // now done by list append - //if (getType().isSequencedType()) - //{ - // SequenceImpl* sq = getSequenceImpl(); - // sq->push(property,0); - //} - } - else - { - DataObjectList& list = theDO->getList(); - // the append will log a change to the property, and update the - // sequence - list.append(ptr); - //if (getType().isSequencedType()) - //{ - // SequenceImpl* sq = getSequenceImpl(); - // sq->push(property,list.size()-1); - //} - - } - return ptr; - - } - else { - unset(property); - DataObjectImpl* ditem = - new DataObjectImpl(df, df->getType(namespaceURI, typeName)); - ditem->setContainer(this); - ditem->setApplicableChangeSummary(); - - // log both creation and change - creations no longer log - // changes automatically. - - logCreation(ditem, this, property); - logChange(property); - - PropertyValues.insert(PropertyValues.end(), - rdo(getPropertyIndex(property),ditem)); - if (getType().isSequencedType()) - { - SequenceImpl* sq = getSequenceImpl(); - sq->push(property,0); - } - return RefCountingPointer<DataObject>((DataObject*)ditem); - } - return 0; - } - - void DataObjectImpl::setList( DataObjectList* theList) - { - listValue = (DataObjectListImpl*)theList; - } - - - bool DataObjectImpl::remove(DataObjectImpl* indol) - { - PropertyValueMap::iterator i; - for (i = PropertyValues.begin(); i != PropertyValues.end(); ++i) - { - const Property& prop = getProperty((*i).first); - if (prop.isMany()) - { - DataObjectList& dol = ((*i).second)->getList(); - for (int j=0;j< dol.size(); j++) - { - if (dol[j] == indol) - { - indol->logDeletion(); - logChange(prop); - indol->setContainer(0); - dol.remove(j); - return true; - } - } - } - DataObjectImpl* tmp = (*i).second; - if (tmp == indol) { - indol->logDeletion(); - logChange(prop); - indol->setContainer(0); - PropertyValues.erase(i); - return true; - } - } - return false; - } - - // remove this Object from its container and dont unSet all its properties. - - void DataObjectImpl::detach() - { - // remove this data object from its tree - clearReferences(); - if (container == 0) return; - container->remove(this); - return ; - } - - void DataObjectImpl::clear() - { - // clear this objects state - PropertyValueMap::iterator i = PropertyValues.begin(); - - while (i != PropertyValues.end()) - { - unset((*i).first); - i = PropertyValues.begin(); - } - return ; - } - - // Returns the containing Object - // of 0 if there is no container. - - RefCountingPointer<DataObject> DataObjectImpl::getContainer() - { - DataObject* dob = (DataObject*)container; - return RefCountingPointer<DataObject> (dob); - } - - DataObjectImpl* DataObjectImpl::getContainerImpl() - { - return container; - } - - void DataObjectImpl::setContainer(DataObjectImpl* d) - { - container = d; - } - - const Property* DataObjectImpl::findInProperties(DataObject* ob) - { - PropertyValueMap::iterator i; - for (i = PropertyValues.begin() ;i != PropertyValues.end() ; ++i) - { - if (getProperty((*i).first).isReference()) continue; - if (getProperty((*i).first).isMany()) - { - DataObjectList& dl = ((*i).second)->getList(); - for (int j = 0 ; j < dl.size(); j++) - { - if (dl[j] == ob) - { - return &(getProperty((*i).first)); - } - } - } - else - { - if ((*i).second == ob) - { - return &(getProperty((*i).first)); - } - } - } - return 0; // this can happen if the object has been detached - - //string msg("Object cannot find its containing property"); - //SDO_THROW_EXCEPTION("FindInProperties" ,SDOPropertyNotFoundException, - // msg.c_str()); - } - - // Return the Property of the data Object containing this data Object - // or 0 if there is no container. - - const Property& DataObjectImpl::getContainmentProperty() - { - if (container != 0) { - const Property* p = container->findInProperties(this); - if (p != 0)return *p; - } - SDO_THROW_EXCEPTION("getContainmentProperty" ,SDOPropertyNotFoundException, - "Object cannot find its containment property"); - } - - - // Returns the data Object's type. - // The type defines the properties available for reflective access. - - const Type& DataObjectImpl::getType() - { - return (const Type&)(*ObjectType); - } - - const Type::Types DataObjectImpl::getTypeEnum() - { - return ObjectType->getTypeEnum(); - } - - const TypeImpl& DataObjectImpl::getTypeImpl() - { - return (const TypeImpl&)*ObjectType; - } - - - // open type support - - const Property& DataObjectImpl::getProperty(const char* prop) - { - PropertyImpl* pi = getPropertyImpl(prop); - if (pi == 0) - { - string msg("Cannot find property:"); - msg += prop; - SDO_THROW_EXCEPTION("getProperty", SDOPropertyNotFoundException, - msg.c_str()); - - } - return (Property&)*pi; - } - const Property& DataObjectImpl::getProperty(const SDOString& prop) - { - PropertyImpl* pi = getPropertyImpl(prop); - if (pi == 0) - { - string msg("Cannot find property:"); - msg += prop; - SDO_THROW_EXCEPTION("getProperty", SDOPropertyNotFoundException, - msg.c_str()); - - } - return (Property&)*pi; - } - - PropertyImpl* DataObjectImpl::getPropertyImpl(const char* prop) - { - PropertyImpl* pi = getTypeImpl().getPropertyImpl(prop); - if (pi != 0) return pi; - - if (getType().isOpenType()) - { - std::list<PropertyImpl>::iterator j; - for (j=openProperties.begin(); - j != openProperties.end(); ++j) - { - if (!strcmp((*j).getName(), prop)) - { - return (PropertyImpl*)&(*j); - } - } - } - return 0; - } - PropertyImpl* DataObjectImpl::getPropertyImpl(const SDOString& prop) - { - PropertyImpl* pi = getTypeImpl().getPropertyImpl(prop); - if (pi != 0) return pi; - - if (getType().isOpenType()) - { - std::list<PropertyImpl>::iterator j; - for (j=openProperties.begin(); - j != openProperties.end(); ++j) - { - if (!strcmp((*j).getName(), prop.c_str())) - { - return (PropertyImpl*)&(*j); - } - } - } - return 0; - } - - DataFactory* DataObjectImpl::getDataFactory() - { - return factory; - } - - void DataObjectImpl::setDataFactory(DataFactory* df) - { - ObjectType = (TypeImpl*)&(df->getType(ObjectType->getURI(), - ObjectType->getName())); - factory = df; - } - - /////////////////////////////////////////////////////////////////////////// - // These finally are the setters/getters for primitives given - // that the data object is a primitive type. - /////////////////////////////////////////////////////////////////////////// - - - bool DataObjectImpl::getBoolean() - { - return getTypeImpl().convertToBoolean(value, valuelength); - } - - - char DataObjectImpl::getByte() - { - return getTypeImpl().convertToByte(value,valuelength); - - } - - - wchar_t DataObjectImpl::getCharacter() - { - return getTypeImpl().convertToCharacter(value,valuelength); - - } - - long DataObjectImpl::getInteger() - { - return getTypeImpl().convertToInteger(value,valuelength); - - } - - - long double DataObjectImpl::getDouble() - { - return getTypeImpl().convertToDouble(value,valuelength); - } - - - float DataObjectImpl::getFloat() - { - return getTypeImpl().convertToFloat(value,valuelength); - - } - - - - int64_t DataObjectImpl::getLong() - { - return getTypeImpl().convertToLong(value,valuelength); - - } - - - short DataObjectImpl::getShort() - { - return getTypeImpl().convertToShort(value,valuelength); - - } - - unsigned int DataObjectImpl::getString( wchar_t* outptr, unsigned int max) - { - if (outptr == 0 || max == 0) return valuelength; - return getTypeImpl().convertToString(value, outptr, valuelength, max); - - } - unsigned int DataObjectImpl::getBytes( char* outptr, unsigned int max) - { - if (outptr == 0 || max == 0) return valuelength; - return getTypeImpl().convertToBytes(value, outptr, valuelength, max); - - } - - const char* DataObjectImpl::getCString() - { - return getTypeImpl().convertToCString(value, &asStringBuffer, valuelength); - - } - - const SDODate DataObjectImpl::getDate() - { - return getTypeImpl().convertToDate(value, valuelength); /* time_t == long*/ - - } - - DataObjectImpl* DataObjectImpl::getDataObject() - { - return (DataObjectImpl*)getTypeImpl().convertToDataObject(value, valuelength); - - } - - - void DataObjectImpl::setBoolean(bool invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - } - - - void DataObjectImpl::setByte(char invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - - } - - - void DataObjectImpl::setCharacter(wchar_t invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - } - - void DataObjectImpl::setString(const wchar_t* invalue, unsigned int len) - { - valuelength = getTypeImpl().convert(&value,invalue, len); - return; - } - - void DataObjectImpl::setBytes(const char* invalue, unsigned int len) - { - valuelength = getTypeImpl().convert(&value,invalue, len); - return; - } - - void DataObjectImpl::setInteger(long invalue) - { -#if __WORDSIZE ==64 - valuelength = getTypeImpl().convert(&value,(int64_t)invalue); -#else - valuelength = getTypeImpl().convert(&value,invalue); -#endif - return; - } - - - void DataObjectImpl::setDouble(long double invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - } - - void DataObjectImpl::setFloat(float invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - - } - - - void DataObjectImpl::setLong(int64_t invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - } - - - void DataObjectImpl::setShort(short invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - - } - - void DataObjectImpl::setCString(const char* invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - } - - void DataObjectImpl::setDate(const SDODate invalue) - { - valuelength = getTypeImpl().convertDate(&value,invalue); /* time_t == long*/ - return; - } - - void DataObjectImpl::setDataObject(DataObject* invalue) - { - valuelength = getTypeImpl().convert(&value,invalue); - return; - } - - void DataObjectImpl::setNull() - { - isnull = true; - } - - bool DataObjectImpl::isNull() - { - return isnull; - } - - void DataObjectImpl::unsetNull() - { - isnull = false; - } - - - DataObjectImpl::DataObjectImpl(const TypeImpl& t) - { - ObjectType = (TypeImpl*)&t; - container = 0; - value = 0; /* Will be initialized when used */ - valuelength = 0; - asStringBuffer = 0; -// asXPathBuffer = 0; - isnull = false; - - // open type support - openBase = t.getPropertiesSize() ; - - userdata = (void*)0xFFFFFFFF; - - if (t.isChangeSummaryType()) - { - changesummaryobject = 0; - localCS = new ChangeSummaryImpl(); - } - else - { - changesummaryobject = 0; - localCS = 0; - } - - if (getType().isSequencedType()) sequence = new SequenceImpl(this); - else sequence = 0; - } - - - - DataObjectImpl::DataObjectImpl(DataFactory* df, const Type& t) : ObjectType((TypeImpl*)&t), - factory(df) - { - container = 0; - value = 0; - valuelength = 0; - asStringBuffer = 0; -// asXPathBuffer = 0; - isnull = false; - - // open type support - openBase = ObjectType->getPropertiesSize() ; - - userdata = (void*)0xFFFFFFFF; - - if (ObjectType->isChangeSummaryType()) - { - changesummaryobject = 0; - localCS = new ChangeSummaryImpl(); - } - else - { - changesummaryobject = 0; - localCS = 0; - } - - if (getType().isSequencedType()) - { - sequence = new SequenceImpl(this); - } - else - { - sequence = 0; - } - } - - void DataObjectImpl::deleteValue() - { - switch (getTypeEnum()) - { - case Type::BooleanType: - case Type::ByteType: - case Type::CharacterType: - case Type::IntegerType: - case Type::DateType: - case Type::DoubleType: - case Type::FloatType: - case Type::LongType: - case Type::ShortType: - case Type::BytesType: - delete (char*)value; - return; - - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - delete (wchar_t*)value; - return; - - case Type::DataObjectType: - return; - - default: - return; - } - } - - DataObjectImpl::~DataObjectImpl() - { - // We do not want to log changes to our own deletion - // if this DO owns the ChangeSummary. Do not delete - // it here as contained DOs still have a reference to it. - - if (getTypeImpl().isChangeSummaryType()) - { - ChangeSummaryPtr c = getChangeSummary(); - if (c) { - if (c->isLogging()) - { - c->endLogging(); - } - } - } - - - clearReferences(); - PropertyValueMap::iterator i = PropertyValues.begin(); - while (i != PropertyValues.end()) - { - unset((*i).first); - if (i == PropertyValues.begin()) - { - // unset has not removed the item from the list - do it - // here instead - PropertyValues.erase(i); - } - i = PropertyValues.begin(); - } - - // Theory: A DO cant get here if its still attached to anything, - //so we dont need to detach.... - //detach(); - - - if (asStringBuffer != 0) delete asStringBuffer; -// if (asXPathBuffer != 0) delete asXPathBuffer; - - if (value != 0) - { - if (getType().isDataType())deleteValue(); - } - - - - if (getType().isSequencedType()) - { - if (sequence != 0) delete sequence; - } - - - if (getTypeImpl().isChangeSummaryType() ) - { - if (getChangeSummary() != 0) - { - delete localCS; - localCS = 0; - } - } - } - - void DataObjectImpl::setApplicableChangeSummary() - { - changesummaryobject = 0; - if (getType().isChangeSummaryType()) - { - changesummaryobject = 0; - return; - } - else { - DataObjectImpl* dob = getContainerImpl(); - while (dob != 0) { - if (dob->getType().isChangeSummaryType()) - { - changesummaryobject = dob; - return; - } - dob = dob->getContainerImpl(); - } - } - - } - - void DataObjectImpl::logCreation(DataObjectImpl* dol, DataObjectImpl* cont, - const Property& theprop) - { - if (getChangeSummaryImpl() != 0 && getChangeSummaryImpl()->isLogging()) - { - getChangeSummaryImpl()->logCreation(dol,cont,theprop); - } - } - - void DataObjectImpl::logDeletion() - { - // Only log if ChangeSummary is inherited from container - - if (getChangeSummaryImpl() != 0 && getChangeSummaryImpl()->isLogging() && !getType().isChangeSummaryType()) - { - DataObjectImpl* cont = getContainerImpl(); - if (cont != 0) // log if there is a container. If there is not, then - // this can only be the object with the CS, so logging - // would not make sense. - { - const Property* p = cont->findInProperties(this); - if ( p != 0) // if the object is not in the properties, then its been - // detached, and has already been logged as deleted - { - getChangeSummaryImpl()->logDeletion(this,cont,*p, - objectToXPath(), true); - } - } - } - } - - void DataObjectImpl::logChange(const Property& prop) - { - if (getChangeSummaryImpl() != 0 && getChangeSummaryImpl()->isLogging()) - { - getChangeSummaryImpl()->logChange(this,prop); - } - } - - void DataObjectImpl::logChange(unsigned int propIndex) - { - if (getChangeSummaryImpl() != 0 && getChangeSummaryImpl()->isLogging()) - { - getChangeSummaryImpl()->logChange(this,getProperty(propIndex)); - } - } - // reference support - - void DataObjectImpl::setReference(DataObject* dol, const Property& prop) - { - LOGINFO_1(INFO,"ChangeSummary:Setting a reference to %s",prop.getName()); - - refs.push_back(new Reference(dol,prop)); - } - void DataObjectImpl::unsetReference(DataObject* dol, const Property& prop) - { - LOGINFO_1(INFO,"ChangeSummary:Unsetting a reference to %s",prop.getName()); - - for (int i=0;i< refs.size();i++) - { - if (refs[i]->getDataObject() == dol) - { - if (!strcmp(refs[i]->getProperty().getName(), - prop.getName())) - { - delete refs[i]; - refs.erase(refs.begin() + i); - } - } - } - } - - - void DataObjectImpl::clearReferences() - { - for (int i=0;i<refs.size();i++) - { - // Note - no loop as the referer must be of type reference - refs[i]->getDataObject()->unset(refs[i]->getProperty()); - delete refs[i]; - } - refs.clear(); - } - - const char* DataObjectImpl::objectToXPath() - { - asXPathBuffer = ""; - - DataObjectImpl* dob = getContainerImpl(); - DataObject*thisob = this; - while (dob != 0){ - const Property& p = thisob->getContainmentProperty(); - if (asXPathBuffer != "") - { - asXPathBuffer = "/" + asXPathBuffer; - } - - if (p.isMany()) { - DataObjectList& dol = dob->getList(p); - for (int i=0;i<dol.size();i++) - { - if (dol[i] == thisob) - { - char index[64]; - sprintf(index,"%d",i); - asXPathBuffer = index + asXPathBuffer; - asXPathBuffer = "." + asXPathBuffer; - break; - } - } - } - asXPathBuffer = p.getName() + asXPathBuffer; - - thisob = dob; - dob = dob->getContainerImpl(); - } - - asXPathBuffer = "#/" + asXPathBuffer; - - return asXPathBuffer.c_str(); -/* - char* temp1; - char* temp2; - - if (asXPathBuffer == 0) - { - asXPathBuffer = new char[2]; - sprintf(asXPathBuffer,"#"); - } - - DataObjectImpl* dob = getContainerImpl(); - DataObject*thisob = this; - while (dob != 0){ - const Property& p = thisob->getContainmentProperty(); - const char* name = p.getName(); - temp1 = new char[strlen(name) + 34]; - temp1[0] = 0; - - - if (p.isMany()) { - DataObjectList& dol = dob->getList(p); - for (int i=0;i<dol.size();i++) - { - if (dol[i] == thisob) - { - sprintf(temp1,"#/%s.%d",name,i); - break; - } - } - } - else { - sprintf(temp1,"#/%s",name); - } - if (asXPathBuffer != 0) { - temp2 = new char[strlen(asXPathBuffer) + strlen(temp1) + 1]; - sprintf(temp2,"%s%s", temp1, asXPathBuffer+1 ); - delete asXPathBuffer; - } - else { - temp2 = new char[strlen(temp1) + 1]; - sprintf(temp2,"%s", temp1); - } - delete temp1; - asXPathBuffer = temp2; - thisob = dob; - dob = dob->getContainerImpl(); - } - return asXPathBuffer; */ - } - - // user data support... - void* DataObjectImpl::getUserData(const char* path) - { - DataObjectImpl *d; - void* v = 0; - char *spath = 0; - char* prop = 0; - try { - spath = DataObjectImpl::stripPath(path); - prop = findPropertyContainer(spath,&d); - if (spath) - { - delete spath; - spath = 0; - } - if (d != 0) - { - if (prop != 0) - { - const Property& p = d->getProperty(prop); - if (p.getType().isDataType()) return 0; - if (p.isMany()) - { - DataObjectImpl* d2 = d->getDataObjectImpl(prop); - if (d2) v = d2->getUserData(); - delete prop; - prop = 0; - return v; - } - v = d->getUserData(p); - delete prop; - prop = 0; - return v; - } - return d->getUserData(); - } - return 0; - } - catch (SDORuntimeException e) - { - if (prop) delete prop; - if (spath) delete spath; - return 0; - } - - } - - void* DataObjectImpl::getUserData(unsigned int propertyIndex) - { - if ((getProperty(propertyIndex).isMany())) - { - return 0; - } - if ((getProperty(propertyIndex).getType().isDataType())) - { - return 0; - } - DataObjectImpl* ptr = getDataObjectImpl(propertyIndex); - if (ptr) return ptr->getUserData(); - return 0; - } - - void* DataObjectImpl::getUserData(const Property& property) - { - if (property.isMany()) - { - return 0; - } - if (property.getType().isDataType()) - { - return 0; - } - DataObjectImpl* ptr = getDataObjectImpl(property); - if (ptr) return ptr->getUserData(); - return 0; - } - - void* DataObjectImpl::getUserData() - { - return userdata; - } - - void DataObjectImpl::setUserData(const char* path, void* value) - { - char *spath = 0; - char* prop = 0; - DataObjectImpl *d; - try { - spath = DataObjectImpl::stripPath(path); - prop = findPropertyContainer(spath,&d); - if (spath) - { - delete spath; - spath = 0; - } - if (d != 0) - { - if (prop != 0) - { - const Property& p = d->getProperty(prop); - if (p.getType().isDataType()) return; - if (p.isMany()) - { - DataObjectImpl* d2 = d->getDataObjectImpl(prop); - if (d2) d2->setUserData(value); - delete prop; - prop = 0; - return; - } - d->setUserData(p,value); - delete prop; - prop = 0; - return; - } - d->setUserData(value); - return; - } - } - catch (SDORuntimeException e) - { - if (prop) delete prop; - if (spath) delete spath; - return; - } - - } - - void DataObjectImpl::setUserData(unsigned int propertyIndex, void* value) - { - if ((getProperty(propertyIndex).isMany())) - { - return; - } - if ((getProperty(propertyIndex).getType().isDataType())) - { - return; - } - DataObjectImpl* ptr = getDataObjectImpl(propertyIndex); - if (ptr) ptr->setUserData(value); - return; - } - - void DataObjectImpl::setUserData(const Property& property, void* value) - { - if (property.isMany()) - { - return; - } - if (property.getType().isDataType()) - { - return; - } - DataObjectImpl* ptr = getDataObjectImpl(property); - if (ptr) ptr->setUserData(value); - return; - } - - void DataObjectImpl::setUserData(void* value) - { - userdata = value; - } - -}; -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectImpl.h deleted file mode 100644 index b3a0d7dd13..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectImpl.h +++ /dev/null @@ -1,683 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/03/07 11:05:20 $ */ - -#ifndef _DATAOBJECTIMPL_H_ -#define _DATAOBJECTIMPL_H_ -#include "commonj/sdo/DataObject.h" - -#include "commonj/sdo/disable_warn.h" - -#include <ctime> -#include <list> -#include <map> - -#include <string> - - -#include "commonj/sdo/Property.h" -#include "commonj/sdo/TypeImpl.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/SequenceImpl.h" -#include "commonj/sdo/DataObjectListImpl.h" -#include "commonj/sdo/PropertyList.h" - -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/ChangeSummaryImpl.h" -#include "commonj/sdo/SDODate.h" - -namespace commonj{ -namespace sdo{ - -class DataGraph; -class DataObjectImpl; -class DataObjectListImpl; -class DataFactory; - - -#define DataObjectImplPtr RefCountingPointer<DataObjectImpl> -#define ChangeSummaryImplPtr RefCountingPointer<ChangeSummaryImpl> - -/** - * rdo is an internal class holding a property value in a data object. - */ - -class rdo { -public: - unsigned int first; - DataObjectImplPtr second; - rdo(unsigned int infirst, DataObjectImpl* insecond); - rdo(); - rdo (const rdo& inrdo); - virtual ~rdo(); -}; - -typedef std::list< rdo > PropertyValueMap; - - - /** - * DataObjectImpl implements the abstract class DataObject. - * - * A data object is a representation of some structured data. - * it is the fundamental component in the SDO (Service Data Objects) package. - * Data objects support reflection, path-based accesss, convenience creation - * and deletion methods,and the ability to be part of a data graph. - * Each data object holds its data as a series of properties. - * Properties can be accessed by name, property index, or using the property - * meta object itself. - * A data object can also contain references to other data objects, through - * reference-type properties. - * A data object has a series of convenience accessors for its properties. - * These methods either use a path (String), a property index, - * or the property's meta object itself, to identify the property. - * Some examples of the path-based accessors are as follows: - * DataObjectPtr company = ...; - * company->getString("name"); - * company->setString("name", "acme"); - * company->getString("department.0/name") - * .n indexes from 0. - * company->getString("department[1]/name") [] indexes from 1. - * company->getDataObject("department[number=123]") returns the department where number=123 - * company->getDataObject("..") returns the containing data object - * company->getDataObject("/") returns the root containing data object - * There are specific accessors for the primitive types and commonly used - * data types like String. - */ - -class DataObjectImpl : public DataObject -{ - public: - - DataObjectImpl(); - DataObjectImpl(const TypeImpl& t); - DataObjectImpl(DataFactory* dataFactory, const Type& t); - - // This one only needs the values, and the type/prop info. The rest - // is not copied and would be unsafe to do so. This is used to - // store the cloned info in a change summary. - - DataObjectImpl(DataObjectImplPtr indo); - - virtual ~DataObjectImpl(); - - ///////////////////////////////////////////////////////////////////////// - // Introspection - ///////////////////////////////////////////////////////////////////////// - - - void handlePropertyNotSet(const char* name); - - /** getPropertyIndex gets the unique index of a property - * - * A property of a data object has a unique index associated with it. - * This method gets a property index for this object from the property, - * or throw SDOPropertyNotFoundException if the property is not part - * of this data object. - */ - - virtual unsigned int getPropertyIndex(const Property& p); - - /** - * These are just like getType().getProperty(), but may return - * values other than the property list for open types. - */ - - virtual const Property& getProperty(unsigned int index); - - virtual const Property& getProperty(const char* prop); - virtual const Property& getProperty(const SDOString& prop); - - virtual PropertyImpl* getPropertyImpl(const char* prop); - virtual PropertyImpl* getPropertyImpl(const SDOString& prop); - - virtual PropertyImpl* getPropertyImpl(unsigned int index); - - /** getInstanceProperties gets the props of the current object. - * - * Returns a read-only List of the Properties currently used in this DataObject. - * This list will contain all of the properties in getType().getProperties() - * and any properties where isSet(property) is true. - * For example, properties resulting from the use of - * open or mixed XML content are present if allowed by the Type. - * The list does not contain duplicates. - * The order of the properties in the list begins with getType().getProperties() - * and the order of the remaining properties is determined by the implementation. - * The same list will be returned unless the DataObject is updated so that - * the contents of the list change - * Returns the list of Properties currently used in this DataObject. - */ - - virtual PropertyList getInstanceProperties(); - - /** getContainer get the containing object - * - * Returns the containing data object - * or 0 if there is no container. - */ - - virtual DataObjectPtr getContainer(); - - /** getContainmentProperty returns the property containing this object - * - * Return the Property of the data object containing this data object - * or throw an SDOPropertyNotFoundException if there is no container. - */ - - virtual const Property& getContainmentProperty(); - - /** getType returns the data object's type. - * - * getType returns the data object's type. - * The type defines the properties available for reflective access. - */ - - virtual const Type& getType(); - - virtual const Type::Types getTypeEnum(); - - - - /////////////////////////////////////////////////////////////////////////// - // get/set - /////////////////////////////////////////////////////////////////////////// - - - /** getDataObject returns a data object by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual DataObjectPtr getDataObject(const SDOString& path); - virtual DataObjectPtr getDataObject(const char* path); - virtual DataObjectPtr getDataObject(unsigned int propertyIndex); - virtual DataObjectPtr getDataObject(const Property& property); - - /** setDataObject sets a value by path, index or property - * - * Sets a property of either this object or an object reachable from it, - * as identified by the specified path, - * to the specified value. - */ - - virtual void setDataObject(const char* path, DataObjectPtr value); - virtual void setDataObject(const SDOString& path, DataObjectPtr value); - virtual void setDataObject(unsigned int propertyIndex, DataObjectPtr value); - virtual void setDataObject(const Property& property, DataObjectPtr value); - - /** getBoolean returns a boolean by path, index or property - * - * Returns the value of a property of either this object or an object - * reachable from it, as identified by the specified path. - */ - - virtual bool getBoolean(const char* path); - virtual bool getBoolean(const SDOString& path); - virtual bool getBoolean(unsigned int propindex); - virtual bool getBoolean(const Property& p); - - virtual void setBoolean(const char* path, bool b); - virtual void setBoolean(unsigned int propindex, bool b); - virtual void setBoolean(const Property& p, bool b); - - virtual char getByte(const char* path); - virtual char getByte(unsigned int propindex); - virtual char getByte(const Property& p); - - virtual void setByte(const char* path, char c); - virtual void setByte(unsigned int propindex, char c); - virtual void setByte(const Property& p, char c); - - virtual wchar_t getCharacter(const char* path); - virtual wchar_t getCharacter(unsigned int propindex); - virtual wchar_t getCharacter(const Property& p); - - virtual void setCharacter(const char* path, wchar_t c); - virtual void setCharacter(unsigned int propindex, wchar_t c); - virtual void setCharacter(const Property& p, wchar_t c); - - virtual unsigned int getLength(const char* path) ; - virtual unsigned int getLength(unsigned int propindex) ; - virtual unsigned int getLength(const Property& p) ; - virtual unsigned int getLength() ; - - virtual unsigned int getBytes(const char* path, char* buf, unsigned int max) ; - virtual unsigned int getBytes(unsigned int propindex, char* buf, unsigned int max) ; - virtual unsigned int getBytes(const Property& p, char* buf, unsigned int max) ; - - virtual void setBytes(const char* path, const char* c, unsigned int len) ; - virtual void setBytes(unsigned int propindex, const char* c,unsigned int len) ; - virtual void setBytes(const Property& p, const char* c,unsigned int len) ; - - virtual unsigned int getString(const char* path, wchar_t* buf, unsigned int max) ; - virtual unsigned int getString(unsigned int propindex,wchar_t* buf, unsigned int max) ; - virtual unsigned int getString(const Property& p,wchar_t* buf, unsigned int max) ; - - virtual void setString(const char* path, const wchar_t* c,unsigned int len) ; - virtual void setString(unsigned int propindex, const wchar_t* c,unsigned int len) ; - virtual void setString(const Property& p, const wchar_t* c,unsigned int len) ; - - virtual const SDODate getDate(const char* path); - virtual const SDODate getDate(unsigned int propindex); - virtual const SDODate getDate(const Property& p); - - virtual void setDate(const char* path, const SDODate d); - virtual void setDate(unsigned int propindex, const SDODate d); - virtual void setDate(const Property& p, const SDODate d); - - virtual long double getDouble(const char* path); - virtual long double getDouble(unsigned int propindex); - virtual long double getDouble(const Property& p); - - virtual void setDouble(const char* path, long double d); - virtual void setDouble(unsigned int propindex, long double d); - virtual void setDouble(const Property& p, long double d); - - virtual float getFloat(const char* path); - virtual float getFloat(unsigned int propindex); - virtual float getFloat(const Property& p); - - virtual void setFloat(const char* path, float f); - virtual void setFloat(unsigned int propindex, float f); - virtual void setFloat(const Property& p, float f); - - virtual long getInteger(const char* path); - virtual long getInteger(unsigned int propindex); - virtual long getInteger(const Property& p); - - virtual void setInteger(const char* path, long i); - virtual void setInteger(unsigned int propindex, long i); - virtual void setInteger(const Property& p, long i); - - virtual /*long long*/ int64_t getLong(const char* path); - virtual /*long long*/ int64_t getLong(unsigned int propindex); - virtual /*long long*/ int64_t getLong(const Property& p); - - virtual void setLong(const char* path, /*long long*/ int64_t l); - virtual void setLong(unsigned int propindex, /*long long*/ int64_t l); - virtual void setLong(const Property& p, /*long long*/ int64_t l); - - virtual short getShort(const char* path); - virtual short getShort(unsigned int propindex); - virtual short getShort(const Property& p); - - virtual void setShort(const char* path, short s); - virtual void setShort(unsigned int propindex, short s); - virtual void setShort(const Property& p, short s); - - virtual const char* getCString(const char* path); - virtual const char* getCString(unsigned int propertyIndex); - virtual const char* getCString(const Property& prop); - - virtual void setCString(const char* path, const char* value); - virtual void setCString(unsigned int propertyIndex, const char* value); - virtual void setCString (const Property& prop, const char* value); - - /** setNull sets a data object value to null. - * - * A DataObjectType or DataType value may be set or unset. If it is set, then - * it may have a value, or it may be set to null. A distinction is drawn between - * being unset, having the default value, being set and being null. - * When the value of an integer (for example) is returned as zero, it could have - * been set to zero, or it could be null. Use isNull() to verify. - */ - - virtual void setNull(const char* path); - virtual void setNull(unsigned int propertyIndex); - virtual void setNull(const Property& prop); - - virtual bool isNull(const char* path); - virtual bool isNull(unsigned int propertyIndex); - virtual bool isNull(const Property& prop); - - virtual bool isSet(const char* path); - virtual bool isSet(unsigned int propertyIndex); - virtual bool isSet(const Property& property); - - virtual bool isValid(const char* path); - virtual bool isValid(unsigned int propertyIndex); - virtual bool isValid(const Property& property); - - virtual void unset(const char* path); - virtual void unset(unsigned int propertyIndex); - virtual void unset(const Property& property); - - - /////////////////////////////////////////////////////////////////////////// - // Sequences - /////////////////////////////////////////////////////////////////////////// - - /** getSequence returns the sequence for a data object - * - * Returns the value of a Sequence property identified by - * the specified path. See Sequence. - */ - - virtual SequenceImpl* getSequenceImpl(); - virtual SequencePtr getSequence(); - virtual SequencePtr getSequence(const char* path); - virtual SequencePtr getSequence(unsigned int propertyIndex); - virtual SequencePtr getSequence(const Property& property); - - - /////////////////////////////////////////////////////////////////////////// - // Creation of dataobjects - /////////////////////////////////////////////////////////////////////////// - - /** createDataObject creates a data object value - * - * Returns a new data object contained by this object using the - * specified property,which must be a containment property. - * The type of the created object is the declared type - * of the specified property. - * If the property is many valued, this method adds an element to the - * list, otherwise it sets the value, removing any old value. - */ - - virtual DataObjectPtr createDataObject(const char* propertyName); - virtual DataObjectPtr createDataObject(unsigned int propertyIndex); - virtual DataObjectPtr createDataObject(const Property& property); - - - /** - * See if the property currently exists - */ - - virtual bool hasProperty(const char* name); - virtual bool hasProperty(const SDOString& name); - - - virtual void detach(); - - virtual void clear(); - - - /////////////////////////////////////////////////////////////////////////// - // Lists - /////////////////////////////////////////////////////////////////////////// - - /** getList gets the value of a many-valued property - * - * Many valued properties are returned as lists of DataObjects. - * These lists may contain primitives or data objects, but they behave - * like data objects. - * Getting a many valued integer consists of getting the list, then - * using the DataObjectList API to getInteger() for each list element. - */ - - virtual DataObjectList& getList(const char* path); - virtual DataObjectList& getList(unsigned int propIndex); - virtual DataObjectList& getList(const Property& p); - virtual DataObjectList& getList(); - virtual DataObjectListImpl* getListImpl(); - - void setList( DataObjectList* theList); - - /////////////////////////////////////////////////////////////////////////// - // Change Summary - /////////////////////////////////////////////////////////////////////////// - - /** getChangeSummary get the applicable change summary - * - * This method gets the applicable change summary for a data object. - * The summary is not necessarily attached to the data object, it may be - * the summary for a parent data object. No object with a summary attached - * may be a child of another object with a summary attached. - * See the ChangeSummary API for details of using the change sumamry. - */ - - virtual SDO_API ChangeSummaryPtr getChangeSummary(const char* path); - virtual SDO_API ChangeSummaryPtr getChangeSummary(unsigned int propIndex); - virtual SDO_API ChangeSummaryPtr getChangeSummary(const Property& prop); - virtual SDO_API ChangeSummaryPtr getChangeSummary(); - - - virtual bool getBoolean(); - virtual void setBoolean(bool b); - virtual char getByte(); - virtual void setByte(char c); - virtual wchar_t getCharacter(); - virtual void setCharacter(wchar_t c); - virtual unsigned int getString(wchar_t* buf, unsigned int max); - virtual unsigned int getBytes(char* buf, unsigned int max); - virtual void setString(const wchar_t* buf, unsigned int len); - virtual void setBytes(const char* c, unsigned int len); - virtual short getShort(); - virtual void setShort(short s); - virtual long getInteger(); - virtual void setInteger(long s); - virtual /* long long*/ int64_t getLong(); - virtual void setLong(/* long long */ int64_t i); - virtual float getFloat(); - virtual void setFloat(float b); - virtual long double getDouble(); - virtual void setDouble(long double d); - virtual const SDODate getDate(); - virtual void setDate(const SDODate d); - virtual const char* getCString(); - virtual void setCString(const char* s); - virtual DataObjectImpl* getDataObject(); - virtual void setDataObject(DataObject* d); - - // null support - virtual bool isNull(); - virtual void setNull(); - virtual void unsetNull(); - - // change logging is used by the dataobjectlistimpl - virtual void logChange(const Property& prop); - virtual void logChange(unsigned int propIndex); - virtual void logDeletion(); - virtual void logCreation(DataObjectImpl* dol, - DataObjectImpl* cont, const Property& prop); - - // reference support - virtual void setReference(DataObject* dob, const Property& prop); - virtual void unsetReference(DataObject* dob, const Property& prop); - virtual void clearReferences(); - - // user data support - virtual void setUserData(const char* path,void* value); - virtual void setUserData(unsigned int propertyIndex, void* value); - virtual void setUserData(const Property& property, void* value); - virtual void setUserData(void* value); - virtual void* getUserData(const char* path); - virtual void* getUserData(unsigned int propertyIndex); - virtual void* getUserData(const Property& property); - virtual void* getUserData(); - - virtual void setContainer(DataObjectImpl* d); - DataObjectImpl* getContainerImpl(); - - // builds a temporary XPath for this object. - const char* objectToXPath(); - - // The data factory can be used to create new data objects within - // the Type system of this data object - // - - SDO_API DataFactory* getDataFactory(); - - - // cache a copy of the change summary in this data object, if there - // is one in the tree. - - virtual void setApplicableChangeSummary(); - - - // open type support - virtual void setInstancePropertyType(unsigned int index, - const Type* t); - - /** - * defineProperty is used by open type support. - * This method and its siblings define a new property on an - * open type when a setting is requested. - */ - - virtual const PropertyImpl* defineProperty(const char* propname, - const Type& t); - virtual const PropertyImpl* defineProperty(const SDOString& propname, - const Type& t); - - virtual const PropertyImpl* defineBoolean(const char* propname); - virtual const PropertyImpl* defineByte(const char* propname); - virtual const PropertyImpl* defineCharacter(const char* propname); - virtual const PropertyImpl* defineString(const char* propname); - virtual const PropertyImpl* defineBytes(const char* propname); - virtual const PropertyImpl* defineShort(const char* propname); - virtual const PropertyImpl* defineInteger(const char* propname); - virtual const PropertyImpl* defineLong(const char* propname); - virtual const PropertyImpl* defineFloat(const char* propname); - virtual const PropertyImpl* defineDouble(const char* propname); - virtual const PropertyImpl* defineDate(const char* propname); - virtual const PropertyImpl* defineCString(const char* propname); - virtual const PropertyImpl* defineDataObject(const char* propname, - const Type&t ); - virtual const PropertyImpl* defineDataObject(const SDOString& propname, - const Type&t ); - virtual const PropertyImpl* defineDataObject(const char* propname, - const char* typeURI, const char* typeName ); - virtual const PropertyImpl* defineList(const char* propname); - virtual void undefineProperty(unsigned int index); - virtual const TypeImpl& getTypeImpl(); - virtual void transferChildren(DataObject* d, DataFactory* f); - virtual void setDataFactory(DataFactory *df); - -private: - - virtual void validateIndex(unsigned int index); - virtual void checkFactory(DataObjectPtr dob, unsigned int propertyIndex); - virtual void checkType( const Property& prop, - const Type& objectType); - - virtual bool remove(DataObjectImpl* indol); - virtual bool isSet(const Property& prop, unsigned int propertyIndex); - - - virtual DataObjectImpl* getDataObjectImpl(const SDOString& path); - virtual DataObjectImpl* getDataObjectImpl(const char* path); - virtual DataObjectImpl* getDataObjectImpl(unsigned int propertyIndex); - virtual DataObjectImpl* getDataObjectImpl(const Property& property); - - virtual DataObjectPtr - createDataObject(const Property& property, - const char* namespaceURI, - const char* typeName); - - DataObjectImpl* findDataObject(char* token, long* index); - DataObjectImpl* findDataObject(const SDOString& token, long* index); - const Property* findInProperties(DataObject* ob); - char* findPropertyContainer(const char* path, DataObjectImpl** din); - SDOString findPropertyContainer(const SDOString& path, DataObjectImpl** din); - char* stripPath(const char* path); - void stripPath(const SDOString& path, SDOString& result); - - - // Does not keep a reference counted pointer to the container. - DataObjectImpl* container; - - // remove the value from the data object. - void deleteValue(); - - - PropertyValueMap PropertyValues; - - TypeImpl* ObjectType; - - DataObjectListImpl* listValue; - - // Holds the value , reallocated as necessary for strings - void* value; - - // In the case of a bytes/string - this holds the length; - unsigned int valuelength; - - // holds the value as a string - if requested. - char* asStringBuffer; - - // holds the Xpath to this object if requested. - std::string asXPathBuffer; - - // The data object holds a counted reference to the data factory. - DataFactoryPtr factory; - - - // Support for open types - int openBase; - std::list<PropertyImpl> openProperties; - - static const char* emptyString; - static const char* templateString; - - // Data may be set to null in any data object - bool isnull; - - // user supplied 32 bit value. - void* userdata; - - // - // The sequence, if this is a sequenced type - not - // reference counted by the data object - // - SequenceImpl* sequence; - - // - // The change summary if this is a summarised type - // not reference counted by the data object - only by - // clients - // - - ChangeSummaryImpl* getChangeSummaryImpl(); - ChangeSummaryImpl* getSummary(); - ChangeSummaryImpl* localCS; - DataObjectImpl* changesummaryobject; - - - // reference type support - - class Reference - { - public: - DataObject* getDataObject() - { - return referer; - } - const Property& getProperty() - { - return refprop; - } - Reference(DataObject* d, const Property& p) : refprop(p), referer(d) - { - } - private: - DataObject* referer; - const Property& refprop; - }; - - typedef std::vector<Reference*> REFERENCE_LIST; - - REFERENCE_LIST refs; - - - -}; -}; -}; - -#endif //_DATAOBJECTIMPL_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectInstance.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectInstance.cpp deleted file mode 100644 index 67f54949c8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectInstance.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/DataObjectInstance.h" -using commonj::sdo::CopyHelper; - - - -namespace commonj -{ - namespace sdo - { - // ============ - // Constructors - // ============ - DataObjectInstance::DataObjectInstance() - { - } - - DataObjectInstance::DataObjectInstance(const DataObjectPtr& theDO) - { - dataObject = CopyHelper::copy(theDO); - } - - // ========== - // Destructor - // ========== - DataObjectInstance::~DataObjectInstance() - { - } - - // =================================== - // Copy constructor: deep copy the DO - // =================================== - DataObjectInstance::DataObjectInstance(const DataObjectInstance& doi) - { - dataObject = CopyHelper::copy(doi.dataObject); - } - - // ============================= - // operator= : deep copy the DO - // ============================= - DataObjectInstance& DataObjectInstance::operator=(const DataObjectInstance& doi) - { - if (this != &doi) - { - dataObject = CopyHelper::copy(doi.dataObject); - } - return *this; - } - - } // End namespace sca -} // End namespace osoa diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectInstance.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectInstance.h deleted file mode 100644 index 766392fbaa..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectInstance.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef commonj_sdo_DataObjectInstance_h -#define commonj_sdo_DataObjectInstance_h - - -#include "commonj/sdo/export.h" -#include "commonj/sdo/SDO.h" -using commonj::sdo::DataObjectPtr; -using commonj::sdo::DataObject; - - -namespace commonj -{ - namespace sdo - { -/** - * DataObjectInstance is a class which allows DataObjects to be considered - * as instances rather than data object pointers. - */ - class DataObjectInstance - { - - public: - SDO_API DataObjectInstance(); - SDO_API virtual ~DataObjectInstance(); - - SDO_API DataObjectInstance(const DataObjectPtr& theDO); - SDO_API DataObjectInstance(const DataObjectInstance&); - - SDO_API DataObjectInstance& operator=(const DataObjectInstance&); - SDO_API bool operator!() {return (!dataObject);} - SDO_API operator bool() {return !!dataObject;} - - SDO_API DataObject* operator->() {return dataObject;} - - SDO_API DataObjectPtr getDataObject() {return dataObject;} - SDO_API operator DataObjectPtr() {return dataObject;} - private: - DataObjectPtr dataObject; - }; - } // End namespace sdo -} // End namespace commonj - -#endif // commonj_sdo_DataObjectInstance_h diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectList.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectList.cpp deleted file mode 100644 index 7202833360..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectList.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/DataObjectList.h" - -namespace commonj{ -namespace sdo { - -/** - * - * List for retrieving many valued property values. - * - * DataObjectList provides an API for getting and setting values in - * many valued properties. The list deals with both DataType and - * DataObjectType properties. - */ - -DataObjectList::~DataObjectList() -{ - -} - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectList.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectList.h deleted file mode 100644 index 04ad42b3c0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectList.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/06 12:58:18 $ */ - -#ifndef _DATAOBJECTLIST_H_ -#define _DATAOBJECTLIST_H_ - - -#include "commonj/sdo/export.h" -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/SDODate.h" -#include <wchar.h> - - -namespace commonj{ -namespace sdo{ - -/** - * - * List for retrieving many valued property values, DataType or DataObjectType. - * - * DataObjectList provides an API for getting and setting values in - * many valued properties. The list deals with both DataType and - * DataObjectType properties. - */ - -class DataObjectList -{ -public: - virtual ~DataObjectList(); - - /** [] is a index operator, and returns a dataobject. - * - * The index operator returns a data object, even if the - * list is of a DataType. The data object can yield its true value using - * getInteger() etc. Alternatively, list elements can be accessed - * with their correct type using the list getInteger(index) api. - */ - - virtual SDO_API DataObjectPtr operator[] (int pos) = 0; - virtual SDO_API const DataObjectPtr operator[] (int pos) const = 0; - - /** size returns the number of elements. - * - * The size method returns the number of elements in the list - */ - - virtual SDO_API int size () const = 0; - - /** getBoolean returns a boolean at an index - * - * Each of the DataTypes has a corresponding getter and setter - * overload. getBoolean returns a bool, getByte returns a char - * etc - */ - - virtual SDO_API bool getBoolean(unsigned int index) const = 0; - virtual SDO_API char getByte(unsigned int index) const = 0; - virtual SDO_API wchar_t getCharacter(unsigned int index) const = 0; - virtual SDO_API unsigned int getString(unsigned int index, wchar_t* value, - unsigned int max) const = 0; - virtual SDO_API unsigned int getBytes(unsigned int index, char* value, - unsigned int max) const = 0; - virtual SDO_API short getShort(unsigned int index) const = 0; - virtual SDO_API long getInteger(unsigned int index) const = 0; - virtual SDO_API int64_t getLong(unsigned int index) const = 0; - virtual SDO_API float getFloat(unsigned int index) const = 0; - virtual SDO_API long double getDouble(unsigned int index) const = 0; - virtual SDO_API const SDODate getDate(unsigned int index) const = 0; - virtual SDO_API const char* getCString(unsigned int index) const = 0; - virtual SDO_API DataObjectPtr getDataObject(unsigned int index) const = 0; - - virtual SDO_API void setBoolean(unsigned int index, bool d) = 0; - virtual SDO_API void setByte(unsigned int index, char d) = 0; - virtual SDO_API void setCharacter(unsigned int index, wchar_t d) = 0; - virtual SDO_API void setString(unsigned int index, const wchar_t* d, unsigned int len) = 0; - virtual SDO_API void setBytes(unsigned int index, const char* d, unsigned int len) = 0; - virtual SDO_API void setShort(unsigned int index, short d) = 0; - virtual SDO_API void setInteger(unsigned int index, long d) = 0; - virtual SDO_API void setLong(unsigned int index, int64_t d) = 0; - virtual SDO_API void setFloat(unsigned int index, float d) = 0; - virtual SDO_API void setDouble(unsigned int index, long double d) = 0; - virtual SDO_API void setDate(unsigned int index, const SDODate d) = 0; - virtual SDO_API void setCString(unsigned int index, char* d) = 0; - virtual SDO_API void setDataObject(unsigned int index, DataObjectPtr dob) = 0; - - /** getLength returns the length of a string element - * - * getLength behaves like DataObject::getlength. It returns the length - * of a bytes or string buffer such that space can be allocated for the - * values from getBytes() and getString() - */ - - virtual SDO_API unsigned int getLength(unsigned int index) const = 0; - - /** insert and append put items into the list - * - * insert and append have overrides for each of the DataTypes, and - * for DataObject. Insert inserts before the element number given. If the insertion - * point is off the end of the list, then an append is performed. - * Append puts the element on the end of the list. - */ - - - virtual SDO_API void insert (unsigned int index, DataObjectPtr d) = 0; - virtual SDO_API void append (DataObjectPtr d) = 0; - - virtual SDO_API void insert (unsigned int index, bool d) = 0; - virtual SDO_API void append (bool d) = 0; - - virtual SDO_API void insert (unsigned int index, char d) = 0; - virtual SDO_API void append (char d) = 0; - - virtual SDO_API void insert (unsigned int index, wchar_t d) = 0; - virtual SDO_API void append (wchar_t d) = 0; - - virtual SDO_API void insert (unsigned int index, const wchar_t* d, unsigned int len) = 0; - virtual SDO_API void append (const wchar_t* d, unsigned int len) = 0; - - virtual SDO_API void insert (unsigned int index, const char* d, unsigned int len) = 0; - virtual SDO_API void append (const char* d, unsigned int len) = 0; - - virtual SDO_API void insert (unsigned int index, const char* d) = 0; - virtual SDO_API void append (const char* d) = 0; - - virtual SDO_API void insert (unsigned int index, short d) = 0; - virtual SDO_API void append (short d) = 0; - - virtual SDO_API void insert (unsigned int index, const SDODate d) = 0; - virtual SDO_API void append (const SDODate d) = 0; - -#if __WORDSIZE !=64 - virtual SDO_API void insert (unsigned int index, long d) = 0; - virtual SDO_API void append (long d) = 0; -#endif - - virtual SDO_API void insert (unsigned int index, int64_t d) = 0; - virtual SDO_API void append (int64_t d) = 0; - - virtual SDO_API void insert (unsigned int index, float d) = 0; - virtual SDO_API void append (float d) = 0; - - - virtual SDO_API void insert (unsigned int index, long double d) = 0; - virtual SDO_API void append (long double d) = 0; - - /** remove removes an element from the list. - * - * Remove removes the element from the list, and passes out a - * DataObjectPtr to the old value. This can be attached to the list - * somewhere else, or discarded. - */ - - virtual SDO_API DataObjectPtr remove (unsigned int index) = 0; - - /* getType returns type - * - * Returns the type. - * May throw SDOTYpeNotFoundException for unset open types - */ - - - virtual SDO_API const Type& getType() = 0; - - /* getTypeEnum returns an enumerator for the type - * - * Returns an enumerator for the type for easy switching on basic types. - * The enumerator is part of the Type class - * May throw SDOTypeNotFoundException for open types - */ - - virtual SDO_API const Type::Types getTypeEnum() = 0; - -}; -}; -}; - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.cpp deleted file mode 100644 index 25ef2a266b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.cpp +++ /dev/null @@ -1,1102 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/07 13:35:33 $ */ - -#include "commonj/sdo/DataObjectListImpl.h" - - -#include <iostream> -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/Logger.h" -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/DataObjectImpl.h" -#include "commonj/sdo/DataFactoryImpl.h" - -#include <stdio.h> - -namespace commonj{ -namespace sdo { - -/** - * DataObjectListImpl implements DataObjectList. - * List for retrieving many valued property values. - * - * DataObjectList provides an API for getting and setting values in - * many valued properties. The list deals with both DataType and - * DataObjectType properties. - */ -DataObjectListImpl::DataObjectListImpl(DATAOBJECT_VECTOR p) : plist (p) -{ - theFactory = 0; - container = 0; - pindex = 0; - isReference = false; -} - -DataObjectListImpl::DataObjectListImpl(const DataObjectListImpl &pin) -{ - plist = std::vector<RefCountingPointer<DataObjectImpl> >(pin.getVec()); - theFactory = pin.theFactory; - container = pin.container; - pindex = pin.pindex; - typeUnset = pin.typeUnset; - isReference = pin.isReference; - if (pin.typeURI != 0) { - typeURI = new char[strlen(pin.typeURI) +1]; - strcpy(typeURI, pin.typeURI); - } - if (pin.typeName != 0) { - typeName = new char[strlen(pin.typeName) +1]; - strcpy(typeName, pin.typeName); - } -} - -DataObjectListImpl::DataObjectListImpl() -{ - theFactory = 0; - typeURI = 0; - typeName = 0; - theFactory = 0; - container = 0; - pindex = 0; - typeUnset = false; - isReference = false; -} - -DataObjectListImpl::DataObjectListImpl(DataFactory* df, - DataObjectImpl* cont, - unsigned int inpindex, - const char* intypeURI, - const char* intypeName) -{ - container = cont; - pindex = inpindex; - theFactory = df; - - - isReference = false; - if (container->getProperty(pindex).isReference()) - { - isReference = true; - } - typeUnset = false; - - if (container->getType().isOpenType()) - { - if (!strcmp(intypeURI,Type::SDOTypeNamespaceURI.c_str()) && - !strcmp(intypeName,"OpenDataObject")) - { - typeUnset = true; - } - } - - - if (intypeURI != 0) { - typeURI = new char[strlen(intypeURI) +1]; - strcpy(typeURI, intypeURI); - } - else { - typeURI = 0; - } - if (intypeName != 0) { - typeName = new char[strlen(intypeName) +1]; - strcpy(typeName, intypeName); - } - else { - typeName = 0; - theFactory = 0; - } -} - -DataObjectListImpl::~DataObjectListImpl() -{ - if (typeURI != 0) { - delete typeURI; - typeURI = 0; - } - if (typeName != 0) { - delete typeName; - typeName = 0; - } -} - -RefCountingPointer<DataObject> DataObjectListImpl::operator[] (int pos) -{ - validateIndex(pos); - return plist[pos]; -} - -const RefCountingPointer<DataObject> DataObjectListImpl::operator[] (int pos) const -{ - validateIndex(pos); - RefCountingPointer<DataObjectImpl> d = plist[pos]; - DataObjectImpl* dob = d; - return RefCountingPointer<DataObject>((DataObject*)dob); -} - - -int DataObjectListImpl::size () const -{ - return plist.size(); -} - -DATAOBJECT_VECTOR DataObjectListImpl::getVec() const -{ - return plist; -} - - - -const Type& DataObjectListImpl::getType() -{ - if (typeUnset) - { - std::string msg("The list property is open, and the type of the contents has not bee determined yet."); - SDO_THROW_EXCEPTION("Get Type", SDOTypeNotFoundException, - msg.c_str()); - } - return theFactory->getType(typeURI, typeName); -} - - -const Type::Types DataObjectListImpl::getTypeEnum() -{ - if (typeUnset) - { - return Type::OpenDataObjectType; - - } - return theFactory->getType(typeURI, typeName).getTypeEnum(); -} - - -void DataObjectListImpl::insert (unsigned int index, DataObjectPtr d) -{ - if (typeUnset)setType(d->getType().getURI(),d->getType().getName()); - - checkFactory(d); - - checkType(theFactory->getType(typeURI,typeName), - d->getType()); - - if (container != 0) - { - container->logChange(pindex); - } - for (int i=0;i < plist.size(); i++) - { - if (plist[i] == d) - { - std::string msg("Insertion of object which already exists in the list:"); - msg += typeURI; - msg += " "; - msg += typeName; - SDO_THROW_EXCEPTION("List insert", SDOUnsupportedOperationException, - msg.c_str()); - } - } - if (strcmp(typeURI,d->getType().getURI()) - || - strcmp(typeName,d->getType().getName())) - { - std::string msg("Insertion of object of the wrong type to a list:"); - msg += typeURI; - msg += " "; - msg += typeName; - msg += " not compatible with "; - msg += d->getType().getURI(); - msg += " "; - msg += d->getType().getName(); - SDO_THROW_EXCEPTION("List append", SDOInvalidConversionException, - msg.c_str()); - } - - DataObject* dob = d; // unwrap the data object ready for a downcasting hack. - DataObjectImpl* con = ((DataObjectImpl*)dob)->getContainerImpl(); - if (!isReference) - { - if (con != 0) - { - if (con != container) - { - /* this data object is already contained somewhere else */ - std::string msg("Insertion of object to list, object is already contained:"); - msg += d->getType().getURI(); - msg += " "; - msg += d->getType().getName(); - SDO_THROW_EXCEPTION("List append", SDOInvalidConversionException, - msg.c_str()); - } - } - else - { - ((DataObjectImpl*)dob)->setContainer(container); - ((DataObjectImpl*)dob)->setApplicableChangeSummary(); - ((DataObjectImpl*)dob)->logCreation((DataObjectImpl*)dob, - (DataObjectImpl*)container, - container->getProperty(pindex)); - } - } - - plist.insert(plist.begin()+index, RefCountingPointer<DataObjectImpl>((DataObjectImpl*)dob)); - - if (container != 0) - { - if (container->getType().isSequencedType()) - { - SequenceImpl* sq = container->getSequenceImpl(); - if (sq)sq->push(container->getProperty(pindex),index); - } - } - -} - - - - void DataObjectListImpl::checkFactory(DataObjectPtr dob) - { - - DataObjectImpl* d = (DataObjectImpl*)(DataObject*)dob; - - if (d->getDataFactory() == theFactory) return; - - // temporary experiment with allowing data objects - // to move from factory to factory if the type is - // nominally present, and the type systems match - - DataFactoryImpl* f = (DataFactoryImpl*)theFactory; - - - if (d->getContainer() != 0) - { - std::string msg("Insertion of object into list from another factory is only allowed if the parent is null: "); - - const Type& t = d->getType(); - msg += t.getURI(); - msg += "#"; - msg += t.getName(); - msg += " into property "; - msg += container->getProperty(pindex).getName(); - msg += " of type "; - msg += typeURI; - msg += "#"; - msg += typeName; - SDO_THROW_EXCEPTION("checkFactory", SDOInvalidConversionException, - msg.c_str()); - } - - if (f->isCompatible(d->getDataFactory(),d)) - { - d->setDataFactory(theFactory); - // we will also need to transfer any children - assuming they - // are ok in the new factory!! - d->transferChildren(d,theFactory); - return; - } - - std::string msg("Insertion into list from incompatible factory:"); - - const Type& t = d->getType(); - msg += t.getURI(); - msg += "#"; - msg += t.getName(); - msg += " into property "; - msg += container->getProperty(pindex).getName(); - msg += " of type "; - msg += typeURI; - msg += "#"; - msg += typeName; - SDO_THROW_EXCEPTION("checkFactory", SDOInvalidConversionException, - msg.c_str()); - - } - - -void DataObjectListImpl::checkType(const Type& listType, const Type& objectType) - { - if (listType.equals(objectType)) return; - - const TypeImpl* ti = ((DataFactoryImpl*)theFactory)->findTypeImpl - (objectType.getURI(),objectType.getName()); - if (ti != 0) - { - do - { - ti = (const TypeImpl*)ti->getBaseType(); - if (ti == 0) break; - if (listType.equals(*ti)) return; - } while (ti != 0); - - // allow types of any substitutes - if (container != 0) - { - PropertyImpl* pi = - container->getPropertyImpl(pindex); - if (pi != 0) - { - unsigned int subcount = pi->getSubstitutionCount(); - for (int i=0;i<subcount;i++) - { - const Type* tsub = pi->getSubstitutionType(i); - if (tsub != 0 && tsub->equals(objectType)) return; - } - } - } - } - - // no match.. - std::string msg("Insertion of object of incompatible type "); - msg += objectType.getURI(); - msg += "#"; - msg += objectType.getName(); - msg += " into list of type "; - msg += listType.getURI(); - msg += "#"; - msg += listType.getName(); - SDO_THROW_EXCEPTION("TypeCheck", SDOInvalidConversionException, - msg.c_str()); - } - -//TODO Modify parameters to SDOString -void DataObjectListImpl::setType(const char* uri, const char* name) -{ - // need to check for an opentype list which has not been set up yet - if (name == 0) return; - - const TypeImpl* t = ((DataFactoryImpl*)theFactory)->findTypeImpl(uri,name); - if (t == 0) return; // cannot set to a type which is not avilable - - // need to modify the instance property of the container - container->setInstancePropertyType(pindex,t); - - delete typeName; - typeName = new char[strlen(name)+1]; - strcpy(typeName, name); - delete typeURI; - if (uri == 0) - { - typeURI = new char[1]; - typeURI[0] = 0; - } - else - { - typeURI = new char[strlen(uri)+1]; - strcpy(typeURI, uri); - } - typeUnset = false; -} - -void DataObjectListImpl::setType(const SDOString& uri, const SDOString& name) -{ - // need to check for an opentype list which has not been set up yet - // if (name == 0) return; - - const TypeImpl* t = ((DataFactoryImpl*)theFactory)->findTypeImpl(uri.c_str(), name.c_str()); - if (t == 0) return; // cannot set to a type which is not avilable - - // need to modify the instance property of the container - container->setInstancePropertyType(pindex,t); - - delete typeName; - typeName = new char[name.length() + 1]; - strcpy(typeName, name.c_str()); - - delete typeURI; - typeURI = new char[uri.length() + 1]; - strcpy(typeURI, uri.c_str()); - - typeUnset = false; -} - -void DataObjectListImpl::append (DataObjectPtr d) -{ - - if (typeUnset)setType(d->getType().getURI(),d->getType().getName()); - - if (container != 0) - { - container->logChange(pindex); - } - - for (int i=0;i < plist.size(); i++) - { - if (plist[i] == d) - { - std::string msg("Append of object which already exists in the list:"); - msg += typeURI; - msg += " "; - msg += typeName; - SDO_THROW_EXCEPTION("List append", SDOUnsupportedOperationException, - msg.c_str()); - } - } - - checkFactory(d); - - checkType(theFactory->getType(typeURI,typeName), - d->getType()); - - DataObject* dob = d; // unwrap the data object ready for a downcasting hack. - DataObjectImpl* con = ((DataObjectImpl*)dob)->getContainerImpl(); - - if (!isReference) - { - if (con != 0) - { - if (con != container) - { - /* this data object is already contained somewhere else */ - std::string msg("Append of object to list, object is already contained:"); - msg += d->getType().getURI(); - msg += " "; - msg += d->getType().getName(); - SDO_THROW_EXCEPTION("List append", SDOInvalidConversionException, - msg.c_str()); - } - } - else - { - ((DataObjectImpl*)dob)->setContainer(container); - ((DataObjectImpl*)dob)->setApplicableChangeSummary(); - if (!container->getProperty(pindex).getType().isDataType()) - { - ((DataObjectImpl*)dob)->logCreation((DataObjectImpl*)dob, - container,container->getProperty(pindex)); - } - - } - } - plist.insert(plist.end(),RefCountingPointer<DataObjectImpl>((DataObjectImpl*)dob)); - - if (container != 0) { - if (container->getType().isSequencedType()) - { - SequenceImpl* sq = container->getSequenceImpl(); - if (sq)sq->push(container->getProperty(pindex),plist.size()-1); - } - } -} - -void DataObjectListImpl::insert (unsigned int index, bool d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, BooleanLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setBoolean(d); - insert(index, dol); -} - -void DataObjectListImpl::append (bool d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, BooleanLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setBoolean(d); - append( dol); -} - -void DataObjectListImpl::insert (unsigned int index, char d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, ByteLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setByte(d); - insert(index, dol); -} - -void DataObjectListImpl::append (char d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, ByteLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setByte(d); - append( dol); -} - -void DataObjectListImpl::insert (unsigned int index, wchar_t d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, CharacterLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setCharacter(d); - insert(index, dol); -} - -void DataObjectListImpl::append (wchar_t d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, CharacterLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setCharacter(d); - append( dol); -} - -void DataObjectListImpl::insert (unsigned int index, const wchar_t* d, unsigned int length) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, StringLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setString(d, length); - insert(index, dol); -} - -void DataObjectListImpl::append (const wchar_t* d, unsigned int length) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, StringLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setString(d, length); - append( dol); -} -void DataObjectListImpl::insert (unsigned int index, const char* d, unsigned int length) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, BytesLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setBytes(d, length); - insert(index, dol); -} - -void DataObjectListImpl::append (const char* d, unsigned int length) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, BytesLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setBytes(d, length); - append( dol); -} -void DataObjectListImpl::insert (unsigned int index, const char* d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, BytesLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setCString(d); - insert(index, dol); -} - -void DataObjectListImpl::append (const char* d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, BytesLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setCString(d); - append( dol); -} - -void DataObjectListImpl::insert (unsigned int index, short d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, ShortLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setShort(d); - insert(index, dol); -} - -void DataObjectListImpl::append (short d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, ShortLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setShort(d); - append( dol); -} - - -#if __WORDSIZE !=64 -void DataObjectListImpl::insert (unsigned int index, long d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, IntegerLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setInteger(d); - insert(index, dol); -} - -void DataObjectListImpl::append (long d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, IntegerLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setInteger(d); - append( dol); -} -#endif - -void DataObjectListImpl::insert (unsigned int index, const SDODate d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, DateLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setDate(d); - insert(index, dol); -} - -void DataObjectListImpl::append (const SDODate d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, DateLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setDate(d); - append( dol); -} - -void DataObjectListImpl::insert (unsigned int index, int64_t d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, LongLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setLong(d); - insert(index, dol); -} - -void DataObjectListImpl::append (int64_t d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, LongLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setLong(d); - append( dol); -} - -void DataObjectListImpl::insert (unsigned int index, float d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, FloatLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setFloat(d); - insert(index, dol); -} - -void DataObjectListImpl::append (float d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, FloatLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setFloat(d); - append( dol); -} - -void DataObjectListImpl::insert (unsigned int index, long double d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, DoubleLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setDouble(d); - insert(index, dol); -} - -void DataObjectListImpl::append (long double d) -{ - if (theFactory == 0) return; - - if (typeUnset)setType(Type::SDOTypeNamespaceURI, DoubleLiteral); - - RefCountingPointer<DataObject> dol = theFactory->create(typeURI, typeName); - DataObject* dob = dol; - ((DataObjectImpl*)dob)->setDouble(d); - append( dol); -} - - -void DataObjectListImpl::decrementPindex() -{ - pindex--; -} - - -RefCountingPointer<DataObject> DataObjectListImpl::remove(unsigned int index) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> d = (*this)[index]; - - // log deletion only if the list is of data objects. - if (theFactory != 0) - { - const Type& t = theFactory->getType(typeURI,typeName); - const Property& p = container->getProperty(pindex); - if (!t.isDataType() && !p.isReference()) - { - (getVec()[index])->logDeletion(); - } - } - plist.erase(plist.begin()+index); - DataObject* dob = d; - ((DataObjectImpl*)dob)->setContainer(0); - return d; -} - -void DataObjectListImpl::validateIndex(int index) const -{ - if ((index < 0) || (index >= size())) - { - char val[32]; - std::string msg("Index out of range:"); - sprintf(val,"%d",index); - msg += val; - SDO_THROW_EXCEPTION("validateIndex", SDOIndexOutOfRangeException, - msg.c_str()); - - } - -} - -bool DataObjectListImpl::getBoolean(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getBoolean(); -} -char DataObjectListImpl::getByte(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getByte(); -} -wchar_t DataObjectListImpl::getCharacter(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getCharacter(); -} -unsigned int DataObjectListImpl::getBytes(unsigned int index, char* value, unsigned int max) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getBytes(value, max); -} -unsigned int DataObjectListImpl::getString(unsigned int index, wchar_t* value, unsigned int max) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getString(value, max); -} -short DataObjectListImpl::getShort(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getShort(); -} -long DataObjectListImpl::getInteger(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getInteger(); -} -int64_t DataObjectListImpl::getLong(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getLong(); -} -float DataObjectListImpl::getFloat(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getFloat(); -} -long double DataObjectListImpl::getDouble(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getDouble(); -} -const SDODate DataObjectListImpl::getDate(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getDate(); -} -const char* DataObjectListImpl::getCString(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> d = ((*this)[index]); - DataObject* dob = d; - return ((DataObjectImpl*)dob)->getCString(); -} - -DataObjectPtr DataObjectListImpl::getDataObject(unsigned int index) const -{ - validateIndex(index); - return (*this)[index]; -} - -void DataObjectListImpl::setBoolean(unsigned int index, bool d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setBoolean(d); -} -void DataObjectListImpl::setByte(unsigned int index, char d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setByte(d); -} -void DataObjectListImpl::setCharacter(unsigned int index, wchar_t d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setCharacter(d); -} - -void DataObjectListImpl::setString(unsigned int index, const wchar_t* d, unsigned int len) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setString(d, len); -} -void DataObjectListImpl::setBytes(unsigned int index, const char* d, unsigned int len) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setBytes(d, len); -} - -void DataObjectListImpl::setShort(unsigned int index, short d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setShort(d); -} -void DataObjectListImpl::setInteger(unsigned int index, long d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setInteger(d); -} -void DataObjectListImpl::setLong(unsigned int index, int64_t d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setLong(d); -} -void DataObjectListImpl::setFloat(unsigned int index, float d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setFloat(d); -} -void DataObjectListImpl::setDouble(unsigned int index, long double d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setDouble(d); -} -void DataObjectListImpl::setDate(unsigned int index, const SDODate d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setDate(d); -} -void DataObjectListImpl::setCString(unsigned int index, char* d) -{ - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - ((DataObjectImpl*)dob)->setCString(d); -} - -void DataObjectListImpl::setDataObject(unsigned int index, DataObjectPtr dob) -{ - - if (dob != 0) - { - checkFactory(dob); - - checkType(theFactory->getType(typeURI,typeName), - dob->getType()); - } - - validateIndex(index); - if (container != 0) - { - container->logChange(pindex); - } - - remove(index); - insert(index,dob); -} - -unsigned int DataObjectListImpl::getLength(unsigned int index) const -{ - validateIndex(index); - RefCountingPointer<DataObject> dd = ((*this)[index]); - DataObject* dob = dd; - return dob->getLength(); -} - - const SDOString DataObjectListImpl::BooleanLiteral = "Boolean"; - const SDOString DataObjectListImpl::ByteLiteral = "Byte"; - const SDOString DataObjectListImpl::CharacterLiteral = "Character"; - const SDOString DataObjectListImpl::BytesLiteral = "Bytes"; - const SDOString DataObjectListImpl::StringLiteral = "String"; - const SDOString DataObjectListImpl::IntegerLiteral = "Integer"; - const SDOString DataObjectListImpl::ShortLiteral = "Short"; - const SDOString DataObjectListImpl::DateLiteral = "Date"; - const SDOString DataObjectListImpl::LongLiteral = "Long"; - const SDOString DataObjectListImpl::FloatLiteral = "Float"; - const SDOString DataObjectListImpl::DoubleLiteral = "Double"; - -}; -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.h deleted file mode 100644 index 78af3a0ea5..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataObjectListImpl.h +++ /dev/null @@ -1,207 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/06 12:58:18 $ */ - -#ifndef _DATAOBJECTLISTIMPL_H_ -#define _DATAOBJECTLISTIMPL_H_ - -#include "commonj/sdo/DataObjectList.h" -#include "commonj/sdo/SDODate.h" - -#include "commonj/sdo/disable_warn.h" - -#include <vector> - - -namespace commonj{ -namespace sdo{ - -class DataObjectImpl; -class DataFactory; - -typedef std::vector< RefCountingPointer<DataObjectImpl> > DATAOBJECT_VECTOR; - -/** - * DataObjectListImpl implements the abstract class DataObjectList. - * List for retrieving many valued property values. - * - * DataObjectList provides an API for getting and setting values in - * many valued properties. The list deals with both DataType and - * DataObjectType properties. - */ - -class DataObjectListImpl : public DataObjectList -{ - -public: - DataObjectListImpl(DATAOBJECT_VECTOR p); - DataObjectListImpl(const DataObjectListImpl &pin); - DataObjectListImpl(); - DataObjectListImpl(DataFactory* df, DataObjectImpl* cont, unsigned int inpindex, - const char* tURI, const char* tName); - - virtual ~DataObjectListImpl(); - - // open type support - virtual void decrementPindex(); - - virtual DataObjectPtr operator[] (int pos); - virtual const DataObjectPtr operator[] (int pos) const; - - // set/get primitive values - virtual bool getBoolean(unsigned int index) const; - virtual char getByte(unsigned int index) const; - virtual wchar_t getCharacter(unsigned int index) const; - virtual unsigned int getString(unsigned int index, wchar_t* buf, - unsigned int max) const; - virtual unsigned int getBytes(unsigned int index, char* buf, - unsigned int max) const; - virtual short getShort(unsigned int index) const; - virtual long getInteger(unsigned int index) const; - virtual int64_t getLong(unsigned int index) const; - virtual float getFloat(unsigned int index) const; - virtual long double getDouble(unsigned int index) const; - virtual const SDODate getDate(unsigned int index) const; - virtual const char* getCString(unsigned int index) const; - virtual DataObjectPtr getDataObject(unsigned int index) const; - - virtual void setBoolean(unsigned int index, bool d); - virtual void setByte(unsigned int index, char d); - virtual void setCharacter(unsigned int index, wchar_t d); - virtual void setString(unsigned int index, const wchar_t* d, unsigned int len); - virtual void setBytes(unsigned int index, const char* d, unsigned int len); - virtual void setShort(unsigned int index, short d); - virtual void setInteger(unsigned int index, long d); - virtual void setLong(unsigned int index, int64_t d); - virtual void setFloat(unsigned int index, float d); - virtual void setDouble(unsigned int index, long double d); - virtual void setDate(unsigned int index, const SDODate d); - virtual void setCString(unsigned int index, char* d); - virtual void setDataObject(unsigned int index, DataObjectPtr dob); - - virtual unsigned int getLength(unsigned int index) const; - - virtual int size () const; - - virtual void insert (unsigned int index, DataObjectPtr d); - virtual void append (DataObjectPtr d); - - virtual void insert (unsigned int index, bool d) ; - virtual void append (bool d) ; - - virtual void insert (unsigned int index, char d) ; - virtual void append (char d) ; - - virtual void insert (unsigned int index, wchar_t d) ; - virtual void append (wchar_t d) ; - - virtual void insert (unsigned int index, const wchar_t* d, unsigned int len) ; - virtual void append (const wchar_t* d, unsigned int len) ; - - virtual void insert (unsigned int index, const char* d, unsigned int len) ; - virtual void append (const char* d, unsigned int len) ; - - virtual void insert (unsigned int index, const char* d) ; - virtual void append (const char* d) ; - - virtual void insert (unsigned int index, short d) ; - virtual void append (short d) ; - - virtual void insert (unsigned int index, const SDODate d) ; - virtual void append (const SDODate d) ; - -#if __WORDSIZE !=64 - virtual void insert (unsigned int index, long d) ; - virtual void append (long d) ; -#endif - - virtual void insert (unsigned int index, int64_t d) ; - virtual void append (int64_t d) ; - - virtual void insert (unsigned int index, float d) ; - virtual void append (float d) ; - - virtual void insert (unsigned int index, long double d) ; - virtual void append (long double d) ; - - - virtual DataObjectPtr remove (unsigned int index); - - virtual void checkFactory(DataObjectPtr dob); - virtual void checkType(const Type& listType, const Type& objectType); - virtual void setType(const char* uri, const char* name); - virtual void setType(const SDOString& uri, const SDOString& name); - - /* getType returns type - * - * Returns the type. - * May throw SDOTYpeNotFoundException for unset open types - */ - - - virtual const Type& getType(); - - /* getTypeEnum returns an enumerator for the type - * - * Returns an enumerator for the type for easy switching on basic types. - * The enumerator is part of the Type class - * May throw SDOTypeNotFoundException for open types - */ - - virtual const Type::Types getTypeEnum(); - - -private: - DATAOBJECT_VECTOR plist; - DATAOBJECT_VECTOR getVec() const; - - // For creation of items via the insert/append api. - char* typeURI; - char* typeName; - - // for open types, the list may not have a type until the - // first item is entered - - bool typeUnset; - - // No reference count held on the factory - DataFactory* theFactory; - - // For logging a change in the change summary when appending - DataObjectImpl* container; - unsigned int pindex; - bool isReference; - - void validateIndex(int index) const; - - static const SDOString BooleanLiteral; - static const SDOString ByteLiteral; - static const SDOString CharacterLiteral; - static const SDOString BytesLiteral; - static const SDOString StringLiteral; - static const SDOString IntegerLiteral; - static const SDOString ShortLiteral; - static const SDOString DateLiteral; - static const SDOString LongLiteral; - static const SDOString FloatLiteral; - static const SDOString DoubleLiteral; - -}; -}; -}; -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DefaultLogWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DefaultLogWriter.cpp deleted file mode 100644 index bfd75a18fb..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DefaultLogWriter.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/disable_warn.h" -#include "commonj/sdo/DefaultLogWriter.h" - -#include <iostream> -using namespace std; - -namespace commonj -{ - namespace sdo - { - - DefaultLogWriter::DefaultLogWriter() - { - formatindent = 0; - } - - DefaultLogWriter::~DefaultLogWriter() - { - } - - void DefaultLogWriter::log(int indent, int level, const char* msg) - { - if (indent < 0) formatindent += indent; - for (int i=0; i < formatindent; i++) - { - cout << " "; - } - cout << msg <<endl; - if (indent > 0) formatindent += indent; - } - - } // End namespace sca -} // End namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DefaultLogWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DefaultLogWriter.h deleted file mode 100644 index e9b5318c4e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DefaultLogWriter.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef SDO_DefaultLOGWriter_H -#define SDO_DefaultLOGWriter_H - -#include "commonj/sdo/LogWriter.h" - - - -namespace commonj -{ - namespace sdo - { - -/** - * DefaultLogWriter is a basic log writer, part of the logger. - * The logging API holds a log writer , and uses it to send - * output whereever it is needed. The application writer would - * hook their own LogWriter in place of this simple one. - */ - class DefaultLogWriter : public LogWriter - { - public: - - DefaultLogWriter(); - virtual ~DefaultLogWriter(); - - virtual void log(int indent, int level, const char* msg); - private: - int formatindent; - }; - - } // End namespace sca -} // End namespace commonj -#endif // SDO_DefaultLOGWriter_H diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/EqualityHelper.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/EqualityHelper.cpp deleted file mode 100644 index 603c24891e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/EqualityHelper.cpp +++ /dev/null @@ -1,370 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/TypeList.h" -#include "commonj/sdo/Sequence.h" - -#include "commonj/sdo/DataObject.h" - - - -#include "commonj/sdo/EqualityHelper.h" - -namespace commonj{ -namespace sdo{ - - bool EqualityHelper::compareitem(DataObjectPtr to, DataObjectPtr from, const Property& p) - { - switch (p.getTypeEnum()) - { - case Type::BooleanType: - return (to->getBoolean(p) == from->getBoolean(p)); - case Type::ByteType: - return (to->getByte(p) == from->getByte(p)); - case Type::CharacterType: - return (to->getCharacter(p) == from->getCharacter(p)); - case Type::IntegerType: - return (to->getInteger(p) == from->getInteger(p)); - case Type::ShortType: - return (to->getShort(p) == from->getShort(p)); - case Type::DoubleType: - return (to->getDouble(p) == from->getDouble(p)); - case Type::FloatType: - return (to->getFloat(p) == from->getFloat(p)); - case Type::LongType: - return (to->getLong(p) == from->getLong(p)); - case Type::DateType: - return (to->getDate(p).getTime() == from->getDate(p).getTime()); - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::UriType: - case Type::StringType: - { - unsigned int siz = from->getLength(p); - if (siz != to->getLength(p)) return false; - - if (siz > 0) - { - wchar_t * buff = new wchar_t[siz]; - wchar_t * buft = new wchar_t[siz]; - from->getString(p, buff, siz); - to->getString(p, buft, siz); - for (int i=0;i< siz; i++) - { - if (buff[i] != buft[i]) - { - delete buff; - delete buft; - return false; - } - } - delete buff; - delete buft; - } - return true; - } - case Type::BytesType: - { - unsigned int siz = from->getLength(p); - if (siz != to->getLength(p)) return false; - - if (siz > 0) - { - char * buff = new char[siz]; - char * buft = new char[siz]; - from->getBytes(p, buff, siz); - to->getBytes(p, buft, siz); - for (int i=0;i< siz; i++) - { - if (buff[i] != buft[i]) - { - delete buff; - delete buft; - return false; - } - } - delete buff; - delete buft; - } - return true; - } - default: - return true; - } // switch - } - - bool EqualityHelper::comparelist(DataObjectList& to, DataObjectList& from, Type::Types t) - { - switch (t) - { - case Type::BooleanType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getBoolean(i) != from.getBoolean(i)) - { - return false; - } - } - return true; - } - - case Type::ByteType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getByte(i) != from.getByte(i)) - { - return false; - } - } - return true; - } - - case Type::CharacterType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getCharacter(i) != from.getCharacter(i)) - { - return false; - } - } - return true; - } - - case Type::IntegerType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getInteger(i) != from.getInteger(i)) - { - return false; - } - } - return true; - } - - case Type::ShortType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getShort(i) != from.getShort(i)) - { - return false; - } - } - return true; - } - case Type::DoubleType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getDouble(i) != from.getDouble(i)) - { - return false; - } - } - return true; - } - - case Type::FloatType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getFloat(i) != from.getFloat(i)) - { - return false; - } - } - return true; - } - - case Type::LongType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getLong(i) != from.getLong(i)) - { - return false; - } - } - return true; - } - - case Type::DateType: - { - for (int i=0;i< from.size(); i++) - { - if (to.getDate(i).getTime() != from.getDate(i).getTime()) - { - return false; - } - } - return true; - } - - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::UriType: - case Type::StringType: - { - for (int i=0;i< from.size(); i++) - { - unsigned int siz = from.getLength(i); - if (siz != to.getLength(i)) return false; - - if (siz > 0) - { - wchar_t * buff = new wchar_t[siz]; - wchar_t * buft = new wchar_t[siz]; - from.getString(i,buff,siz); - to.getString(i,buft,siz); - for (int j=0;j<siz;j++) - { - if (buff[j] != buft[j]) - { - delete buff; - delete buft; - return false; - } - } - delete buff; - delete buft; - } - } - return true; - } - - case Type::BytesType: - { - for (int i=0;i< from.size(); i++) - { - unsigned int siz = from.getLength(i); - if (siz != to.getLength(i)) return false; - - if (siz > 0) - { - char * buff = new char[siz]; - char * buft = new char[siz]; - from.getBytes(i,buff,siz); - to.getBytes(i,buft,siz); - for (int j=0;j<siz;j++) - { - if (buff[j] != buft[j]) - { - delete buff; - delete buft; - return false; - } - } - delete buff; - delete buft; - } - } - return true; - } - - default: - return true; - - } // case - } // method - - bool EqualityHelper::equalShallow(DataObjectPtr dataObject1, DataObjectPtr dataObject2) - { - return internalEqual(dataObject1, dataObject2, false); - - } - - bool EqualityHelper::equal(DataObjectPtr dataObject1, DataObjectPtr dataObject2) - { - return internalEqual(dataObject1, dataObject2, true); - } - - - bool EqualityHelper::internalEqual(DataObjectPtr dataObject1, - DataObjectPtr dataObject2, - bool fullEqual) - { - - - PropertyList pl = dataObject1->getInstanceProperties(); - for (int i=0;i < pl.size(); i++) - { - // data objects are only compared the deep equality case - if (pl[i].getType().isDataObjectType()) - { - if (!fullEqual) - { - continue; - } - else - { - if (pl[i].isMany()) - { - DataObjectList& dolold = dataObject1->getList(pl[i]); - DataObjectList& dolnew = dataObject2->getList(pl[i]); - if (dolnew.size() != dolold.size()) return false; - - for (int i=0;i< dolold.size(); i++) - { - if (!internalEqual(dolold[i], dolnew[i], true)) - { - return false; - } - } - } - else - { - if (!internalEqual( - dataObject1->getDataObject(pl[i]), - dataObject2->getDataObject(pl[i]), true)) - { - return false; - } - } - } - } - else - { - if (pl[i].isMany()) - { - DataObjectList& dolold = dataObject1->getList(pl[i]); - DataObjectList& dolnew = dataObject2->getList(pl[i]); - if (dolold.size() != dolnew.size()) return false; - if (!comparelist(dolold, dolnew, pl[i].getTypeEnum())) return false; - } - else - { - if (!compareitem(dataObject1,dataObject2, pl[i])) - { - return false; - } - } // else - } - } - return true; - } - -} -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/EqualityHelper.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/EqualityHelper.h deleted file mode 100644 index 381564338c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/EqualityHelper.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _EQUALITYHELPER_H_ -#define _EQUALITYHELPER_H_ - -#include "commonj/sdo/RefCountingPointer.h" - - - -namespace commonj{ -namespace sdo{ - -/** - * EqualityHelper provides static helper methods for equals. - * equalsShallow compares the DataType properties of the - * two data objects. - * equals performs a check on all the memebers and verifies that - * the same data objects are children. - */ - - class EqualityHelper -{ - public: - - /** - * Shallow compare of DataObjects - * - * Compares two DataObjects for each property where - * property.getType().isDataObjectType() is false. - * Compares dataObject1.get(property).equals(dataObject2.get(property)) - * Properties where property.getType().isDataObjectType() is true - * are not compared. - * DataObjects must have the same type - * dataObject1.getType() == dataObject2.getType() - * Returns true if all values of all compared properties are equal. - * @param dataObject1 DataObject to be compared - * @param dataObject2 DataObject to be compared - * @return true if equal - */ - static SDO_API bool equalShallow(DataObjectPtr dataObject1, DataObjectPtr dataObject2); - - /** - * Deep compare of DataObjects - * Compares dataObject1 and dataObject2 and all their contained - * DataObjects (property.isContainment() is true) recursively. - * Values of properties are comapred as in isEqualShallow, - * and values of properties where - * property.getType().isDataObjectType() is true - * are compared where each value copied must be a corresponding - * DataObject contained by the source dataObject. - * The dataObject trees must be closed. - * If any DataObject referenced in either tree is not part of the - * containment trees an IllegalArgumentException is thrown. - * If a ChangeSummary is part of the tree they must contain an - * identical summary for their respective trees. - * - * @param dataObject1 DataObject to be compared - * @param dataObject2 DataObject to be compared - * @return true if all compared aspects of all compared objects are equal - * @throws IllegalArgumentException if any referenced DataObject - * is not part of the containment trees. - */ - static SDO_API bool equal(DataObjectPtr dataObject1, DataObjectPtr dataObject2); - - private: - - static bool internalEqual(DataObjectPtr dataObject1, - DataObjectPtr dataObject2, - bool fullEqual); - - static bool comparelist(DataObjectList& to, DataObjectList& from, Type::Types t); - - static bool compareitem(DataObjectPtr to, DataObjectPtr from, const Property& p); - - - -}; -}; -}; -#endif //_EQUALITYHELPER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupDefinition.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupDefinition.cpp deleted file mode 100644 index 57870a7516..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupDefinition.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#include "commonj/sdo/GroupDefinition.h" -namespace commonj -{ - namespace sdo - { - GroupDefinition::GroupDefinition() - { - } - - GroupDefinition::~GroupDefinition() - { - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupDefinition.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupDefinition.h deleted file mode 100644 index 685c1119e8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupDefinition.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#ifndef _GROUPDEFINITION_H_ -#define _GROUPDEFINITION_H_ - -#include "commonj/sdo/disable_warn.h" -#include "commonj/sdo/GroupEvent.h" - -#include "list" - - -namespace commonj -{ - namespace sdo - { - - -/** - * TypeDefinition holds information gathered from parsing the - * XSD and used for creating Types - */ - class GroupDefinition - { - - public: - GroupDefinition(); - virtual ~GroupDefinition(); - - - SDOXMLString name; - SDOXMLString uri; - bool isAttributeGroup; - std::vector<GroupEvent> events; - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_TYPEDEFINITION_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupEvent.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupEvent.cpp deleted file mode 100644 index adad37ff82..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupEvent.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#include "commonj/sdo/GroupEvent.h" -namespace commonj -{ - namespace sdo - { - GroupEvent::GroupEvent() - { - } - - GroupEvent::GroupEvent( - const SDOXMLString& inlocalname, - const SDOXMLString& inprefix, - const SDOXMLString& inURI, - const SAX2Namespaces& innamespaces, - const SAX2Attributes& inattributes - ) - { - localname = inlocalname; - prefix = inprefix; - URI = inURI; - namespaces = innamespaces; - attributes = inattributes; - isStartEvent = true; - } - - GroupEvent::GroupEvent( - const SDOXMLString& inlocalname, - const SDOXMLString& inprefix, - const SDOXMLString& inURI - ) - { - localname = inlocalname; - prefix = inprefix; - URI = inURI; - isStartEvent = false; - } - - GroupEvent::~GroupEvent() - { - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupEvent.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupEvent.h deleted file mode 100644 index a2ae966398..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/GroupEvent.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#ifndef _GROUPEVENT_H_ -#define _GROUPEVENT_H_ - -#include "commonj/sdo/disable_warn.h" - - -#include "commonj/sdo/SAX2Parser.h" - -namespace commonj -{ - namespace sdo - { - - - class GroupEvent - { - - public: - GroupEvent(); - GroupEvent( - const SDOXMLString& inlocalname, - const SDOXMLString& inprefix, - const SDOXMLString& inURI, - const SAX2Namespaces& innamespaces, - const SAX2Attributes& inattributes - ); - - GroupEvent( - const SDOXMLString& inlocalname, - const SDOXMLString& inprefix, - const SDOXMLString& inURI - ); - - virtual ~GroupEvent(); - - bool isStartEvent; - SDOXMLString localname; - SDOXMLString prefix; - SDOXMLString URI; - SAX2Namespaces namespaces; - SAX2Attributes attributes; - - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_TYPEDEFINITION_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/HelperProvider.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/HelperProvider.cpp deleted file mode 100644 index b41c47a501..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/HelperProvider.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/HelperProvider.h" -#include "commonj/sdo/XSDHelperImpl.h" -#include "commonj/sdo/XMLHelperImpl.h" -#include "commonj/sdo/export.h" -#include "commonj/sdo/DataFactory.h" - -namespace commonj -{ - namespace sdo - { - - ////////////////////////////////////////////////////////////////////// - // Create an XSDHelper - ////////////////////////////////////////////////////////////////////// - XSDHelperPtr HelperProvider::getXSDHelper(DataFactoryPtr dataFactory) - { - return new XSDHelperImpl(dataFactory); - } - ////////////////////////////////////////////////////////////////////// - // Create an XMLHelper - ////////////////////////////////////////////////////////////////////// - XMLHelperPtr HelperProvider::getXMLHelper(DataFactoryPtr dataFactory) - { - return new XMLHelperImpl(dataFactory); - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/HelperProvider.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/HelperProvider.h deleted file mode 100644 index 7be271f128..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/HelperProvider.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _HELPERPROVIDER_H_ -#define _HELPERPROVIDER_H_ - - -#include "commonj/sdo/XSDHelper.h" -#include "commonj/sdo/XMLHelper.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/export.h" - - -namespace commonj -{ - namespace sdo - { - - -/** - * HelperProvider gives access to helpers (static methods). - * - * The helper provider gives back an XSD or XML helper associated - * with the given data factory - */ - class HelperProvider - { - public: - -/** - * - * The helper provider gives back an XSD helper associated - * with the given data factory - */ - SDO_API static XSDHelperPtr getXSDHelper(DataFactoryPtr dataFactory=0); - -/** - * - * The helper provider gives back an XML helper associated - * with the given data factory - */ - SDO_API static XMLHelperPtr getXMLHelper(DataFactoryPtr dataFactory=0); - - }; - - } // End - namespace sdo -} // End - namespace commonj - -#endif // _HELPERPROVIDER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/LogWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/LogWriter.cpp deleted file mode 100644 index 79f7d48671..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/LogWriter.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/LogWriter.h" - -namespace commonj -{ - namespace sdo - { - LogWriter::~LogWriter() - { - } - - } // End namespace sdo -} // End namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/LogWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/LogWriter.h deleted file mode 100644 index 9948c86ed9..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/LogWriter.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef SDO_LOGWriter_H -#define SDO_LOGWriter_H - -#include "commonj/sdo/export.h" - -namespace commonj -{ - namespace sdo - { - -/** - * LogWriter is an abstract class for implementers to inherit from. - * see DefaultLogWriter. - */ - class LogWriter - { - public: - virtual ~LogWriter(); - - SDO_API virtual void log(int indent, int level, const char* msg) = 0; - }; - - } // End namespace sdo -} // End namespace commonj -#endif // SDO_LOGWriter_H diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logger.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logger.cpp deleted file mode 100644 index 6d799f2435..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logger.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/01/23 16:39:24 $ */ - -#include "commonj/sdo/Logger.h" -#include <iostream> -#include <stdarg.h> -#include "commonj/sdo/DefaultLogWriter.h" -#include <stdio.h> - -using namespace std; - -namespace commonj -{ - namespace sdo - { - LogWriter* Logger::logWriter = getLogWriter(); - - LogWriter* Logger::getLogWriter() - { - if (logWriter == 0) - { - setLogWriter(0); - } - return logWriter; - } - - void Logger::setLogWriter(LogWriter* writer) - { - if (logWriter != writer) - { - delete logWriter; - } - - if (writer == 0) - { - logWriter = new DefaultLogWriter; - } - else - { - logWriter = writer; - } - } - - int Logger::loggingLevel = setLogging(); - - int Logger::setLogging() - { - char* loggingVar = 0; - loggingVar = getenv("SDO4CPP_LOGGING"); - if (loggingVar == 0) - return 0; - else - return atoi(loggingVar); - } - - void Logger::setLogging(int level) - { - loggingLevel = level; - } - - void Logger::log(int indent, int level, const char* msg) - { - if (level <= loggingLevel) - { - logWriter->log(indent, level, msg); - } - } - - void Logger::logArgs(int indent, int level, const char* msg, ...) - { - if (level <= loggingLevel) - { - va_list variableArguments; - va_start(variableArguments, msg); - char messageBuffer[1024]; - vsprintf(messageBuffer, msg, variableArguments); - logWriter->log(indent, level, messageBuffer); - va_end(variableArguments); - } - } - - } // End namespace sdo -} // End namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logger.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logger.h deleted file mode 100644 index ee566e9c44..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logger.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef SDO_LOGGER_H -#define SDO_LOGGER_H - - - -#include "commonj/sdo/export.h" -#include "commonj/sdo/LogWriter.h" -namespace commonj -{ - namespace sdo - { - -/** - * Logger is used for debug style logging such as method trace. - * The logger can log at different levels, and can log entry, exit - * and events. The log entries can take arguments or be just - * strings. - */ - class Logger { - - public: -/** - * attach a log writer. - */ - SDO_API static void setLogWriter(LogWriter* writer); -/** - * switch logging to a level. - */ - SDO_API static void setLogging(int level); - -/** - * log a message. - */ - SDO_API static void log(int indent, int level, const char* msg); -/** - * log a message with parameters. - */ - SDO_API static void logArgs(int indent, int level, const char* msg, ...); - - static int loggingLevel; - - private: - static LogWriter* logWriter; - static LogWriter* getLogWriter(); - static int setLogging(); - }; - - } // End namespace sdo -} // End namespace commonj -#endif // SDO_LOGGER_H diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logging.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logging.h deleted file mode 100644 index e2adac2d84..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Logging.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/Logger.h" -#include "commonj/sdo/SDORuntimeException.h" - -# -#ifndef SDO_LOGGING_H -#define SDO_LOGGING_H - -/** - * logging level for stuff you rarely want to see, like - * memory allocations. - */ - -#define HIGHVOLUME 40 -/** - * logging level for normal path information - */ -#define INFO 30 - - /** - * logging level for something which is unusual. - */ - -#define WARNING 20 -/** - * logging level for a major problem - */ - -#define ERROR 10 - -#define INDENT 1 -#define OUTDENT -1 -#define NODENT 0 - - -/** - * Macro for simplifying addition of trace points - */ - -#ifdef _DEBUG -#define LOGENTRY(level, methodName) \ -if (Logger::loggingLevel >= level) \ -Logger::logArgs(INDENT, level, "Entering: %s", methodName); - -/** - * Macro for simplifying addition of trace points - */ -#define LOGEXIT(level, methodName) \ -if (Logger::loggingLevel >= level) \ -Logger::logArgs(OUTDENT, level, "Exiting: %s" ,methodName); - -/** - * Macro for simplifying addition of trace points - */ -#define LOGINFO(level, message) \ -if (Logger::loggingLevel >= level) \ -Logger::log(NODENT, level, message); - -/** - * Macro for simplifying addition of trace points - */ -#define LOGINFO_1(level, message, arg1) \ -if (Logger::loggingLevel >= level) \ -Logger::logArgs(NODENT,level, message, arg1); - -/** - * Macro for simplifying addition of trace points - */ -#define LOGINFO_2(level, message, arg1, arg2) \ -if (Logger::loggingLevel >= level) \ -Logger::logArgs(NODENT,level, message, arg1, arg2); - -/** - * Macro for simplifying addition of trace points - */ -#define LOGERROR(level, message) \ -if (Logger::loggingLevel >= level) \ -Logger::log(NODENT,level, message); - -/** - * Macro for simplifying addition of trace points - */ -#define LOGERROR_1(level, message, arg1) \ -if (Logger::loggingLevel >= level) \ -Logger::logArgs(NODENT,level, message, arg1); - -/** - * Macro for simplifying addition of trace points - */ -#define LOGERROR_2(level, message, arg1, arg2) \ -if (Logger::loggingLevel >= level) \ -Logger::logArgs(NODENT,level, message, arg1, arg2); - -/** - * Macro for simplifying addition of trace points - */ -#define LOGSDOEXCEPTION(level, message, arg1) \ -if (Logger::loggingLevel >= level) \ -Logger::log(NODENT,level, message);\ -Logger::logArgs(NODENT,level, "%s:%s\nIn %s\nAt %s line %ld\n",\ - ((SDORuntimeException)arg1).getEClassName(),\ - ((SDORuntimeException)arg1).getMessageText(),\ - ((SDORuntimeException)arg1).getFunctionName(),\ - ((SDORuntimeException)arg1).getFileName(),\ - ((SDORuntimeException)arg1).getLineNumber()); - -#else // Not DEBUG - -/** - * Macro for simplifying addition of trace points - */ -#define LOGSDOEXCEPTION(level, message, arg1) - -/** - * Macro for simplifying addition of trace points - */ -#define LOGENTRY(level, methodName) - -/** - * Macro for simplifying addition of trace points - */ -#define LOGEXIT(level, methodName) - -/** - * Macro for simplifying addition of trace points - */ -#define LOGINFO(level, message) - -/** - * Macro for simplifying addition of trace points - */ -#define LOGINFO_1(level, message, arg1) - -/** - * Macro for simplifying addition of trace points - */ -#define LOGINFO_2(level, message, arg1, arg2) -/** - * Macro for simplifying addition of trace points - */ -#define LOGERROR(level, message) -/** - * Macro for simplifying addition of trace points - */ -#define LOGERROR_1(level, message, arg1) -/** - * Macro for simplifying addition of trace points - */ -#define LOGERROR_2(level, message, arg1, arg2) - -#endif -#endif // SDO_LOGGING_H diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Makefile.am b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Makefile.am deleted file mode 100644 index 7bc7726be7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Makefile.am +++ /dev/null @@ -1,87 +0,0 @@ -lib_LTLIBRARIES = libtuscany_sdo.la -AM_CPPFLAGS = $(CPPFLAGS) - -libtuscany_sdo_la_SOURCES = \ - ChangedDataObjectListImpl.cpp \ - ChangeSummaryBuilder.cpp \ - ChangeSummary.cpp \ - ChangeSummaryImpl.cpp \ - CopyHelper.cpp \ - DASProperty.cpp \ - DASType.cpp \ - DASValue.cpp \ - DASValues.cpp \ - DataFactory.cpp \ - DataFactoryImpl.cpp \ - DataGraph.cpp \ - DataGraphImpl.cpp \ - DataObject.cpp \ - DataObjectImpl.cpp \ - DataObjectInstance.cpp \ - DataObjectList.cpp \ - DataObjectListImpl.cpp \ - DefaultLogWriter.cpp \ - EqualityHelper.cpp \ - GroupDefinition.cpp \ - GroupEvent.cpp \ - HelperProvider.cpp \ - Logger.cpp \ - LogWriter.cpp \ - ParserErrorSetter.cpp \ - Property.cpp \ - PropertyDefinition.cpp \ - PropertyDefinitionImpl.cpp \ - PropertyImpl.cpp \ - PropertyList.cpp \ - PropertySetting.cpp \ - RefCountingObject.cpp \ - RefCountingPointer.cpp \ - SAX2Attribute.cpp \ - SAX2Attributes.cpp \ - SAX2Namespaces.cpp \ - SAX2Parser.cpp \ - SchemaInfo.cpp \ - SdoCheck.cpp \ - SDODate.cpp \ - SdoRuntime.cpp \ - SDORuntimeException.cpp \ - SDOSAX2Parser.cpp \ - SDOSchemaSAX2Parser.cpp \ - SDOString.cpp \ - SDOUtils.cpp \ - SDOXMLBufferWriter.cpp \ - SDOXMLFileWriter.cpp \ - SDOXMLStreamWriter.cpp \ - SDOXMLString.cpp \ - SDOXMLWriter.cpp \ - SDOXSDBufferWriter.cpp \ - SDOXSDFileWriter.cpp \ - SDOXSDStreamWriter.cpp \ - SDOXSDWriter.cpp \ - Sequence.cpp \ - SequenceImpl.cpp \ - Setting.cpp \ - SettingList.cpp \ - Type.cpp \ - TypeDefinition.cpp \ - TypeDefinitions.cpp \ - TypeDefinitionImpl.cpp \ - TypeDefinitionsImpl.cpp \ - TypeImpl.cpp \ - TypeList.cpp \ - XMLDocument.cpp \ - XMLDocumentImpl.cpp \ - XMLHelper.cpp \ - XMLHelperImpl.cpp \ - XMLQName.cpp \ - XpathHelper.cpp \ - XSDHelper.cpp \ - XSDHelperImpl.cpp \ - XSDPropertyInfo.cpp \ - XSDTypeInfo.cpp - -libtuscany_sdo_la_LIBADD = - -INCLUDES = -I$(top_builddir)/runtime/core/src \ - -I${LIBXML2_INCLUDE} - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ParserErrorSetter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ParserErrorSetter.cpp deleted file mode 100644 index 2d9a99360f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ParserErrorSetter.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -// ParserErrorSetter.cpp: class allowing parser to push errors back. -// -////////////////////////////////////////////////////////////////////// -#include "commonj/sdo/ParserErrorSetter.h" -namespace commonj -{ - namespace sdo - { - ////////////////////////////////////////////////////////////////////// - // Construction/Destruction - ////////////////////////////////////////////////////////////////////// - ParserErrorSetter::~ParserErrorSetter() - { - } - - } // End - namespace sdo -} // End - namespace commonj - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ParserErrorSetter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ParserErrorSetter.h deleted file mode 100644 index f4261c1154..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/ParserErrorSetter.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 12:33:33 $ */ - -#ifndef _PARSER_ERROR_SETTER_H_ -#define _PARSER_ERROR_SETTER_H_ - -#include "commonj/sdo/export.h" - -#include "commonj/sdo/disable_warn.h" - -#include <vector> - -namespace commonj{ -namespace sdo{ - -/** - * The ParserErrorSetter builds a list of all the errors which - * occurred during a parse, so they can be displayed for the - * user of an XSDHelper or XMLHelper - */ - -class ParserErrorSetter -{ -public: - virtual ~ParserErrorSetter(); - virtual void setError(const char* message) = 0; - virtual void clearErrors() = 0; -}; -}; -}; - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Property.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Property.cpp deleted file mode 100644 index 11fc167377..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Property.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include <iostream> -using namespace std; - - -#ifndef SDO_EXPORTS -#define SDO_EXPORTS -#endif -#include "commonj/sdo/export.h" - -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/TypeList.h" - -#include "commonj/sdo/Type.h" -#include "commonj/sdo/Property.h" -namespace commonj{ -namespace sdo{ - - // All delegated to the impl. - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Property.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Property.h deleted file mode 100644 index 2bd52c9ab2..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Property.h +++ /dev/null @@ -1,205 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/06 12:58:18 $ */ - -#ifndef _PROPERTY_H_ -#define _PROPERTY_H_ - - -#include "commonj/sdo/export.h" - -#include "commonj/sdo/Type.h" -#include "commonj/sdo/SDODate.h" - -namespace commonj{ -namespace sdo{ - -class Type; -class TypeImpl; -class DataObject; - -/** - * - * A representation of a property in the type of a data object. - */ - -class Property -{ - public: - - /** getName gets the name of the property - * - * Returns the name of the property. - */ - - // TODO: We would like the returned value to be an SDOString but not until the internals are ready - virtual const SDO_API char* getName() const = 0; - // virtual const SDO_API SDOString& getName() const = 0; - - /** getAlias returns the n'th alias - * - * This method returns a const char* corresponding to the - * alias at index n of the list of aliases. Use getAliasCount to - * discover the size of the list. - */ - - // TODO: We would lke to convert the returned value to an SDOString but that means a rename for the method. - virtual SDO_API const char* getAlias(unsigned int index = 0) const = 0; - - // virtual SDO_API const SDOString& getAlias(unsigned int index = 0) const = 0; - - /** getAliasCount returns the number of aliases - * - * This method returns the number of aliases for this type - */ - - virtual SDO_API unsigned int getAliasCount() const = 0; - - /** getType returns the type of this property - * - * This method returns the type, which may be a DataType or a - * DataObjectType - */ - - virtual SDO_API const Type& getType() const = 0; - - /** getTypeEnum gets the enum for this type. - * - * Each DataType has a defined value in the list of Types. - */ - - virtual SDO_API const Type::Types getTypeEnum() const = 0; - - /** isMany is true if the property is a list - * - * IsMany returns true if this property represents a list of - * values, and should be accessed via the getList DataObjectAPI. - */ - - virtual bool SDO_API isMany() const = 0; - - /** isContainment is true if the property value is contained - * - * IsContainment returns true if this property represents a DataObjectType, - * and that DataObjectType is contained. I.E the property value is not a pointer - * to a DataObject somewhere else in the graph, it is an actual value. - */ - - virtual bool SDO_API isContainment() const = 0; - - /** isReference is true if the property value is not contained - * - * IsReference returns true if this property represents a DataObjectType, - * and that DataObjectType is not contained. I.E the property value is a pointer - * to a DataObject somewhere else in the graph not an actual value. - */ - - virtual bool SDO_API isReference() const = 0; - - /** getContainingType give the type which holds this property. - * - * Although many types may have a property of the same name, any given - * instance of a property belongs to only one type. - * This method returns the type which holds this proeprty. - */ - - virtual SDO_API const Type& getContainingType() const = 0; - - - - /** isReadOnly returns true if the property is unmodifiable. - * - * NOT IMPLEMENTED - * Returns true if values for this Property cannot be modified using the SDO APIs. - * When true, DataObject.set(Property property, Object value) throws an exception. - * Values may change due to other factors, such as services operating on DataObjects. - */ - - virtual bool SDO_API isReadOnly() const = 0; - - /** getOpposite returns the opposite property or zero. - * - * NOT IMPLEMENTED - */ - - virtual SDO_API const Property* getOpposite() const = 0; - - /** isDefaulted is true if a default has been set. - * - * A property value may be set or unset. If unset, requests to the - * data object for the value will return a default if there is one. - * If the property is not defaulted, an un specified value will be - * returned. (Thism value will probably be zero). - */ - - virtual SDO_API bool isDefaulted() const = 0 ; - - /** setDefault sets the right sort of default. - * - * The many overrides of this method allow the setting - * of a default value for any DataType property. - */ - - virtual SDO_API void setDefault(bool b ) = 0; - virtual SDO_API void setDefault(char c) = 0; - virtual SDO_API void setDefault(wchar_t c) = 0; - virtual SDO_API void setDefault(char* c) = 0; - virtual SDO_API void setDefault(const SDOString& c) = 0; - virtual SDO_API void setDefault(short s) = 0; -#if __WORDSIZE !=64 - virtual SDO_API void setDefault(long l) = 0; -#endif - virtual SDO_API void setDefault(int64_t i) = 0; - virtual SDO_API void setDefault(float f) = 0; - virtual SDO_API void setDefault(long double d) = 0; - virtual SDO_API void setDefault(const SDODate d) = 0; - virtual SDO_API void setDefault(const wchar_t* c, unsigned int len) = 0; - virtual SDO_API void setDefault(const char* c, unsigned int len) = 0; - virtual SDO_API void setDefault(const SDOString& c, unsigned int len) = 0; - - /** getDefault gets the right sort of default. - * - * The many overrides of this method allow the getting - * of a default value for any DataType property. - */ - - virtual SDO_API unsigned int getStringDefault(wchar_t* val, unsigned int max) const = 0; - virtual SDO_API unsigned int getBytesDefault(char* val, unsigned int max) const = 0; - virtual SDO_API unsigned int getBytesDefault(SDOString& val, unsigned int max) const = 0; - virtual SDO_API bool getBooleanDefault() const = 0; - virtual SDO_API char getByteDefault() const = 0; - virtual SDO_API wchar_t getCharacterDefault() const = 0; - virtual SDO_API short getShortDefault() const = 0; - virtual SDO_API long getIntegerDefault() const = 0; - virtual SDO_API int64_t getLongDefault() const = 0; - virtual SDO_API float getFloatDefault() const = 0; - virtual SDO_API long double getDoubleDefault() const = 0; - virtual SDO_API const SDODate getDateDefault() const = 0; - virtual SDO_API const char* getCStringDefault() const = 0; - // TODO: Can't overload return types. - // virtual SDO_API const SDOString& getSDOStringDefault() const = 0; - virtual SDO_API unsigned int getDefaultLength() const = 0; - - -}; - - -}; -}; - -#endif //_PROPERTY_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinition.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinition.cpp deleted file mode 100644 index e83e66d656..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinition.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/PropertyDefinition.h" -#include "commonj/sdo/PropertyDefinitionImpl.h" - -namespace commonj -{ - namespace sdo - { - - PropertyDefinition::PropertyDefinition() - { - propertydefinition = new PropertyDefinitionImpl(); - } - - PropertyDefinition::~PropertyDefinition() - { - if (propertydefinition) delete propertydefinition; - } - - void PropertyDefinition::copy (const PropertyDefinition& pd) - { - if (propertydefinition != 0) delete propertydefinition; - propertydefinition = new PropertyDefinitionImpl(*(pd.propertydefinition)); - } - - PropertyDefinition::PropertyDefinition(const PropertyDefinition& pd) - { - copy(pd); - } - - PropertyDefinition& PropertyDefinition::operator=(const PropertyDefinition& pd) - { - if (this != &pd) - { - copy(pd); - } - return *this; - } - - PropertyDefinitionImpl* PropertyDefinition::getPropertyDefinition() - { - return propertydefinition; - } - - // where this property is to be substituted for another - void PropertyDefinition::setSubstituteName(const char * name) - { - propertydefinition->substituteName = name; - } - - const char* PropertyDefinition::getSubstituteName() const - { - return (const char *)propertydefinition->substituteName; - } - - - void PropertyDefinition::setSubstituteUri(const char* name) - { - propertydefinition->substituteUri = name; - } - - const char* PropertyDefinition::getSubstituteUri() const - { - return (const char*)propertydefinition->substituteUri; - } - - // where there are substitute names for this property. - void PropertyDefinition::addSubstitute(const char* name, - const char* localname) - { - propertydefinition->substituteNames.push_back(name); - propertydefinition->substituteLocalNames.push_back(localname); - } - - int PropertyDefinition::getSubstituteCount() const - { - return propertydefinition->substituteNames.size(); - } - - const char* PropertyDefinition::getSubstituteNames(int index) const - { - if (index >= 0 && index < propertydefinition->substituteNames.size()) - { - return propertydefinition->substituteNames[index];; - } - return 0; - } - - const char* PropertyDefinition::getSubstituteLocalNames(int index) const - { - if (index >= 0 && index < propertydefinition->substituteLocalNames.size()) - { - return propertydefinition->substituteLocalNames[index];; - } - return 0; - } - - - void PropertyDefinition::setAliases(const char* aliases) - { - propertydefinition->aliases = aliases; - } - - const char* PropertyDefinition::getAliases() const - { - return (const char *)propertydefinition->aliases; - } - - void PropertyDefinition::setName(const char* name) - { - propertydefinition->name = name; - } - - const char* PropertyDefinition::getName() const - { - return (const char *)propertydefinition->name; - } - - void PropertyDefinition::setLocalName(const char* name) - { - propertydefinition->localname = name; - } - - const char* PropertyDefinition::getLocalName() const - { - return (const char*)propertydefinition->localname; - } - - void PropertyDefinition::setType(const char* uri, const char* name) - { - propertydefinition->typeUri = uri; - propertydefinition->typeName = name; - propertydefinition->fullTypeName = uri; - propertydefinition->fullTypeName += "#"; - propertydefinition->fullTypeName += name; - } - - const char * PropertyDefinition::getTypeName() const - { - return propertydefinition->typeName; - } - - const char * PropertyDefinition::getTypeUri() const - { - return propertydefinition->typeUri; - } - - const char * PropertyDefinition::getTypeFullName() const - { - return propertydefinition->fullTypeName; - } - - const char * PropertyDefinition::getTypeFullLocalName() const - { - return propertydefinition->fullLocalTypeName; - } - - void PropertyDefinition::setTypeFullLocalName(const char* name) - { - propertydefinition->fullLocalTypeName = name; - } - - - void PropertyDefinition::setDefaultValue(const char* value) - { - propertydefinition->defaultValue = value; - } - - const char* PropertyDefinition::getDefaultValue() const - { - return propertydefinition->defaultValue; - } - - bool PropertyDefinition::getIsMany() const - { - return propertydefinition->isMany; - } - - bool PropertyDefinition::getIsContainment() const - { - return propertydefinition->isContainment; - } - - bool PropertyDefinition::getIsReadOnly() const - { - return propertydefinition->isReadOnly; - } - - bool PropertyDefinition::getIsID() const - { - return propertydefinition->isID; - } - - bool PropertyDefinition::getIsIDREF() const - { - return propertydefinition->isIDREF; - } - - bool PropertyDefinition::getIsReference() const - { - return propertydefinition->isReference; - } - - bool PropertyDefinition::getIsElement() const - { - return propertydefinition->isElement; - } - - bool PropertyDefinition::getIsQName() const - { - return propertydefinition->isQName; - } - - bool PropertyDefinition::getIsSubstitute() const - { - return propertydefinition->isSubstitute; - } - - - void PropertyDefinition::setIsMany(bool value) - { - propertydefinition->isMany = value; - } - - void PropertyDefinition::setIsContainment(bool value) - { - propertydefinition->isContainment = value; - } - - void PropertyDefinition::setIsReadOnly(bool value) - { - propertydefinition->isReadOnly = value; - } - - void PropertyDefinition::setIsID(bool value) - { - propertydefinition->isID = value; - } - - void PropertyDefinition::setIsIDREF(bool value) - { - propertydefinition->isIDREF = value; - } - - void PropertyDefinition::setIsReference(bool value) - { - propertydefinition->isReference = value; - } - - void PropertyDefinition::setIsElement(bool value) - { - propertydefinition->isElement = value; - } - - void PropertyDefinition::setIsQName(bool value) - { - propertydefinition->isQName = value; - } - - void PropertyDefinition::setIsSubstitute(bool value) - { - propertydefinition->isSubstitute = value; - } - - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinition.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinition.h deleted file mode 100644 index cb6df88d5f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinition.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _PROPERTYDefinition_H_ -#define _PROPERTYDefinition_H_ - -#include "export.h" - -#include <vector> - - - -namespace commonj -{ - namespace sdo - { - - class PropertyDefinitionImpl; - -/** - * PropertyDefinitionImpl holds a property as defined by an XSD. - * The XSD holds more information than does the SDO Property. - * This class holds the extra information found as the XSD is - * parsed. - */ - class SDO_API PropertyDefinition - { - - public: - - - /*SDO_API*/ PropertyDefinition(); - PropertyDefinition(const PropertyDefinition& pd); - PropertyDefinition& operator=(const PropertyDefinition& pd); - - /*SDO_API*/ virtual ~PropertyDefinition(); - - PropertyDefinitionImpl* getPropertyDefinition(); - - - - // where this property is to be substituted for another - /*SDO_API*/ void setSubstituteName(const char * name); - /*SDO_API*/ const char* getSubstituteName() const; - - /*SDO_API*/ void setSubstituteUri(const char* name); - /*SDO_API*/ const char* getSubstituteUri() const; - - // where there are substitute names for this property. - /*SDO_API*/ void addSubstitute(const char* name, - const char* localname); - /*SDO_API*/ int getSubstituteCount() const; - /*SDO_API*/ const char* getSubstituteNames(int index) const; - /*SDO_API*/ const char* getSubstituteLocalNames(int index) const; - - - /*SDO_API*/ void setAliases(const char* aliases); - /*SDO_API*/ const char* getAliases() const; - - /*SDO_API*/ void setName(const char* name); - /*SDO_API*/ const char* getName() const; - - /*SDO_API*/ void setLocalName(const char* name); - /*SDO_API*/ const char* getLocalName() const; - - /*SDO_API*/ void setType(const char* uri, const char* name); - /*SDO_API*/ const char * getTypeName() const; - /*SDO_API*/ const char * getTypeUri() const; - /*SDO_API*/ const char * getTypeFullName() const; - /*SDO_API*/ const char * getTypeFullLocalName() const ; - - /*SDO_API*/ void setTypeFullLocalName(const char* name); - - /*SDO_API*/ void setDefaultValue(const char* value); - /*SDO_API*/ const char* getDefaultValue() const; - - /*SDO_API*/ bool getIsMany() const; - /*SDO_API*/ bool getIsContainment() const; - /*SDO_API*/ bool getIsReadOnly() const; - /*SDO_API*/ bool getIsID() const; - /*SDO_API*/ bool getIsIDREF() const; - /*SDO_API*/ bool getIsReference() const; - /*SDO_API*/ bool getIsElement() const; - /*SDO_API*/ bool getIsQName() const; - /*SDO_API*/ bool getIsSubstitute() const; - - /*SDO_API*/ void setIsMany(bool value); - /*SDO_API*/ void setIsContainment(bool value); - /*SDO_API*/ void setIsReadOnly(bool value); - /*SDO_API*/ void setIsID(bool value); - /*SDO_API*/ void setIsIDREF(bool value); - /*SDO_API*/ void setIsReference(bool value); - /*SDO_API*/ void setIsElement(bool value); - /*SDO_API*/ void setIsQName(bool value); - /*SDO_API*/ void setIsSubstitute(bool value); - - - private: - PropertyDefinitionImpl* propertydefinition; - void copy(const PropertyDefinition& pd); - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_PROPERTYDefinitionImpl_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinitionImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinitionImpl.cpp deleted file mode 100644 index 39b0766b84..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinitionImpl.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#include "commonj/sdo/PropertyDefinitionImpl.h" -namespace commonj -{ - namespace sdo - { - PropertyDefinitionImpl::PropertyDefinitionImpl() - : isMany(false), - isContainment(true), - isReadOnly(false), - isElement(false), - isReference(false), - isQName(false), - isID(false), - isIDREF(false), - isSubstitute(false) - - { - } - - PropertyDefinitionImpl::~PropertyDefinitionImpl() - { - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinitionImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinitionImpl.h deleted file mode 100644 index fc0e69a496..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyDefinitionImpl.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#ifndef _PROPERTYDefinitionImpl_H_ -#define _PROPERTYDefinitionImpl_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXMLString.h" -#include <vector> - - - -namespace commonj -{ - namespace sdo - { - - -/** - * PropertyDefinitionImpl holds a property as defined by an XSD. - * The XSD holds more information than does the SDO Property. - * This class holds the extra information found as the XSD is - * parsed. - */ - class PropertyDefinitionImpl - { - - public: - PropertyDefinitionImpl(); - virtual ~PropertyDefinitionImpl(); - - // where this property is to be substituted for another - SDOXMLString substituteName; - SDOXMLString substituteUri; - - // where there are substitute names for this property. - std::vector<SDOXMLString> substituteNames; - std::vector<SDOXMLString> substituteLocalNames; - - SDOXMLString aliases; - - SDOXMLString name; - SDOXMLString localname; - - SDOXMLString typeUri; - SDOXMLString typeName; - SDOXMLString fullTypeName; - - SDOXMLString fullLocalTypeName; - - SDOXMLString defaultValue; - - bool isMany; - bool isContainment; - bool isReadOnly; - - bool isID; - bool isIDREF; - bool isReference; - bool isElement; - - bool isQName; - - bool isSubstitute; - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_PROPERTYDefinitionImpl_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyImpl.cpp deleted file mode 100644 index ff32f0c33d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyImpl.cpp +++ /dev/null @@ -1,581 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 12:33:33 $ */ - -#include <iostream> -using namespace std; - -#ifndef SDO_EXPORTS -#define SDO_EXPORTS -#endif -#include "commonj/sdo/export.h" - - -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/TypeList.h" - -#include "commonj/sdo/Type.h" -#include "commonj/sdo/TypeImpl.h" -#include "commonj/sdo/Property.h" -#include "commonj/sdo/PropertyImpl.h" -#include "commonj/sdo/DataFactoryImpl.h" -#include "commonj/sdo/SDORuntimeException.h" - -namespace commonj{ - namespace sdo{ - - - Substitution::Substitution() : name(), type(0) - { - } - - // Standard Constructor - Substitution::Substitution(DataFactoryPtr mdg, - const SDOString& inname, - const Type& intype) : name(inname) - { - DataFactory* f = (DataFactory*)mdg; - - type = ((DataFactoryImpl*)f)->findType(intype.getURI(),intype.getName()); - } - - // Copy constructor - Substitution::Substitution(const Substitution& s) : name(s.name), type(s.type) - { - } - - Substitution::~Substitution() - { - } - - - /////////////////////////////////////////////////////////////////////////// - // construction by DAS - /////////////////////////////////////////////////////////////////////////// - - PropertyImpl::PropertyImpl(const Type& cont, - const char* inname, - const TypeImpl& intype, - bool many , - bool ro , - bool contain) : containertype(cont), type (intype) - { - // name = new char[strlen(inname)+1]; - // strcpy(name,inname); - if (inname != 0) - { - name = inname; - } - else - { - name.erase(); - } - defvalue = 0; - defvaluelength = 0; - opposite = 0; - stringdef = 0; - bisMany = many; - bisReadOnly = ro; - bisContainer = contain; - bDefaulted=false; - if (contain == false && intype.isDataObjectType()) - { - bisReference = true; - } - else - { - bisReference = false; - } - } - - PropertyImpl::PropertyImpl(const Type& cont, - const SDOString& inname, - const TypeImpl& intype, - bool many, - bool ro, - bool contain) : - containertype(cont), - name(inname), - type(intype), - bisMany(many), - bisReadOnly(ro), - bisContainer(contain), - bDefaulted(false), - opposite(0), - stringdef(0), - defvalue(0), - defvaluelength(0) - { - if (contain == false && intype.isDataObjectType()) - { - bisReference = true; - } - else - { - bisReference = false; - } - } - - PropertyImpl::PropertyImpl(const PropertyImpl& p) : - type((*(p.getTypeImpl()))), - containertype(p.getContainingType()), - name(p.name), - bisMany(p.bisMany), - bisReadOnly(p.bisReadOnly), - bisContainer(p.bisContainer), - bDefaulted(false), - opposite(0), - defvalue(0), - defvaluelength(0), - stringdef(0) - { - if (bisContainer == false && type.isDataObjectType()) - { - bisReference = true; - } - else - { - bisReference = false; - } - } - - PropertyImpl::~PropertyImpl() - { - if (defvalue != 0) delete (char*)defvalue; - if (stringdef != 0) delete stringdef; - } - - /////////////////////////////////////////////////////////////////////////// - // Setting of attributes by DAS - /////////////////////////////////////////////////////////////////////////// - - void PropertyImpl::setMany(bool many) - { - bisMany = many; - } - - void PropertyImpl::setReadOnly(bool readonly) - { - bisReadOnly = readonly; - } - - void PropertyImpl::setContainment(bool contains) - { - if (contains == true && type.isDataType()) - { - return; - } - bisContainer = contains; - if (bisContainer == false && type.isDataObjectType()) - { - bisReference = true; - } - else - { - bisReference = false; - } - } - - - /////////////////////////////////////////////////////////////////////////// - // Setting of defaults by DAS - /////////////////////////////////////////////////////////////////////////// - - void PropertyImpl::setDefault(bool b ) - { - setDefaultBoolean(b); - } - - void PropertyImpl::setDefault(char c ) - { - setDefaultByte(c); - } - - void PropertyImpl::setDefault(wchar_t c ) - { - setDefaultCharacter(c); - } - void PropertyImpl::setDefault(char* c ) - { - setDefaultCString(c); - } - void PropertyImpl::setDefault(const SDOString& c) - { - setDefaultCString(c); - } - void PropertyImpl::setDefault(short s ) - { - setDefaultShort(s); - } -#if __WORDSIZE !=64 - void PropertyImpl::setDefault(long i ) - { - setDefaultInteger(i); - } -#endif - void PropertyImpl::setDefault(int64_t i ) - { - setDefaultLong(i); - } - void PropertyImpl::setDefault(float f ) - { - setDefaultFloat(f); - } - void PropertyImpl::setDefault(long double d ) - { - setDefaultDouble(d); - } - void PropertyImpl::setDefault(const SDODate d ) - { - setDefaultDate(d); - } - void PropertyImpl::setDefault(const char* c , unsigned int len) - { - setDefaultBytes(c, len); - } - void PropertyImpl::setDefault(const SDOString& c , unsigned int len) - { - setDefaultBytes(c, len); - } - - void PropertyImpl::setDefault(const wchar_t* c, unsigned int len ) - { - setDefaultString(c, len); - } - - /////////////////////////////////////////////////////////////////////////// - // Substitution groups. - /////////////////////////////////////////////////////////////////////////// - const Type* PropertyImpl::getSubstitutionType(const char* inname) const - { - for (int i=0;i<substitutions.size();i++) - { - if (!strcmp(inname, substitutions[i].name.c_str())) - { - return substitutions[i].type; - } - } - return 0; - } - - const char * PropertyImpl::getSubstitutionName(unsigned int index) const - { - if (index < getSubstitutionCount()) - { - return (substitutions[index].name.c_str()); - } - SDO_THROW_EXCEPTION("getSubstitutionName", SDOIndexOutOfRangeException, - "index out of range"); - } - - unsigned int PropertyImpl::getSubstitutionCount(void) const - { - return substitutions.size(); - } - - const Type* PropertyImpl::getSubstitutionType(unsigned int index) const - { - if (index < getSubstitutionCount()) - { - return (substitutions[index].type); - } - return 0; - } - - void PropertyImpl::setSubstitution(DataFactoryPtr mdg, const char* alias, - const Type& substype) - { - substitutions.push_back(Substitution(mdg,alias,substype)); - } - - - /////////////////////////////////////////////////////////////////////////// - // Returns the name of the property. - /////////////////////////////////////////////////////////////////////////// - const char* PropertyImpl::getName() const - { - return name.c_str(); - } - -// const SDOString& PropertyImpl::getName() const -// { -// return name; -// } - - void PropertyImpl::setAlias(const char* alias) - { - char* tmp = new char[strlen(alias)+1]; - strcpy(tmp,alias); - aliases.push_back(tmp); - } - - void PropertyImpl::setAlias(const SDOString& alias) - { - aliases.push_back(alias); - } - - const char* PropertyImpl::getAlias(unsigned int index) const - { - if (index < aliases.size()) - { - return aliases[index].c_str(); - } - return name.c_str(); - } - - unsigned int PropertyImpl::getAliasCount() const - { - return aliases.size(); - } - - - /////////////////////////////////////////////////////////////////////////// - // Returns the type of the property. - /////////////////////////////////////////////////////////////////////////// - const Type& PropertyImpl::getType() const - { - return (Type&)type; - } - - const Type::Types PropertyImpl::getTypeEnum() const - { - return type.getTypeEnum(); - } - - /////////////////////////////////////////////////////////////////////////// - // Returns the type of the property. - /////////////////////////////////////////////////////////////////////////// - const TypeImpl* PropertyImpl::getTypeImpl() const - { - return &type; - } - - /////////////////////////////////////////////////////////////////////////// - // Returns whether the property is many-valued. - /////////////////////////////////////////////////////////////////////////// - bool PropertyImpl::isMany() const - { - if(getTypeImpl()->isFromList())return true; - return bisMany; - } - - /////////////////////////////////////////////////////////////////////////// - // Returns whether the property is containment. - /////////////////////////////////////////////////////////////////////////// - bool PropertyImpl::isContainment() const - { - return bisContainer; - } - - /////////////////////////////////////////////////////////////////////////// - // Returns whether the property is containment. - /////////////////////////////////////////////////////////////////////////// - bool PropertyImpl::isReference() const - { - return bisReference; - } - - /////////////////////////////////////////////////////////////////////////// - // Returns the containing type of this property. - /////////////////////////////////////////////////////////////////////////// - const Type& PropertyImpl::getContainingType() const - { - return containertype; - } - - /////////////////////////////////////////////////////////////////////////// - // Returns the opposite. - /////////////////////////////////////////////////////////////////////////// - const Property* PropertyImpl::getOpposite() const - { - return opposite; - } - - void PropertyImpl::setOpposite(const Property* opp) - { - opposite = opp; - } - /////////////////////////////////////////////////////////////////////////// - // Returns the default value this property will have in a - // data object where the property hasn't been set. - /////////////////////////////////////////////////////////////////////////// - - // check whether the property has a default first - bool PropertyImpl::isDefaulted() const - { - return bDefaulted; - } - - const char* PropertyImpl::getCStringDefault() const - { - PropertyImpl* p = (PropertyImpl*)this; - return getTypeImpl()->convertToCString(defvalue, &(p->stringdef), defvaluelength); - } - bool PropertyImpl::getBooleanDefault() const - { - return getTypeImpl()->convertToBoolean(defvalue,defvaluelength); - } - char PropertyImpl::getByteDefault() const - { - return getTypeImpl()->convertToByte(defvalue,defvaluelength); - } - wchar_t PropertyImpl::getCharacterDefault() const - { - return getTypeImpl()->convertToCharacter(defvalue,defvaluelength); - } - short PropertyImpl::getShortDefault() const - { - return getTypeImpl()->convertToShort(defvalue,defvaluelength); - } - long PropertyImpl::getIntegerDefault() const - { - return getTypeImpl()->convertToInteger(defvalue,defvaluelength); - } - int64_t PropertyImpl::getLongDefault() const - { - return getTypeImpl()->convertToLong(defvalue,defvaluelength); - } - float PropertyImpl::getFloatDefault() const - { - return getTypeImpl()->convertToFloat(defvalue,defvaluelength); - } - long double PropertyImpl::getDoubleDefault() const - { - return getTypeImpl()->convertToDouble(defvalue,defvaluelength); - } - const SDODate PropertyImpl::getDateDefault() const - { - return getTypeImpl()->convertToDate(defvalue,defvaluelength); - } - unsigned int PropertyImpl::getStringDefault(wchar_t* val, unsigned int max) const - { - if (val == 0 || max == 0) return defvaluelength; - return getTypeImpl()->convertToString(defvalue, val, defvaluelength, max); - - } - unsigned int PropertyImpl::getBytesDefault(char* val, unsigned int max) const - { - if (val == 0 || max == 0) return defvaluelength; - return getTypeImpl()->convertToBytes(defvalue, val, defvaluelength, max); - } - - unsigned int PropertyImpl::getBytesDefault(SDOString& val, unsigned int max) const - { - if (max == 0) return defvaluelength; - return getTypeImpl()->convertToBytes(defvalue, val, defvaluelength, max); - } - - unsigned int PropertyImpl::getDefaultLength() const - { - return defvaluelength; - } - - /////////////////////////////////////////////////////////////////////////// - // sets the default value by type - /////////////////////////////////////////////////////////////////////////// - - void PropertyImpl::setDefaultCString(const char* s) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,s); - } - void PropertyImpl::setDefaultCString(const SDOString& s) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue, s); - } - void PropertyImpl::setDefaultString( const wchar_t* c , unsigned int len ) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,c, len); - } - void PropertyImpl::setDefaultBytes( const char* c , unsigned int len ) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,c, len); - } - void PropertyImpl::setDefaultBytes(const SDOString& c , unsigned int len) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,c, len); - } - void PropertyImpl::setDefaultBoolean( const bool b ) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,b); - } - void PropertyImpl::setDefaultByte( const char c ) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,c); - } - void PropertyImpl::setDefaultCharacter( const wchar_t c) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,c); - } - void PropertyImpl::setDefaultShort( const short s ) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,s); - } - void PropertyImpl::setDefaultInteger( const long i ) - { - bDefaulted=true; -#if __WORDSIZE ==64 - defvaluelength = getTypeImpl()->convert(&defvalue,(int64_t)i); -#else - defvaluelength = getTypeImpl()->convert(&defvalue,i); -#endif - } - void PropertyImpl::setDefaultLong(const int64_t l) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,l); - } - void PropertyImpl::setDefaultFloat( const float f ) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,f); - } - void PropertyImpl::setDefaultDouble( const long double d ) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convert(&defvalue,d); - } - void PropertyImpl::setDefaultDate( const SDODate d ) - { - bDefaulted=true; - defvaluelength = getTypeImpl()->convertDate(&defvalue,d); - } - - /////////////////////////////////////////////////////////////////////////// - // Returns true if values for this Property cannot be modified using the SDO APIs. - // When true, DataObject.set(Property property, Object value) throws an exception. - // Values may change due to other factors, such as services operating on DataObjects. - /////////////////////////////////////////////////////////////////////////// - bool PropertyImpl::isReadOnly() const - { - return bisReadOnly; - } - -}; -}; - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyImpl.h deleted file mode 100644 index 3b0838db2c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyImpl.h +++ /dev/null @@ -1,291 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/06 12:58:18 $ */ - -#ifndef _PROPERTYIMPL_H_ -#define _PROPERTYIMPL_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/DASProperty.h" -#include "commonj/sdo/SDODate.h" -#include "commonj/sdo/DataFactory.h" - -namespace commonj{ -namespace sdo{ - -class Type; -class TypeImpl; -class DataObject; - -/** - * A substitution is a class which permits a property to be a substitute for - * another one. - * A substitution is a definition of a type which is allowed to be placed in the - * data object in place of a property of another type. - */ - -class Substitution -{ -public: - Substitution(); - Substitution(DataFactoryPtr mdg, const SDOString& inname, - const Type& intype); - Substitution(const Substitution& s); - virtual ~Substitution(); - const Type* type; - SDOString name; -}; - - - -/** PropertyImpl implements the abstract class Property. - * - * A representation of a property in the type of a data object. - */ - -class PropertyImpl :public DASProperty -{ - public: - - - /////////////////////////////////////////////////////////////////////////// - // Construction for the DAS - /////////////////////////////////////////////////////////////////////////// - - SDO_API PropertyImpl( - const Type& cont, - const char* name, - const TypeImpl& type, - bool many = false, - bool ro = false, - bool contain = false); - - SDO_API PropertyImpl(const Type& cont, - const SDOString& name, - const TypeImpl& type, - bool many = false, - bool ro = false, - bool contain = false); - - - - virtual SDO_API ~PropertyImpl(); - - /** - * A Data access service may set the features of this property instead of - * passing them as construction parameters. - */ - - virtual SDO_API void setMany(bool many ); - - /** - * A Data access service may set the features of this property instead of - * passing them as construction parameters. - */ - virtual SDO_API void setReadOnly(bool rdonly); - - /** - * A Data access service may set the features of this property instead of - * passing them as construction parameters. - */ - virtual SDO_API void setContainment(bool contains); - - /** - * A Data access service may set the features of this property instead of - * passing them as construction parameters. - */ - - virtual SDO_API bool isDefaulted() const; - - /** - * A Data access service sets the default value. - */ - - virtual SDO_API void setDefault(bool b ); - virtual SDO_API void setDefault(char c); - virtual SDO_API void setDefault(wchar_t c); - virtual SDO_API void setDefault(char* c); - virtual SDO_API void setDefault(const SDOString& c); - virtual SDO_API void setDefault(short s); -#if __WORDSIZE !=64 - virtual SDO_API void setDefault(long l); -#endif - virtual SDO_API void setDefault(int64_t i); - virtual SDO_API void setDefault(float f); - virtual SDO_API void setDefault(long double d); - virtual SDO_API void setDefault(const SDODate d); - virtual SDO_API void setDefault(const wchar_t* c, unsigned int len); - virtual SDO_API void setDefault(const char* c, unsigned int len); - virtual SDO_API void setDefault(const SDOString& c, unsigned int len); - - - - - - /** - * Returns the name of the property. - */ - - virtual const SDO_API char* getName() const; - - /** getAlias returns the n'th alias - * - * This method returns a const char* corresponding to the - * alias at index n of the list of aliases. Use getAliasCount to - * discover the size of the list. - */ - - virtual const char* getAlias(unsigned int index = 0) const ; - virtual unsigned int getAliasCount() const ; - virtual void setAlias(const char* alias) ; - virtual void setAlias(const SDOString& alias) ; - - /** - * - * SubstitutionGroup support. - */ - - virtual const Type* getSubstitutionType(const char* name) const ; - virtual unsigned int getSubstitutionCount(void) const ; - virtual const Type* getSubstitutionType(unsigned int index) const ; - virtual const char* getSubstitutionName(unsigned int index) const ; - virtual void setSubstitution(DataFactoryPtr mdg, const char* alias, - const Type& substype) ; - - - /** getType returns the type of this property - * - * This method returns the type, which may be a DataType or a - * DataObjectType - */ - - virtual SDO_API const Type& getType() const; - - virtual SDO_API const Type::Types getTypeEnum() const; - - virtual SDO_API const TypeImpl* getTypeImpl() const; - - /** - * Returns whether the property is many-valued. - */ - virtual bool SDO_API isMany() const; - - /** - * Returns whether the property is containment. - */ - virtual bool SDO_API isContainment() const; - - /** - * Returns whether the property is a reference. - */ - virtual bool SDO_API isReference() const; - - /** - * Returns the containing type of this property. - */ - virtual SDO_API const Type& getContainingType() const; - - /** - * returns the opposite property, or zero if there is none - */ - virtual SDO_API const Property* getOpposite() const; - - virtual void setOpposite(const Property* opp); - - - /** - * setters for type primitive types and 'an object' - */ - - SDO_API void setDefaultCString( const char* s); - SDO_API void setDefaultCString(const SDOString& s); - SDO_API void setDefaultString( const wchar_t* c , unsigned int len ); - SDO_API void setDefaultBytes( const char* c , unsigned int len ); - SDO_API void setDefaultBytes(const SDOString& c , unsigned int len); - SDO_API void setDefaultBoolean( const bool b ); - SDO_API void setDefaultByte( const char c ); - SDO_API void setDefaultCharacter( const wchar_t c); - SDO_API void setDefaultShort( const short s ); - SDO_API void setDefaultInteger( const long i ); - SDO_API void setDefaultLong(const int64_t l); - SDO_API void setDefaultFloat( const float f ); - SDO_API void setDefaultDouble( const long double d ); - SDO_API void setDefaultDate( const SDODate d ); - - SDO_API const char* getCStringDefault() const; - SDO_API unsigned int getStringDefault(wchar_t* val, unsigned int max) const; - SDO_API unsigned int getBytesDefault(char* val, unsigned int max) const; - SDO_API unsigned int getBytesDefault(SDOString& val, unsigned int max) const; - SDO_API bool getBooleanDefault() const; - SDO_API char getByteDefault() const; - SDO_API wchar_t getCharacterDefault() const; - SDO_API short getShortDefault() const; - SDO_API long getIntegerDefault() const; - SDO_API int64_t getLongDefault() const; - SDO_API float getFloatDefault() const; - SDO_API long double getDoubleDefault() const; - SDO_API const SDODate getDateDefault() const; - SDO_API unsigned int getDefaultLength() const; - - /** - * Returns true if values for this Property cannot be modified using the SDO APIs. - * When true, DataObject.set(Property property, Object value) throws an exception. - * Values may change due to other factors, such as services operating on DataObjects. - */ - virtual bool SDO_API isReadOnly() const; - - SDO_API PropertyImpl(const PropertyImpl& p); - - private: - - // clear the default value - void deleteValue(); - - bool bisReadOnly; - bool bisContainer; - bool bisReference; - bool bisMany; - - bool bDefaulted; - - const TypeImpl& type; - const Type& containertype; - const Property* opposite; - SDOString name; - char* stringdef; - - void* defvalue; - // in the event of a bytes and string, this holds the length - unsigned int defvaluelength; - - // alias support - // std::vector<char*> aliases; - std::vector<SDOString> aliases; - - std::vector<Substitution> substitutions; - - typedef std::list<PropertyImpl*> REFEREE_LIST; - REFEREE_LIST references; - - -}; -}; -}; - -#endif //_PROPERTYIMPL_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyList.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyList.cpp deleted file mode 100644 index 5da678f10b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyList.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef SDO_EXPORTS - #define SDO_EXPORTS -#endif - -#include "commonj/sdo/export.h" -#include <iostream> -#include "commonj/sdo/Property.h" -#include "commonj/sdo/PropertyImpl.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/PropertyList.h" - -#include "commonj/sdo/Logger.h" - -namespace commonj{ -namespace sdo { - -class Property; - -SDO_API PropertyList::PropertyList(PROPERTY_LIST p) -{ - PROPERTY_LIST::iterator i; - for (i = p.begin(); i != p.end(); ++i) - { - plist.insert(plist.end(),(PropertyImpl*)(*i)); - } -} - -SDO_API PropertyList::PropertyList(PROPERTY_VECTOR p) -{ - plist = PROPERTY_VECTOR(p); -} - -SDO_API PropertyList::PropertyList(const PropertyList &pin) -{ - plist = PROPERTY_VECTOR(pin.getVec()); -} - -SDO_API PropertyList::PropertyList() -{ -} - -SDO_API PropertyList::~PropertyList() -{ -} - -SDO_API Property& PropertyList::operator[] (int pos) -{ - return *(plist[pos]); -} - -SDO_API const Property& PropertyList::operator[] (int pos) const -{ - return *(plist[pos]); -} - -SDO_API int PropertyList::size () -{ - return plist.size(); -} - -SDO_API void PropertyList::insert(const Property& p) -{ - PropertyImpl* pi = (PropertyImpl*)&p; - plist.insert(plist.end(),new PropertyImpl(*pi)); -} - -PROPERTY_VECTOR PropertyList::getVec() const -{ - return plist; -} - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyList.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyList.h deleted file mode 100644 index 61146f18db..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertyList.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _PROPERTYLIST_H_ -#define _PROPERTYLIST_H_ - - -#include "commonj/sdo/export.h" - -#include <vector> -#include <list> - - - - -namespace commonj{ -namespace sdo{ - - class PropertyImpl; - class Property; - typedef std::vector<PropertyImpl*> PROPERTY_VECTOR; -#ifndef PROPERTY_LIST - typedef std::list<PropertyImpl*> PROPERTY_LIST; -#endif - -/** - * This class provides for iteration over a collection of Properties - */ - -class PropertyList -{ -private: - PROPERTY_VECTOR plist; - PROPERTY_VECTOR getVec() const; -public: - SDO_API PropertyList(PROPERTY_VECTOR p); - SDO_API PropertyList(PROPERTY_LIST p); - SDO_API PropertyList(const PropertyList &pin); - SDO_API PropertyList(); - virtual SDO_API ~PropertyList(); - - /** [] - * - * Operator to allow reference to an element of the list. - * There are separate versions for const and variable lists - */ - - SDO_API Property& operator[] (int pos); - SDO_API const Property& operator[] (int pos) const; - - /** size gives the number of elements. - * - * size() returns the number of elements in the list. - */ - - SDO_API int size (); - - /** insert adds an element to the list - * - * insert appends an item to the list. This is not - * of any use to a client application, as these lists - * are always supplied by the library, and are const. - */ - - SDO_API void insert (const Property& p); -}; -}; -}; - - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertySetting.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertySetting.cpp deleted file mode 100644 index 17ac9de09e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertySetting.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/PropertySetting.h" -namespace commonj -{ - namespace sdo - { - PropertySetting::PropertySetting() - : dataObject(NULL), isNULL(false), isIDREF(false), pendingUnknownType(false) - - { - } - - PropertySetting::PropertySetting(DataObjectPtr dataObj, const SDOXMLString& propertyName, - bool isNull, bool IDREF) - : dataObject(dataObj), name(propertyName), isNULL(isNull),isIDREF(IDREF),pendingUnknownType(false) - { - } - - PropertySetting::~PropertySetting() - { - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertySetting.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertySetting.h deleted file mode 100644 index 4a87e1bc9e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/PropertySetting.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _PROPERTYSETTING_H_ -#define _PROPERTYSETTING_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/DataObject.h" - - -namespace commonj -{ - namespace sdo - { - -/** - * PropertySetting holds some information about properties as - * they are read by the parser, for subsequent creation - */ - class PropertySetting - { - - public: - PropertySetting(); - PropertySetting(DataObjectPtr dataObj, - const SDOXMLString& propertyName, - bool isNull=false, - bool isIDREF=false); - virtual ~PropertySetting(); - - SDOXMLString name; - SDOXMLString value; - DataObjectPtr dataObject; - bool isIDREF; - bool isNULL; - bool pendingUnknownType; - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_PROPERTYSETTING_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingObject.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingObject.cpp deleted file mode 100644 index e763ad5a9a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingObject.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/RefCountingObject.h" -#include "commonj/sdo/Logging.h" - -#include <iostream> -using namespace std; - -namespace commonj{ -namespace sdo{ - -long RefCountingObject::allObs = 0; - -RefCountingObject::RefCountingObject() -: refCount(0) -{ - LOGINFO_2(HIGHVOLUME,"RCO:CREATE:%p Count:%ld",this, ++allObs); -} - -RefCountingObject::RefCountingObject(const RefCountingObject& rc) -: refCount(0) -{ - LOGINFO_2(HIGHVOLUME,"RCO:COPCON:%p Count:%ld",this,++allObs); -} - -RefCountingObject& RefCountingObject::operator=(const RefCountingObject& rc) -{ - return *this; -} - -RefCountingObject::~RefCountingObject() -{ - LOGINFO_2(HIGHVOLUME,"RCO:DELETE:%p Count:%ld",this, --allObs); - // - //if (allObs < 0) - // LOGINFO(HIGHVOLUME,"RCO:More objects deleted than created"); - //if (allObs == 0) - // LOGINFO(HIGHVOLUME,"RCO: All data objects deleted");; -} - -void RefCountingObject::addRef() - -{ - - ++refCount; - LOGINFO_2(HIGHVOLUME,"RCO:ADDREF:%p:%ld",this,refCount); -} - -void RefCountingObject::releaseRef() -{ - LOGINFO_2(HIGHVOLUME,"RCO:DECREF:%p:%ld",this,refCount-1); - if (--refCount == 0) delete this; -} - - -}; -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingObject.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingObject.h deleted file mode 100644 index 2d5724a8f5..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingObject.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _REFCOUNTINGOBJECT_H -#define _REFCOUNTINGOBJECT_H - - -#include "commonj/sdo/export.h" - - -namespace commonj { - namespace sdo { - -/** - * RefcountingObject is the base class for all objects in SDO - * These objects keep a count of references to themselves, then - * free themselves when they are unused. - */ - class RefCountingObject - { - public: - SDO_API RefCountingObject(); - SDO_API RefCountingObject(const RefCountingObject& rc); - SDO_API RefCountingObject& operator=(const RefCountingObject& rc); - SDO_API virtual ~RefCountingObject() = 0; -/** - * Add to the reference count - a new pointer has been created. - */ - SDO_API void addRef(); -/** - * Subtract from the the reference count - a reference has dropped. - */ - SDO_API void releaseRef(); - - private: - unsigned int refCount; - static long allObs; - }; - - }; -}; - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingPointer.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingPointer.cpp deleted file mode 100644 index a9dabd10b4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingPointer.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/DataGraph.h" -#include "commonj/sdo/ChangeSummary.h" -#include "commonj/sdo/XMLDocument.h" -#include "commonj/sdo/XSDHelper.h" -#include "commonj/sdo/XMLHelper.h" - -namespace commonj{ - namespace sdo{ - - // officially, there is nothing here- but if I dont use the overrides in - // the templates, then they dont get generated. - void Test () - { - -#if defined(WIN32) || defined (_WINDOWS) - /* 1) construct */ - DataFactoryPtr fptr = DataFactory::getDataFactory(); - - /* 2) use the & operator= */ - fptr = DataFactory::getDataFactory(); - - /* 3) copy */ - DataFactoryPtr fptr2 = fptr; - - /* 4) use the == and ! */ - if (fptr2 == fptr || !fptr){} - - /* 5) Use the T* and * */ - DataFactory* dmsf = fptr; - DataFactory& dmsr = *fptr; - - /* 1) construct */ - DataFactoryPtr dfptr(fptr); - - /* 3) copy */ - DataFactoryPtr dfptr2 = dfptr; - - /* 2) use the & operator= */ - dfptr = dfptr2; - - /* 4) use the == and ! */ - if (dfptr2 == dfptr || !dfptr){} - - /* 5) Use the T* and * */ - DataFactory* ddmsf = dfptr; - DataFactory& ddmsr = *dfptr; - - /* 6) Use the -> */ - DataObjectPtr dptr = dfptr->create("nothing","nowhere"); - - /* and agin to catch the = */ - dptr = fptr->create("nothing","nowhere"); - - DataObjectPtr dptr2 = dptr; - - /* Use the T* and * */ - DataObject* dof = dptr; - DataObject& dor = *dptr; - - if (dptr2 == dptr || !dptr){} - - - ChangeSummaryPtr cptr = dptr->getChangeSummary(); - cptr = dptr->getChangeSummary(); - ChangeSummaryPtr cptr2 = cptr; - - ChangeSummary* cof = cptr; - ChangeSummary& cop = *cptr; - - - if (cptr2 == cptr || !cptr){} - - cptr->endLogging(); - - SequencePtr sptr = dptr->getSequence(); - sptr = dptr->getSequence(); - SequencePtr sptr2 = sptr; - - Sequence* sof = sptr; - Sequence& sop = *sptr; - - - if (sptr2 == sptr || !sptr){} - - sptr->getBooleanValue(0); - - - // Generate code for XMLDocumentPtr - XMLDocumentPtr xmldocptr1 = 0; - XMLDocumentPtr xmldocptr2 = xmldocptr1; - xmldocptr1 = xmldocptr2; - if (xmldocptr2 == xmldocptr1 || !xmldocptr1){} - XMLDocument* xmldocp = xmldocptr1; - XMLDocument& xmldocref = *xmldocptr2; - xmldocptr1->getEncoding(); - - // Generate code for XSDHelperPtr - XSDHelperPtr xsdhptr1 = 0; - XSDHelperPtr xsdhptr2 = xsdhptr1; - xsdhptr1 = xsdhptr2; - if (xsdhptr2 == xsdhptr1 || !xsdhptr1){} - XSDHelper* xsdhp = xsdhptr1; - XSDHelper& xsdhref = *xsdhptr2; - xsdhptr1->define("dummy"); - - // Generate code for XMLHelperPtr - XMLHelperPtr xmlhptr1 = 0; - XMLHelperPtr xmlhptr2 = xmlhptr1; - xmlhptr1 = xmlhptr2; - if (xmlhptr2 == xmlhptr1 || !xmlhptr1){} - XMLHelper* xmlhp = xmlhptr1; - XMLHelper& xmlhref = *xmlhptr2; - xmlhptr1->load("dummy"); - - // Generate code for DataGraphPtr - DataGraphPtr dgptr1 = 0; - DataGraphPtr dgptr2 = dgptr1; - dgptr1 = dgptr2; - if (dgptr2 == dgptr1 || !dgptr1){} - DataGraph* dghp = dgptr1; - DataGraph& dgref = *dgptr2; - dgptr1->getRootObject(); - -#endif - - } - }; -}; - - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingPointer.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingPointer.h deleted file mode 100644 index 34d534d1c0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/RefCountingPointer.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _REFCOUNTINGPOINTER_H -#define _REFCOUNTINGPOINTER_H - - -#include "commonj/sdo/export.h" -#include "commonj/sdo/SDORuntimeException.h" - -#include <iostream> - -namespace commonj{ -namespace sdo{ - -/** - * RefcountingPointer is a template for all SDO pointers. - * The ref count increases with each use, and drops when one of these - * goes out of scope. - * Refcounting pointers are a lot like smart pointers, however in this - * implementation there is a cast method to a void*, so unlike real - * smart pointers, a user might call "delete mypointer", which would - * compile, but cause a crash. - * RefCountingPointers do not need to be deleted. - */ - -template <class T> -class RefCountingPointer { - public: - /*SDO_API*/ RefCountingPointer(T* realPtr = 0); - /*SDO_API*/ RefCountingPointer(const RefCountingPointer& rhs); - /*SDO_API*/ ~RefCountingPointer(); - /*SDO_API*/ RefCountingPointer& operator=(const RefCountingPointer& rhs); - /*SDO_API*/ bool operator==(RefCountingPointer& test) const; - /*SDO_API*/ T* operator->() const; - /*SDO_API*/ T& operator*() const; - /*SDO_API*/ bool operator!() const; - -#ifdef MFT - // MFT == member function templates - // Notes on the items below. - // In our code, we use subclasses to expose the API, and super - // classes to implement. E,g DataObject and DataObjectImpl. - // In some cases, we know that the DataObject given to us is a - // DataObjectImpl, and cast it. With RefCountingPointers, however, - // the cast cannot work, as the RefCountingPointer to the superclass - // is not related to the RCP to the subclass. Recent changes in the - // C++ language allow this to work by defining an operator which - // causes a pointer of the other type to be returned, as long as pointee - // is acceptable as a parameter to the cosntructor of the other type - // of pointer. This works in C++.NET, but not in C++6: - operator RefCountingPointer<otherType>() - { - return RefCountingPointer<otherType>(pointee); - } - - // Since we are using C6, a possible workround is to provide a method - // which returns the dumb pointer, then construct a pointer to the - // base class from the pointer returned. This is that the operator T* does. - // The code in DataObject could be simpler if we used C7,and we should - // discusss changing. -#else - operator T*() {return pointee;} -#endif - - template <class otherType> - operator RefCountingPointer<otherType>() - { - return RefCountingPointer<otherType>(pointee); - } - - private: - T *pointee; - void init(); -}; - - - -template<class T> -void RefCountingPointer<T>::init() -{ - if (pointee == 0) return; - pointee->addRef(); -} - -template<class T> -/*SDO_API*/ RefCountingPointer<T>::RefCountingPointer(T* realPtr) -:pointee(realPtr) -{ - init(); -} - -template<class T> -/*SDO_API*/ RefCountingPointer<T>::RefCountingPointer(const RefCountingPointer& rhs) -: pointee(rhs.pointee) -{ - init(); -} - -template<class T> -/*SDO_API*/ RefCountingPointer<T>::~RefCountingPointer() -{ - if (pointee)pointee->releaseRef(); -} - -template<class T> -/*SDO_API*/ RefCountingPointer<T>& RefCountingPointer<T>::operator=(const RefCountingPointer& rhs) -{ - if (pointee != rhs.pointee) - { - T *oldP = pointee; - pointee = rhs.pointee; - init(); - if (oldP) oldP->releaseRef(); - } - return *this; -} - -template<class T> -/*SDO_API*/ bool RefCountingPointer<T>::operator!() const -{ - return (pointee == 0); -} - -template<class T> -/*SDO_API*/ bool RefCountingPointer<T>::operator==(RefCountingPointer& test) const -{ - return (pointee == test.pointee); -} - -template<class T> -/*SDO_API*/ T* RefCountingPointer<T>::operator->() const -{ - if (pointee == 0) - SDO_THROW_EXCEPTION("Pointer",SDONullPointerException, ""); - return pointee; -} - -template<class T> -/*SDO_API*/ T& RefCountingPointer<T>::operator*() const -{ - return *pointee; -} - -class DataObject; -typedef RefCountingPointer<DataObject> DataObjectPtr; -class DataGraph; -typedef RefCountingPointer<DataGraph> DataGraphPtr; -class DataFactory; -typedef RefCountingPointer<DataFactory> DataFactoryPtr; -class Sequence; -typedef Sequence* SequencePtr; -class ChangeSummary; -typedef ChangeSummary* ChangeSummaryPtr; -class XMLDocument; -typedef RefCountingPointer<XMLDocument> XMLDocumentPtr; -class XSDHelper; -typedef RefCountingPointer<XSDHelper> XSDHelperPtr; -class XMLHelper; -typedef RefCountingPointer<XMLHelper> XMLHelperPtr; - -}; -}; - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attribute.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attribute.cpp deleted file mode 100644 index 921b13fe02..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attribute.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SAX2Attribute.h" - - -namespace commonj -{ - namespace sdo - { - -/** - * SAX2Attribute holds an attribute supplied by the SAX2 parser. - */ - SAX2Attribute::SAX2Attribute() - { - } - - SAX2Attribute::SAX2Attribute(const xmlChar **attribute) // localname/prefix/URI/value/end - { - name = attribute[0]; - prefix = attribute[1]; - uri = attribute[2]; - value = SDOXMLString(attribute[3],0, (int)(attribute[4] - attribute[3])); - } - - SAX2Attribute::~SAX2Attribute() - { - } - - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attribute.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attribute.h deleted file mode 100644 index a8657ab6ef..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attribute.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SAX2ATTRIBUTE_H_ -#define _SAX2ATTRIBUTE_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXMLString.h" - -namespace commonj -{ - namespace sdo - { - -/** - * SAX2Attribute holds an attribute supplied by the SAX2 parser. - */ - - class SAX2Attribute - { - - public: - - SAX2Attribute(); - SAX2Attribute(const xmlChar **attribute); - - virtual ~SAX2Attribute(); - - const SDOXMLString& getName() const {return name;} - const SDOXMLString& getPrefix() const {return prefix;} - const SDOXMLString& getUri() const {return uri;} - const SDOXMLString& getValue() const {return value;} - - - private: - SDOXMLString name; - SDOXMLString prefix; - SDOXMLString uri; - SDOXMLString value; - - - - }; - } // End - namespace sdo -} // End - namespace commonj - -#endif //_SAX2ATTRIBUTE_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attributes.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attributes.cpp deleted file mode 100644 index 145f91ed1d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attributes.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/07 13:35:33 $ */ - -#include "commonj/sdo/SAX2Attributes.h" - -namespace commonj -{ - namespace sdo - { - -/** - * SAX2Attributes holds a list of attributes supplied by the SAX2 parser. - */ - SAX2Attributes::SAX2Attributes( - int nb_attributes, - int nb_defaulted, - const xmlChar **attrs) // localname/prefix/URI/value/end - { - for (int i=0; i < nb_attributes*5; i+=5) - { - attributes.insert(attributes.end(), SAX2Attribute(&attrs[i])); - } - } - - SAX2Attributes::SAX2Attributes() - { - } - - SAX2Attributes::~SAX2Attributes() - { - } - - const SAX2Attribute& SAX2Attributes::operator[] (int pos) const - { - return attributes[pos]; - } - - int SAX2Attributes::size () const - { - return attributes.size(); - } - - - const SDOXMLString SAX2Attributes::nullValue; - - const SDOXMLString& SAX2Attributes::getValue( - const SDOXMLString& attributeUri, - const SDOXMLString& attributeName) const - { - for (int i=0; i < attributes.size(); i++) - { - if (attributes[i].getUri().equalsIgnoreCase(attributeUri)) - { - if (attributes[i].getName().equalsIgnoreCase(attributeName)) - { - return attributes[i].getValue(); - } - } - } - - return nullValue; - } - - const SDOXMLString& SAX2Attributes::getValue( - const SDOXMLString& attributeName) const - { - for (int i=0; i < attributes.size(); i++) - { - if (attributes[i].getName().equalsIgnoreCase(attributeName)) - { - return attributes[i].getValue(); - } - } - - return nullValue; - } - - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attributes.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attributes.h deleted file mode 100644 index 0a0ce792a3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Attributes.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/07 13:35:33 $ */ - -#ifndef _SAX2ATTRIBUTES_H_ -#define _SAX2ATTRIBUTES_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SAX2Attribute.h" - -#include "vector" - - -namespace commonj -{ - namespace sdo - { - -/** - * SAX2Attributes holds a list of attributes supplied by the SAX2 parser. - */ - class SAX2Attributes - { - - public: - - SAX2Attributes(); - - SAX2Attributes( - int nb_attributes, - int nb_defaulted, - const xmlChar **attributes); - - virtual ~SAX2Attributes(); - - const SAX2Attribute& operator[] (int pos) const; - int size() const; - - const SDOXMLString& getValue( - const SDOXMLString& attributeUri, - const SDOXMLString& attributeName) const; - - const SDOXMLString& getValue( - const SDOXMLString& attributeName) const; - - private: - typedef std::vector<SAX2Attribute> ATTRIBUTE_LIST; - ATTRIBUTE_LIST attributes; - - static const SDOXMLString nullValue; - - - - }; - } // End - namespace sdo -} // End - namespace commonj - -#endif //_SAX2ATTRIBUTES_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Namespaces.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Namespaces.cpp deleted file mode 100644 index ae99c4949e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Namespaces.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SAX2Namespaces.h" - - -namespace commonj -{ - namespace sdo - { - - SAX2Namespaces::SAX2Namespaces() - { - } - - SAX2Namespaces::SAX2Namespaces(int nb_namespaces, const xmlChar** namespaces) - { - for (int i=0; i<nb_namespaces*2; i+=2) - { - namespaceMap[namespaces[i]] = namespaces[i+1]; - } - } - - SAX2Namespaces::~SAX2Namespaces() - { - } - - const SDOXMLString* SAX2Namespaces::find(const SDOXMLString& prefix) const - { - NAMESPACE_MAP::const_iterator nsIter; - nsIter = namespaceMap.find(prefix); - if(nsIter == namespaceMap.end()) - { - return 0; - } - - return &(nsIter->second); - - } - - const SDOXMLString* SAX2Namespaces::findPrefix(const SDOXMLString& uri) const - { - NAMESPACE_MAP::const_iterator nsIter; - for (nsIter = namespaceMap.begin(); nsIter != namespaceMap.end(); nsIter++) - { - if (nsIter->second.equals(uri)) - return &(nsIter->first); - } - return 0; - } - - void SAX2Namespaces::merge(const SAX2Namespaces& inspaces) - { - NAMESPACE_MAP::const_iterator nsIter; - for (nsIter = inspaces.namespaceMap.begin(); - nsIter != inspaces.namespaceMap.end(); nsIter++) - { - // add will not overwrite if it already exists - namespaceMap[nsIter->first] = nsIter->second; - } - return; - } - - - - void SAX2Namespaces::add(const SDOXMLString& prefix, const SDOXMLString& uri) - { - namespaceMap[prefix] = uri; - } - - void SAX2Namespaces::empty() - { - namespaceMap.empty(); - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Namespaces.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Namespaces.h deleted file mode 100644 index d100889544..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Namespaces.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SAX2NAMESPACES_H_ -#define _SAX2NAMESPACES_H_ -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXMLString.h" -#include "map" - - -namespace commonj -{ - namespace sdo - { - -/** - * SAX2Namespaces holds a list of namespaces supplied by the SAX2 parser. - */ - - class SAX2Namespaces - { - - public: - - SAX2Namespaces(); - - SAX2Namespaces(int nb_namespaces, const xmlChar** namespaces); - - virtual ~SAX2Namespaces(); - - void add(const SDOXMLString& prefix, const SDOXMLString& uri); - - void merge(const SAX2Namespaces& inspaces); - - const SDOXMLString* find(const SDOXMLString& prefix) const; - const SDOXMLString* findPrefix(const SDOXMLString& uri) const; - - void empty(); - - private: - typedef std::map<SDOXMLString, SDOXMLString> NAMESPACE_MAP; - NAMESPACE_MAP namespaceMap; - - - - }; - } // End - namespace sdo -} // End - namespace commonj - -#endif //_SAX2NAMESPACES_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Parser.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Parser.cpp deleted file mode 100644 index b38c67061d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Parser.cpp +++ /dev/null @@ -1,516 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 12:33:33 $ */ - -#include "commonj/sdo/SAX2Parser.h" -#include "libxml/SAX2.h" -#include "commonj/sdo/SDORuntimeException.h" -using namespace commonj::sdo; - -/** - * SAX2Parser holds the methods which will be called back. - * The implementation uses libxml, which provides callbacks for - * errors, warnings , elements etc. These methods correspond to thos - * callbacks. - * Callbacks from libxml to these C methods are converted into calls - * to the C++ equivalent (with some parameter manipulation - * In the callback methods the void* ctx is a pointer to 'this' SAX2Parser - */ - - - -int sdo_isStandalone(void *ctx) -{ - return 0; -} - - -int sdo_hasInternalSubset(void *ctx) -{ - return(0); -} - -int sdo_hasExternalSubset(void *ctx) -{ - return(0); -} - -void sdo_internalSubset(void *ctx, const xmlChar *name, - const xmlChar *ExternalID, const xmlChar *SystemID) -{ -} - - -void sdo_externalSubset(void *ctx, const xmlChar *name, - const xmlChar *ExternalID, const xmlChar *SystemID) -{ -} - -xmlParserInputPtr sdo_resolveEntity(void *ctx, const xmlChar *publicId, const xmlChar *systemId) -{ - return(NULL); -} - - -xmlEntityPtr sdo_getEntity(void *ctx, const xmlChar *name) -{ - return(NULL); -} - - -xmlEntityPtr sdo_getParameterEntity(void *ctx, const xmlChar *name) -{ - return(NULL); -} - - -void sdo_entityDecl(void *ctx, const xmlChar *name, int type, - const xmlChar *publicId, const xmlChar *systemId, xmlChar *content) -{ -} - - -void sdo_attributeDecl(void *ctx, const xmlChar * elem, - const xmlChar * name, int type, int def, - const xmlChar * defaultValue, xmlEnumerationPtr tree) -{ -} - -void sdo_elementDecl(void *ctx, const xmlChar *name, int type, - xmlElementContentPtr content) -{ -} - - -void sdo_notationDecl(void *ctx, const xmlChar *name, - const xmlChar *publicId, const xmlChar *systemId) -{ -} - -void sdo_unparsedEntityDecl(void *ctx, const xmlChar *name, - const xmlChar *publicId, const xmlChar *systemId, - const xmlChar *notationName) -{ -} - - -void sdo_setDocumentLocator(void *ctx, xmlSAXLocatorPtr loc) -{ -} - - -void sdo_startDocument(void *ctx) -{ - if (!((SAX2Parser*)ctx)->parserError) - ((SAX2Parser*)ctx)->startDocument(); -} - - -void sdo_endDocument(void *ctx) -{ - if (!((SAX2Parser*)ctx)->parserError) - ((SAX2Parser*)ctx)->endDocument(); -} - - -void sdo_startElement(void *ctx, const xmlChar *name, const xmlChar **atts) -{ - // ((SAX2Parser*)ctx)->startElement(name, atts); -} - - -void sdo_endElement(void *ctx, const xmlChar *name) -{ - // ((SAX2Parser*)ctx)->endElement(name); -} - - -void sdo_characters(void *ctx, const xmlChar *ch, int len) -{ - if (!((SAX2Parser*)ctx)->parserError) - ((SAX2Parser*)ctx)->characters(SDOXMLString(ch, 0, len)); -} - - -void sdo_reference(void *ctx, const xmlChar *name) -{ -} - - -void sdo_ignorableWhitespace(void *ctx, const xmlChar *ch, int len) -{ -} - - -void sdo_processingInstruction(void *ctx, const xmlChar *target, - const xmlChar *data) -{ -} - - -void sdo_cdataBlock(void *ctx, const xmlChar *value, int len) -{ -} - -void sdo_comment(void *ctx, const xmlChar *value) -{ -} - - -void sdo_warning(void *ctx, const char *msg, ...) -{ - va_list args; - va_start(args, msg); - ((SAX2Parser*)ctx)->warning(msg, args); - va_end(args); -} - -void sdo_error(void *ctx, const char *msg, ...) -{ - va_list args; - va_start(args, msg); - ((SAX2Parser*)ctx)->error(msg, args); - va_end(args); - - -} - -void sdo_fatalError(void *ctx, const char *msg, ...) -{ - va_list args; - va_start(args, msg); - ((SAX2Parser*)ctx)->fatalError(msg, args); - va_end(args); -} - - - -// =============== -// SAX2 callbacks -// =============== -void sdo_startElementNs(void *ctx, - const xmlChar *localname, - const xmlChar *prefix, - const xmlChar *URI, - int nb_namespaces, - const xmlChar **namespaces, - int nb_attributes, - int nb_defaulted, - const xmlChar **attributes) -{ - if (!((SAX2Parser*)ctx)->parserError) - ((SAX2Parser*)ctx)->startElementNs( - localname, - prefix, - URI, - SAX2Namespaces(nb_namespaces, namespaces), - SAX2Attributes(nb_attributes, nb_defaulted, attributes)); -} - - -void sdo_endElementNs(void *ctx, - const xmlChar *localname, - const xmlChar *prefix, - const xmlChar *URI) -{ - if (!((SAX2Parser*)ctx)->parserError) - ((SAX2Parser*)ctx)->endElementNs(localname, prefix, URI); -} - - -// The callback method structure -xmlSAXHandler SDOSAX2HandlerStruct = { - sdo_internalSubset, - sdo_isStandalone, - sdo_hasInternalSubset, - sdo_hasExternalSubset, - sdo_resolveEntity, - sdo_getEntity, - sdo_entityDecl, - sdo_notationDecl, - sdo_attributeDecl, - sdo_elementDecl, - sdo_unparsedEntityDecl, - sdo_setDocumentLocator, - sdo_startDocument, - sdo_endDocument, - sdo_startElement, - sdo_endElement, - sdo_reference, - sdo_characters, - sdo_ignorableWhitespace, - sdo_processingInstruction, - sdo_comment, - sdo_warning, - sdo_error, - sdo_fatalError, - sdo_getParameterEntity, - sdo_cdataBlock, - sdo_externalSubset, - XML_SAX2_MAGIC, - NULL, - sdo_startElementNs, - sdo_endElementNs, - NULL -}; - - -namespace commonj -{ - namespace sdo - { - - - - - SAX2Parser::SAX2Parser() - { - setter = 0; - parserError = false; - currentFile = 0; - } - - SAX2Parser::SAX2Parser(ParserErrorSetter* insetter) - { - setter = insetter; - parserError = false; - currentFile = 0; - } - - SAX2Parser::~SAX2Parser() - { - // xmlCleanupParser(); - if (currentFile != 0)delete currentFile; - - } - - const char* SAX2Parser::getCurrentFile() const - { - return currentFile; - } - - - void SAX2Parser::setCurrentFile(const char* filename) - { - if (currentFile != 0) - { - delete currentFile; - } - currentFile = new char[strlen(filename)+1]; - strcpy(currentFile,filename); - } - - int SAX2Parser::parse(const char* filename) - { - - parserError = false; - xmlSAXHandlerPtr handler = &SDOSAX2HandlerStruct; - - if (currentFile != 0) - { - delete currentFile; - } - currentFile = new char[strlen(filename)+1]; - strcpy(currentFile,filename); - - - int rc = xmlSAXUserParseFile(handler, this, filename); - if (rc == -1) - { - sdo_error(this, "xmlSAXUserParseFile returned an error %d", rc); - SDO_THROW_EXCEPTION("parse", SDOFileNotFoundException,messageBuffer); - } - return rc; - } - - void SAX2Parser::startDocument() - { - } - - void SAX2Parser::endDocument() - { - } - - void SAX2Parser::startElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - } - - void SAX2Parser::endElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI) - { - } - - void SAX2Parser::characters(const SDOXMLString& chars) - { - } - - - void SAX2Parser::warning(const char* msg, va_list args) - { - // warnings are perhaps too frequent - // vsprintf(messageBuffer, msg, args); - // if (setter != 0)setter->setError(messageBuffer); - } - - void SAX2Parser::fatalError(const char* msg, va_list args) - { - parserError = true; - vsprintf(messageBuffer, msg, args); - if (setter != 0)setter->setError(messageBuffer); - } - - void SAX2Parser::error(const char* msg, va_list args) - { - vsprintf(messageBuffer, msg, args); - if (setter != 0)setter->setError(messageBuffer); - } - - - void SAX2Parser::stream(std::istream& input) - { - char buffer[100]; - xmlSAXHandlerPtr handler = &SDOSAX2HandlerStruct; - parserError = false; - xmlParserCtxtPtr ctxt; - - input.read(buffer,4); - ctxt = xmlCreatePushParserCtxt(handler, this, - buffer, input.gcount(), NULL); - - while (input.read(buffer,100)) - { - xmlParseChunk(ctxt, buffer, input.gcount(), 0); - - } - - xmlParseChunk(ctxt, buffer, input.gcount(), 1); - xmlFreeParserCtxt(ctxt); - - if (parserError) - { - SDO_THROW_EXCEPTION("stream", SDOXMLParserException,messageBuffer); - } - - } - - int SAX2Parser::parse_twice(const char* filename) - { - parserError = false; - xmlSAXHandlerPtr handler = &SDOSAX2HandlerStruct; - - setCurrentFile(filename); - - int rc = xmlSAXUserParseFile(handler, this, filename); - if (rc == -1) - { - sdo_error(this, "xmlSAXUserParseFile returned an error %d", rc); - SDO_THROW_EXCEPTION("parse", SDOFileNotFoundException,messageBuffer); - } - - // parse twice - first was for groups - - if (setter)setter->clearErrors(); - - rc = xmlSAXUserParseFile(handler, this, filename); - if (rc == -1) - { - sdo_error(this, "xmlSAXUserParseFile returned an error %d", rc); - SDO_THROW_EXCEPTION("parse", SDOFileNotFoundException,messageBuffer); - } - return rc; - } - - void SAX2Parser::stream_twice(std::istream& input) - { - - std::vector<parse_buf_element> buffer_vec; - int count = 0; - parserError = false; - - xmlSAXHandlerPtr handler = &SDOSAX2HandlerStruct; - xmlParserCtxtPtr ctxt; - - char bctx[5]; - input.read(bctx,4); - int bcount = input.gcount(); - - - ctxt = xmlCreatePushParserCtxt(handler, this, - bctx, bcount, NULL); - - buffer_vec.push_back(parse_buf_element()); - - while (input.read(buffer_vec[count].buf,1000)) - { - buffer_vec[count].len = input.gcount(); - xmlParseChunk(ctxt, buffer_vec[count].buf, - buffer_vec[count].len, 0); - buffer_vec.push_back(parse_buf_element()); - count++; - - } - - buffer_vec[count].len = input.gcount(); - xmlParseChunk(ctxt, buffer_vec[count].buf, - buffer_vec[count].len, 1); - xmlFreeParserCtxt(ctxt); - - if (parserError) - { - SDO_THROW_EXCEPTION("stream", SDOXMLParserException,messageBuffer); - } - - if (setter)setter->clearErrors(); - - ctxt = xmlCreatePushParserCtxt(handler, this, - bctx, bcount, NULL); - - for (int i=0;i<buffer_vec.size();i++) - { - if (buffer_vec[i].len > 0) - { - xmlParseChunk(ctxt, buffer_vec[i].buf, - buffer_vec[i].len, 0); - } - } - - if (parserError) - { - SDO_THROW_EXCEPTION("stream", SDOXMLParserException,messageBuffer); - } - - } - - - std::istream& operator>>(std::istream& input, SAX2Parser& parser) - { - parser.stream(input); - return input; - } - - - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Parser.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Parser.h deleted file mode 100644 index 6e81bc98b7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SAX2Parser.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 12:33:33 $ */ - -#ifndef _SAX2PARSER_H_ -#define _SAX2PARSER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/SAX2Namespaces.h" -#include "commonj/sdo/SAX2Attributes.h" -#include "commonj/sdo/ParserErrorSetter.h" - - - -#include "sstream" -namespace commonj -{ - namespace sdo - { - - class parse_buf_element - { - - public: - char buf[1000]; - int len; - }; - -/** - * SAX2Parser holds the methods which will be called back. - * The implementation uses libxml, which provides callbacks for - * errors, warnings , elements etc. These methods correspond to thos - * callbacks. - * Callbacks from libxml to these C methods are converted into calls - * to the C++ equivalent (with some parameter manipulation - * In the callback methods the void* ctx is a pointer to 'this' SAX2Parser - */ - class SAX2Parser - { - - public: - - SAX2Parser(); - - SAX2Parser(ParserErrorSetter* insetter); - - virtual ~SAX2Parser(); - - virtual int parse (const char* filename); - virtual int parse_twice (const char* filename); - - virtual void startDocument(); - virtual void endDocument(); - - virtual void startElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void endElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI); - - virtual void characters(const SDOXMLString& chars); - - virtual void warning(const char* msg, va_list args); - - virtual void fatalError(const char* msg, va_list args); - - virtual void error(const char* msg, va_list args); - - virtual void stream(std::istream& input); - virtual void stream_twice(std::istream& input); - - friend std::istream& operator>>(std::istream& input, SAX2Parser& parser); - - ParserErrorSetter* setter; - bool parserError; - - char messageBuffer[1024]; - - virtual const char* getCurrentFile() const; - virtual void setCurrentFile(const char* filename); - - private: - - char* currentFile; - - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SAX2PARSER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDO.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDO.h deleted file mode 100644 index 674edf0719..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDO.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/PropertyList.h" -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/TypeList.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/DataObjectList.h" -#include "commonj/sdo/XSDHelper.h" -#include "commonj/sdo/XMLHelper.h" -#include "commonj/sdo/EqualityHelper.h" -#include "commonj/sdo/CopyHelper.h" -#include "commonj/sdo/SdoRuntime.h" -#include "commonj/sdo/HelperProvider.h" -#include "commonj/sdo/SDODate.h" -#include "commonj/sdo/DataGraph.h" -#include "commonj/sdo/ChangeSummary.h" -#include "commonj/sdo/export.h" -#include "commonj/sdo/SDOUtils.h" -#include "commonj/sdo/ChangedDataObjectList.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/DataObjectInstance.h" -#include "commonj/sdo/DefaultLogWriter.h" -#include "commonj/sdo/Logger.h" -#include "commonj/sdo/LogWriter.h" -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/RefCountingObject.h" -#include "commonj/sdo/SdoCheck.h" -#include "commonj/sdo/Setting.h" -#include "commonj/sdo/SettingList.h" -#include "commonj/sdo/XMLDocument.h" -#include "commonj/sdo/DASValue.h" -#include "commonj/sdo/XpathHelper.h" -#include "commonj/sdo/TypeDefinition.h" -#include "commonj/sdo/TypeDefinitions.h" -#include "commonj/sdo/PropertyDefinition.h" - - - - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDODate.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDODate.cpp deleted file mode 100644 index 50ae8b2297..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDODate.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SDODate.h" - -namespace commonj{ -namespace sdo{ - - - SDODate::~SDODate() - { - } - - SDODate::SDODate(time_t inval) - { - value = inval; - } - - /////////////////////////////////////////////////////////////////////////// - // - /////////////////////////////////////////////////////////////////////////// - - const time_t SDODate::getTime(void) const - { - return value; - } - - const char* SDODate::ascTime(void) const - { - return asctime(localtime(&value)); - } - -}; -}; -// end - namespace sdo - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDODate.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDODate.h deleted file mode 100644 index da900cb298..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDODate.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SDO_SDODATE_H_ -#define _SDO_SDODATE_H_ - - -#include "commonj/sdo/export.h" -#include "time.h" - - - - -namespace commonj{ -namespace sdo{ - - - /////////////////////////////////////////////////////////////////////////// - // A representation of the type of a date. - /////////////////////////////////////////////////////////////////////////// - -/** - * SDODate - a means of hiding the time_t. - * The SDO API in several places uses method overloads to allow the - * same method to set many types of data. As time_t and long are - * sometimes synonymous, it was not possible to have a time_t and a - * long method, so SDODate simply wraps the time_t. - * SDODate also allows modifcation of the implementation, as time_t is - * only a short-term solution - better date/time handling is required. - */ - -class SDODate -{ - -public: - - - virtual SDO_API ~SDODate(); - - SDO_API SDODate(time_t inval); - - /** - * Hand out the date as a time_t - */ - virtual SDO_API const time_t getTime() const; - - /** - * Format the date as a string - */ - - virtual const char* ascTime(void) const; - - -private: - time_t value; -}; - -}; -}; -#endif //_SDO_SDODATE_H_ - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDORuntimeException.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDORuntimeException.cpp deleted file mode 100644 index 4a60d78f0d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDORuntimeException.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/01/23 16:39:24 $ */ - -#include "commonj/sdo/SDORuntimeException.h" - -#include <stdio.h> - -// ======================================================================== -// Constructor -// ======================================================================== -SDORuntimeException :: SDORuntimeException(const char* name, - severity_level sev, - const char* msg_text) - : severity(sev),location_set(0) -{ - class_name = new char[strlen(name) + 1]; - strcpy(class_name,name); - message_text = new char[strlen(msg_text)+1]; - strcpy(message_text,msg_text); - -} // end SDORuntimeException constuctor - -// ======================================================================== -// Constructor -// ======================================================================== -SDORuntimeException :: SDORuntimeException(const SDORuntimeException& c) - : - severity(c.getSeverity()), location_set(c.location_set) - -{ - class_name = new char[strlen(c.getEClassName()) + 1]; - strcpy(class_name, c.getEClassName()); - message_text = new char[strlen(c.getMessageText())+1]; - strcpy(message_text,c.getMessageText()); - for (int i=0;i<c.location_set;i++) - { - locations[i].file = new char[strlen(c.locations[i].file) + 1]; - strcpy(locations[i].file,c.locations[i].file); - locations[i].line = c.locations[i].line; - locations[i].function = new char[strlen(c.locations[i].function) + 1]; - strcpy(locations[i].function, c.locations[i].function); - } -} - -// ======================================================================== -// Destructor -// ======================================================================== -SDORuntimeException :: ~SDORuntimeException() -{ - if (class_name) delete class_name; - if (message_text) delete message_text; - for (int i=0;i<location_set;i++) - { - if (locations[i].file) delete locations[i].file; - if (locations[i].function) delete locations[i].function; - } - -} // end SDORuntimeException destructor - -// ======================================================================== -// Return class name of this exception -// ======================================================================== -const char* SDORuntimeException :: getEClassName() const -{ - return class_name; -} // end getClassName() - -// ======================================================================== -// Return severity -// ======================================================================== -SDORuntimeException::severity_level SDORuntimeException :: getSeverity() const -{ - return severity; -} // end getSeverity() - -// ======================================================================== -// Return message text associated with exception -// ======================================================================== -const char* SDORuntimeException :: getMessageText() const -{ - return message_text; -} // end getMessageText() - -// ======================================================================== -// Return file name where exception was raised -// ======================================================================== -const char* SDORuntimeException :: getFileName() const -{ - return locations[0].file; -} // end getFileName() - -// ======================================================================== -// Return line number where exception was raised -// ======================================================================== -unsigned long SDORuntimeException :: getLineNumber() const -{ - return locations[0].line; -} // end getLineNumber() - -// ======================================================================== -// Return function name where exception was raised -// ======================================================================== -const char* SDORuntimeException :: getFunctionName() const -{ - return locations[0].function; -} // end getFunctionName() - - -// ======================================================================== -// set severity of exception -// ======================================================================== -void SDORuntimeException :: setSeverity(severity_level sev) -{ - severity = sev; -} // end setSeverity(severity_level sev) const - -// ======================================================================== -// set message text associated with exception -// ======================================================================== -void SDORuntimeException :: setMessageText(const char* msg_text) -{ - if (message_text != 0) delete message_text; - message_text = new char[strlen(msg_text) + 1]; - strcpy(message_text,msg_text); -} // end setMessageText(const string &msg_text) const - -// ======================================================================== -// set exception location -// ======================================================================== -void SDORuntimeException :: setExceptionLocation(const char* file, - unsigned long line, - const char* function) -{ - // Only set this information once - if (location_set == 0) - { - locations[0].file = new char[strlen(file)+1]; - strcpy(locations[0].file,file); - locations[0].line = line; - locations[0].function = new char[strlen(function) + 1]; - strcpy(locations[0].function,function); - location_set = 1; - } -} // end setLocation() - -// ======================================================================== -// set location of most recent throw/handling of the exception -// ======================================================================== -void SDORuntimeException :: setLocation(const char* file, - unsigned long line, - const char* function) -{ - if (location_set < num_locations) - { - locations[location_set].file = new char[strlen(file) + 1]; - strcpy(locations[location_set].file,file); - locations[location_set].line = line; - locations[location_set].function = new char[strlen(function) + 1]; - strcpy(locations[location_set].function,function); - - location_set++; - } -} // end setLocation() - -// ======================================================================== -// Trace the exception -// ======================================================================== -void SDORuntimeException :: trace(const char* text) -{ - /* TODO */ - // TRACE_STREAM(0, SDORuntimeException::trace, " ", (*this)); -} // end Trace() - -// ======================================================================== -// print self -// ======================================================================== -std::ostream& SDORuntimeException :: PrintSelf(std::ostream &os) const -{ - char lineNumber[100]; - sprintf(lineNumber, "%d",locations[0].line); - - os << "Exception object :" << std::endl; - os << " class: " << class_name << std::endl; - os << " file name: " << locations[0].file << std::endl; - os << " line number: " << lineNumber << std::endl; - os << " function: " << locations[0].function << std::endl; - os << " description: " << message_text << std::endl; - os << " location history:" << std::endl; - - // TODO - commented out - a two-location rethrow causes an access - // violation here. - //int i=1; - //while (i < location_set) - //{ - // os << " " << i << ")" << std::endl; - // os << " file: " << locations[i].file << std::endl; - // os << " line: " << locations[i].line << std::endl; - // os << " function: " << locations[i].function << std::endl; - // i++; - //} - return os; -} // end ostream operator << - -// ======================================================================== -// ostream operator << -// ======================================================================== -SDO_API std::ostream& operator<< (std::ostream &os, const SDORuntimeException &except) -{ - return except.PrintSelf(os); -} // end ostream operator << - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDORuntimeException.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDORuntimeException.h deleted file mode 100644 index 12036f0db1..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDORuntimeException.h +++ /dev/null @@ -1,517 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#if !defined SDO_EXCEPTIONS_H -#define SDO_EXCEPTIONS_H - -#include "commonj/sdo/export.h" - - -#include <string> -#include <iostream> - - - -/** SDORuntimeException - Exception base class. - * - * - * Description : - * ------------- - * SDO exception class definition - * - * This is intended as a base class. - * - * Parent Classes : - * ---------------- - * none - * - * Public Member functions: - * ------------------------ - * - * Constructors : - * SDORuntimeExceptionm(severity_level sev=severe, - * const string &msg_text=""); - * - * creates the exception object. Parameters are: - * sev: the severity of the exception (Error, Severe) - * msg_text: descriptive message_text - * - * copy constructor not necessary - * - * Destructor : - * virtual ~SDORuntimeException(); - * - * Assignment operator: - * not necessary - * - * void setSeverity(severity_level sev); - * set the exception severity - * - * void setMessageText(const char* msg_text); - * set the message text associated with the exception. (This text should - * come from a message catalog as it may be written to stdout/stderr at - * some point) - * - * void setExceptionLocation(const char* file, - * unsigned long line, - * const char* function=""); - * - * adds the location of the exception. Parameters - * file: the filename from where the exception is being created - * (from __FILE__) - * line: the line number from where the exception is being created - * (from __LINE__) - * function: The function name from where the exception is being created - * - * severity_level getSeverity() const; - * returns the severity of the exception - * - * const char* getMessageText() const; - * returns the message text that describes this exception. - * - * const tring& getFileName() const; - * returns the file name from the location information in the exception - * - * unsigned long getLineNumber() const; - * returns the line number from the location information in the exception - * - * const char* getFunctionName() const; - * returns the function name from the location information in the exception - * - * Private Data Members : - * ---------------------- - * severity_level severity; * Severity of exception - * string message_text; * Message associated with exception - * string file_name; * File name (from __FILE__) - * unsigned long line_number; * Line number (from __LINE__) - * string function_name; * Function name - * - */ - -class SDORuntimeException -{ - public: - // Constructor - enum severity_level - { - Normal, - Warning, - Error, - Severe - }; - - SDO_API SDORuntimeException(const char *name="SDORuntimeException", - severity_level sev=Severe, - const char* msg_text=""); - - SDO_API SDORuntimeException(const SDORuntimeException& c); - - // Destructor - virtual SDO_API ~SDORuntimeException(); - - /** getEClassName() get the exception class - * - * returns the name of the exception class, which will be - * a subclass of SDORuntimeException - */ - - SDO_API const char* getEClassName() const; - - /** getSeverity returns a level from severity_levels - * - * Return severity - * from the enumerator severity_levels, which is: - * - * Normal,Warning, Error,Severe - */ - - SDO_API severity_level getSeverity() const; - - /** - * Return message text associated with exception - */ - - SDO_API const char* getMessageText() const; - - /** getFileName() the file where the exception occurred - * - * Return file name where exception was raised - */ - - SDO_API const char* getFileName() const; - - /** getLineNumber gives the line where the excepion occurred - * - * Return line number where exception was raised - */ - - SDO_API unsigned long getLineNumber() const; - - /** getFunctionName give the name of the raising function - * - * Return function name where exception was raised - */ - - SDO_API const char* getFunctionName() const; - - - /** setSeverity - * - * sets an exception severity - */ - - SDO_API void setSeverity(severity_level sev); - - /** setMessageText - * - * set the message text associated with exception - */ - - SDO_API void setMessageText(const char* msg_text); - - - /** setExceptionLocation - * - * set exception location - */ - - SDO_API void setExceptionLocation(const char* file, - unsigned long line, - const char* function=""); - - SDO_API void setLocation(const char* file, - unsigned long line, - const char* function=""); - - SDO_API void trace(const char* text="%1:\n %3 %4 %2"); - - SDO_API virtual std::ostream& PrintSelf(std::ostream &os) const; - - /** operator << to write the exception - * - * ostream operator << - */ - - SDO_API friend std::ostream& operator<< (std::ostream &os, const SDORuntimeException &except); - - protected: - - private: - - char* class_name; - - severity_level severity; // Severity of exception - - char* message_text; // Description of exception - - //* Location where the exception was last thrown*handled - - class location - { - public: - char* file; //* File name (from __FILE__) - unsigned long line; //* Line number (from __LINE__) - char* function; //* Function name - }; - - // Array of locations - enum {num_locations=5}; - location locations[num_locations]; - - // Index into locations array - int location_set; - - -}; // End SDORuntimeException class definition - -/** - *************************************************************************** - * - * SDOOutOfMemoryException - Exception for no-storage - * - * *************************************************************************** - */ - -class SDOOutOfMemoryException: public SDORuntimeException -{ - public: - SDOOutOfMemoryException(unsigned long size) - : SDORuntimeException("SDOOutOfMemoryException", Severe, - "Unable to obtain storage of length " + size) - { - } - private: -}; // End SDOOutOfMemory class definition - -/** - *************************************************************************** - * - * SDONullPointerException - Exception for no-storage - * - * *************************************************************************** - */ - -class SDONullPointerException: public SDORuntimeException -{ - public: - SDONullPointerException(const char* param) - : SDORuntimeException("SDONullPointerException", Warning, - "The referenced object is null ") - { - } - private: -}; // End SDOOutOfMemory class definition -/** -*************************************************************************** -* -* SDOPathNotFoundException - Exception for bad path -* -**************************************************************************** -*/ -class SDOPathNotFoundException: public SDORuntimeException -{ - public: - SDOPathNotFoundException(const char* path) - : SDORuntimeException("SDOPathNotFoundException", Warning, - path) - { - } - private: -}; // End SDOPathNotFoundException class definition - -/** -*************************************************************************** -* -* SDOPropertyNotFoundException - Exception for property not found -* -**************************************************************************** -*/ - -class SDOPropertyNotFoundException: public SDORuntimeException -{ - public: - SDOPropertyNotFoundException(const char* name) - : SDORuntimeException("SDOPropertyNotFoundException", Warning, - name) - { - } - private: -}; // End SDOPropertyNotFoundException class definition - -/** -*************************************************************************** -* -* SDOTypeNotFoundException - Exception for type not found. -* -**************************************************************************** -*/ -class SDOTypeNotFoundException: public SDORuntimeException -{ - public: - SDOTypeNotFoundException(const char* name) - : SDORuntimeException("SDOTypeNotFoundException", Warning, - name) - { - } - private: -}; // End SDOTypeNotFoundException class definition - -/** -*************************************************************************** -* -* SDOFileNotFoundException - Exception for file not found -* -**************************************************************************** -*/ - -class SDOFileNotFoundException: public SDORuntimeException -{ - public: - SDOFileNotFoundException(const char* name) - : SDORuntimeException("SDOFileNotFoundException", Warning, - name) - { - } - private: -}; // End SDOFileNotFoundException class definition -/** -*************************************************************************** -* -* SDOPropertyNotSetException - Exception for asking for the value of an -* unset/undefaulted prop -* -**************************************************************************** -*/ -class SDOPropertyNotSetException: public SDORuntimeException -{ - public: - SDOPropertyNotSetException(const char* name) - : SDORuntimeException("SDOPropertyNotSetException", Warning, - name) - { - } - private: -}; // End SDOPropertyNotSetException class definition -/** -*************************************************************************** -* -* SDOUnsupportedOperationException - Invalid action or unimplemented method. -* -**************************************************************************** -*/ -class SDOUnsupportedOperationException: public SDORuntimeException -{ - public: - SDOUnsupportedOperationException(const char* name) - : SDORuntimeException("SDOUnsupportedOperationException", Warning, - name) - { - } - private: -}; // End SDOTypeNotFoundException class definition - -/** -*************************************************************************** -* -* SDOInvalidConversionException - Invalid conversion - cannot convert to type. -* -**************************************************************************** -*/ -class SDOInvalidConversionException: public SDORuntimeException -{ - public: - SDOInvalidConversionException(const char* name) - : SDORuntimeException("SDOInvalidConversionException", Warning, - name) - { - } - private: -}; // End SDOTypeNotFoundException class definition -/** -*************************************************************************** -* -* SDOIllegalArgumentException - Invalid argument passed (null name?). -* -**************************************************************************** -*/ -class SDOIllegalArgumentException: public SDORuntimeException -{ - public: - SDOIllegalArgumentException(const char* name) - : SDORuntimeException("SDOIllegalArgumentException", Warning, - name) - { - } - private: -}; // End SDOTypeNotFoundException class definition -/** -**************************************************************************** -* -* SDOIndexOutOfRangeException - element index not in a list. -* -**************************************************************************** -*/ -class SDOIndexOutOfRangeException: public SDORuntimeException -{ - public: - SDOIndexOutOfRangeException(const char* name) - : SDORuntimeException("SDOIndexOutOfRangeException", Warning, - name) - { - } - private: -}; // End SDOTypeNotFoundException class definition - -/** -*************************************************************************** -* -* SDOXMLParserException - XMLParser error -* -**************************************************************************** -*/ -class SDOXMLParserException: public SDORuntimeException -{ - public: - SDOXMLParserException(const char* name) - : SDORuntimeException("SDOXMLParserException", Warning, - name) - { - } - private: -}; // End SDOTypeNotFoundException class definition - -/* -*************************************************************************** -* -* Macro definitions -* -**************************************************************************** -*/ -/** - * ========================================================================= - * Macro - SDO_THROW_EXCEPTION - * - * adds the current file name, line number and function name to the exception. - * then throws the exception. - * The parameter 'function_name' should be the name of the function throwing - * this exception. - * The parameter 'type' is the class of exception to throw and must be a - * SDORuntimeException or a class derived from SDORuntimeException. - * The parameter 'parameter' is the construction parameter for the exception - * ========================================================================= -*/ - - #define SDO_THROW_EXCEPTION(function_name, type, parameter ) \ - {\ - type ex(parameter); \ - ex.setExceptionLocation(__FILE__,__LINE__,#function_name); \ - throw ex;\ - } - -/** - ========================================================================= - * Macro - SDO_RETHROW_EXCEPTION - * - * adds the current file name, line number and function name to the exception. - * then re-throws the exception. - * The parameter 'function_name' should be the name of the function throwing - * this exception. - * ========================================================================= -*/ - #define SDO_RETHROW_EXCEPTION(function_name, exception) \ - (exception).setLocation(__FILE__,__LINE__,#function_name); \ - throw; - -/** - * ========================================================================= - * Macro - SDO_HANDLE_EXCEPTION - * - * adds the current file name, line number and function name to the exception. - * Writes an exception trace entry then continues. - * The parameter 'function_name' should be the name of the function handling - * this exception. - * ========================================================================= -*/ - #define SDO_HANDLE_EXCEPTION(function_name, exception) \ - {\ - (exception).setLocation(__FILE__,__LINE__,#function_name); \ - (exception).Trace("Exception handled by %1: \n %3 %4 %2");\ - } - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSAX2Parser.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSAX2Parser.cpp deleted file mode 100644 index 8240503337..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSAX2Parser.cpp +++ /dev/null @@ -1,1476 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/20 14:24:42 $ */ - -#include "commonj/sdo/SDOSAX2Parser.h" - -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/ChangeSummary.h" -#include "commonj/sdo/XSDPropertyInfo.h" -#include "commonj/sdo/XMLQName.h" -#include "commonj/sdo/DASProperty.h" -#include "commonj/sdo/Logging.h" -#include "commonj/sdo/DASType.h" -#include "commonj/sdo/XSDTypeInfo.h" -#include "commonj/sdo/TypeImpl.h" -#include "commonj/sdo/DataObjectImpl.h" -#include "commonj/sdo/DataFactoryImpl.h" -using namespace std; - -namespace commonj -{ - namespace sdo - { - - SDOSAX2Parser::SDOSAX2Parser( - DataFactoryPtr df, - const SDOXMLString& targetNamespace, - DataObjectPtr& rootDO, - ParserErrorSetter* insetter - ) - - : dataFactory(df), - targetNamespaceURI(targetNamespace), - rootDataObject(rootDO), - currentDataObject(0), - isDataGraph(false), - ignoreEvents(false), - dealingWithChangeSummary(false), - csbuilder(0), - SAX2Parser(insetter) - - - { - reset(); - if (targetNamespace.isNull()) - { - targetNamespaceURI = ""; - } - rootDataObject = 0; - newSequence = true; - } - - SDOSAX2Parser::~SDOSAX2Parser() - { - } - - void SDOSAX2Parser::reset() - { - rootDataObject = 0; - currentDataObject = 0; - isDataGraph = false; - ignoreEvents = false; - changeSummary = false; - IDMap.empty(); - IDRefs.empty(); - } - - - void SDOSAX2Parser::startDocument() - { - LOGINFO(INFO,"SDOSAX2Parser: startDocument"); - setNamespaces = true; - reset(); - } - - void SDOSAX2Parser::endDocument() - { - LOGENTRY(INFO,"SDOSAX2Parser: endDocument"); - // Iterate over IDREFs list and set references - ID_REFS::iterator refsIter; - for (refsIter = IDRefs.begin(); refsIter != IDRefs.end(); refsIter++) - { - try - { - const Type& type = refsIter->dataObject->getType(); - const Property& prop = refsIter->dataObject->getProperty(refsIter->property); - const Type& propType = ((TypeImpl&)type).getRealPropertyType(refsIter->property); - - // Allowing referenes to DataObjects only - if (!propType.isDataType()) - { - DataObjectPtr reffedDO; - ID_MAP::iterator idIter = IDMap.find(refsIter->value); - if (idIter != IDMap.end()) - { - reffedDO = idIter->second; - } - else - { - // assume it is an XPath? - - // Remove #/ from front of XPATH as getDataObject doeesnt - // support this yet - it does now - //SDOXMLString xpath(refsIter->value); - //if (xpath.firstIndexOf('#') == 0) - // xpath = xpath.substring(1); - //if (xpath.firstIndexOf('/') == 0) - // xpath = xpath.substring(1); - - reffedDO = rootDataObject->getDataObject(refsIter->value); - } - - if (!reffedDO) - { - continue; - } - - if (prop.isMany()) - { - DataObjectList& dol = refsIter->dataObject->getList(prop); - dol.append(reffedDO); - } - else - { - refsIter->dataObject->setDataObject(prop, reffedDO); - } - } - - } - catch (const SDORuntimeException&) - { - } - } - try { - // Now rebuild the changeSummary - if (csbuilder != 0) - { - csbuilder->buildChangeSummary(changeSummaryDO); - delete csbuilder; - csbuilder = 0; - } - } - catch (SDORuntimeException&) - { - } - - LOGEXIT(INFO,"SDOSAX2Parser: endDocument"); - } - - - bool SDOSAX2Parser::setDO(DataObjectPtr newDO, - SDOXMLString& propertyName) - { - LOGENTRY(INFO,"SDOSAX2Parser: setDO"); - - if (currentDataObject) - { - const Type& type = currentDataObject->getType(); - // go lower level so we can find open properties w/o exception - DataObject* dob = currentDataObject; - const PropertyImpl* pprop = ((DataObjectImpl*)dob)->getPropertyImpl(propertyName); - if (pprop == 0) - { - - LOGEXIT(INFO,"SDOSAX2Parser: setDO - exit1"); - return false; - } - - const Property& property = (Property&)*pprop; - //const Type& propertyType = ((TypeImpl&)type).getRealPropertyType(propertyName); - if (currentDataObject->getType().isSequencedType()) - { - SequencePtr seq = currentDataObject->getSequence(); - seq->addDataObject(property, newDO); - } - else - { - if (!property.isMany()) - { - currentDataObject->setDataObject(propertyName, newDO); - } - else - { - DataObjectList& dol = currentDataObject->getList(propertyName); - dol.append(newDO); - } - } - } - - setCurrentDataObject(newDO); - - LOGEXIT(INFO,"SDOSAX2Parser: setDO - exit2"); - return true; - } - - void SDOSAX2Parser::handleOpenAttribute( - SDOXMLString& tns, - const char* propuri, - const char* propname, - const char* value) - { - // first, see if there is a global element or attribute corresponding... - try - { - DataFactory* df = dataFactory; - const PropertyImpl* prop = 0; - const TypeImpl* ti = - ((DataFactoryImpl*)df)->findTypeImpl(propuri,"RootType"); - - if (ti != 0) - { - prop = (const PropertyImpl*)ti->getPropertyImpl(propname); - } - else - { - ti = ((DataFactoryImpl*)df)->findTypeImpl(tns,"RootType"); - } - - if (ti != 0) - { - prop = (const PropertyImpl*)ti->getPropertyImpl(propname); - } - - if (prop == 0) - { - // need to use the sequence interface if it exists - if (currentDataObject->getType().isSequencedType()) - { - SequencePtr seq = currentDataObject->getSequence(); - seq->addCString(propname, value); - } - else - { - currentDataObject->setCString(propname,value); - } - return; - } - - DataObject* dob = currentDataObject; - - switch (prop->getTypeEnum()) - { - case Type::BooleanType: - ((DataObjectImpl*)dob)->defineBoolean(propname); - break; - case Type::ByteType: - ((DataObjectImpl*)dob)->defineByte(propname); - break; - case Type::CharacterType: - ((DataObjectImpl*)dob)->defineCharacter(propname); - break; - case Type::BytesType: - ((DataObjectImpl*)dob)->defineBytes(propname); - break; - case Type::StringType: - ((DataObjectImpl*)dob)->defineString(propname); - break; - case Type::ShortType: - ((DataObjectImpl*)dob)->defineShort(propname); - break; - case Type::IntegerType: - ((DataObjectImpl*)dob)->defineInteger(propname); - break; - case Type::LongType: - ((DataObjectImpl*)dob)->defineLong(propname); - break; - case Type::DoubleType: - ((DataObjectImpl*)dob)->defineDouble(propname); - break; - case Type::FloatType: - ((DataObjectImpl*)dob)->defineFloat(propname); - break; - case Type::DateType: - ((DataObjectImpl*)dob)->defineDate(propname); - break; - } // switch - - // regardless of what type the property now is, we can set CString , and the - // right conversion will happen - - // need to use the sequence interface if it exists. - if (currentDataObject->getType().isSequencedType()) - { - SequencePtr seq = currentDataObject->getSequence(); - seq->addCString(propname, value); - } - else - { - currentDataObject->setCString(propname,value); - } - } - catch (SDORuntimeException) - { - } - return; - } - - - void SDOSAX2Parser::setAttributes( - SDOXMLString& tns, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - - LOGENTRY(INFO,"SDOSAX2Parser::setAttributes"); - - ////////////////////////////////////////////// - // The attributes are properties on the new DO - // Handle attributes - ////////////////////////////////////////////// - for (int i=0; i < attributes.size(); i++) - { - // Should ignore attributes like xsi:type - if (!(attributes[i].getUri().equalsIgnoreCase("http://www.w3.org/2001/XMLSchema-instance"))) - { - try - { - const SDOXMLString& propertyName = getSDOName(*currentDataObjectType, attributes[i].getName()); - DataObject* dob = currentDataObject; - const PropertyImpl* pprop = ((DataObjectImpl*)dob)->getPropertyImpl(propertyName); - if (pprop == 0 ) - { - if (currentDataObject->getType().isOpenType()) - { - // if its an open type, then attributes will be allowed to have - // an invalid name, and setCString will create them all as bytes - handleOpenAttribute(tns, (const char*)attributes[i].getUri(), - (const char*)attributes[i].getName(), - (const char*)attributes[i].getValue()); - - } - else - { - LOGERROR_1(WARNING,"SDOSAX2Parser: Property not found on closed type (ignored):%s", - (const char*)(attributes[i].getName())); - } - } - else - { - const Property& prop = (Property&)*pprop; - SDOXMLString propValue; - - XSDPropertyInfo* pi = (XSDPropertyInfo*)((DASProperty*)&prop)->getDASValue("XMLDAS::PropertyInfo"); - if (pi && pi->getPropertyDefinition().isQName) - { - XMLQName qname(attributes[i].getValue(), - documentNamespaces, namespaces); - propValue = qname.getSDOName(); - } - else - { - propValue = attributes[i].getValue(); - } - - if ((pi && pi->getPropertyDefinition().isIDREF) - || prop.isReference()) - { - // remember this value to resolve later - IDRef ref(currentDataObject, attributes[i].getName(), propValue); - IDRefs.insert(IDRefs.end(), ref); - } - else - { - if (pi && pi->getPropertyDefinition().isID) - { - // add this ID to the map - IDMap[propValue] = currentDataObject; - } - // Always set the property as a String. SDO will do the conversion - currentDataObject->setCString(attributes[i].getName(), propValue); - } - } - } - catch (const SDOPropertyNotFoundException&) - { - LOGERROR_1(WARNING,"SDOSAX2Parser: Error processing attribute (ignored):%s", - (const char*)(attributes[i].getName())); - } - } - } // End iterate over attributes - - LOGEXIT(INFO,"SDOSAX2Parser:setAttributes"); - - } - - - const PropertyImpl* SDOSAX2Parser::handleOpenType( - SDOXMLString& tns, - const SDOXMLString& localname, - DataObjectImpl* dob, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes, - SDOXMLString& xsitypeURI, - SDOXMLString& xsitypeName, - bool bToBeNull) - { - // first, see if there is a global element or attribute corresponding... - const PropertyImpl* pprop; - DataObjectPtr newDO = 0; - try - { - DataFactory* df = dataFactory; - const TypeImpl* ti = 0; - const PropertyImpl* prop = 0; - SDOXMLString propertyName; - - ti = ((DataFactoryImpl*)df)->findTypeImpl(tns,"RootType"); - if (ti != 0) - { - propertyName = getSDOName((Type&)*ti, localname); - prop = ti->getPropertyImpl(propertyName); - } - else - { - propertyName = localname; - } - - if (prop != 0) - { - if (prop->isMany()) - { - pprop = ((DataObjectImpl*)dob)->defineList(propertyName); - - // the type of the list needs to be set, as chars sets a CString - try - { - DataObjectList& dl = ((DataObjectImpl*)dob)->getList(propertyName); - ((DataObjectListImpl*)&dl)->setType(prop->getType().getURI(), - prop->getType().getName()); - } - catch (SDORuntimeException) - { - // let it pass - the type will be Bytes - } - - if (prop->getType().isDataType()) - { - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - } - else - { - newDO = dataFactory->create( - prop->getType().getURI(), - prop->getType().getName()); - // here we need to use the sequence interface if it exists. - if (dob->getType().isSequencedType()) - { - SequencePtr seq = currentPropertySetting.dataObject->getSequence(); - seq->addDataObject(propertyName,newDO); - } - else - { - DataObjectList& dol = dob->getList(propertyName); - dol.append(newDO); - } - setCurrentDataObject(newDO); - setAttributes(tns, namespaces,attributes); - } - return pprop; - } - else - { - switch (prop->getTypeEnum()) - { - case Type::BooleanType: - pprop = ((DataObjectImpl*)dob)->defineBoolean(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::ByteType: - pprop = ((DataObjectImpl*)dob)->defineByte(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::CharacterType: - pprop = ((DataObjectImpl*)dob)->defineCharacter(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::BytesType: - pprop = ((DataObjectImpl*)dob)->defineBytes(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::StringType: - pprop = ((DataObjectImpl*)dob)->defineString(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::ShortType: - pprop = ((DataObjectImpl*)dob)->defineShort(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::IntegerType: - pprop = ((DataObjectImpl*)dob)->defineInteger(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::LongType: - pprop = ((DataObjectImpl*)dob)->defineLong(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::DoubleType: - pprop = ((DataObjectImpl*)dob)->defineDouble(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::FloatType: - pprop = ((DataObjectImpl*)dob)->defineFloat(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::DateType: - pprop = ((DataObjectImpl*)dob)->defineDate(propertyName); - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - break; - case Type::DataObjectType: - pprop = ((DataObjectImpl*)dob)->defineDataObject(propertyName, - prop->getType().getURI(), prop->getType().getName()); - newDO = dataFactory->create( - prop->getType().getURI(), - prop->getType().getName()); - // here we need to use the sequence interface if it exists. - if (dob->getType().isSequencedType()) - { - SequencePtr seq = dob->getSequence(); - seq->addDataObject(propertyName, newDO); - } - else - { - dob->setDataObject(propertyName, newDO); - } - setCurrentDataObject(newDO); - setAttributes(tns,namespaces,attributes); - break; - } - } // else - } // if prop != 0 - else - { - // The type is open, and the property doesnt exist, so we are creating - // a property, and need to find out the type to create. - // As I cannot tell if its a single value or many valued, I create all - // as many valued - // could be data object or primitive. All primitives will appear - // as bytes. - // UPDATE: Spec says that all elements will appear as DataObjects which - // are sequenced - the text will come out as text elements in the sequence - - if (!xsitypeName.isNull()) - { - // it has a type from xsi:type - newDO = dataFactory->create(xsitypeURI, xsitypeName); - } - else - { - newDO = dataFactory->create(Type::SDOTypeNamespaceURI, "OpenDataObject"); - } - pprop = ((DataObjectImpl*)dob)->defineList(propertyName); - // here we need to use the sequence interface if it exists. - if (dob->getType().isSequencedType()) - { - SequencePtr seq = dob->getSequence(); - seq->addDataObject(propertyName, newDO); - } - else - { - DataObjectList& dol = dob->getList(propertyName); - dol.append(newDO); - } - setCurrentDataObject(newDO); - setAttributes(tns,namespaces,attributes); - } - return pprop; - } - catch (SDORuntimeException) - { - // fail to find the property or create a dummy - return 0; - } - } - - void SDOSAX2Parser::startElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - - { - LOGENTRY(INFO,"SDOSAX2Parser: startElementNs"); - - LOGINFO_1(INFO,"SDOSAX2Parser: startElementNs:%s", - (const char*)localname); - - newSequence = true; - - bool bToBeNull = false; - // Save the namespace information from the first element - if (setNamespaces) - { - documentNamespaces = namespaces; - setNamespaces = false; - } - - if (ignoreEvents) - { - // Check for the tag we are waiting for - if ( (ignoreTag.localname.equals(localname)) - && (ignoreTag.uri.equals(URI)) - && (ignoreTag.prefix.equals(prefix)) ) - { - ignoreTag.tagCount++; - } - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit1"); - return; - } - - if (URI.equalsIgnoreCase("http://www.w3.org/2001/XMLSchema")) - { - // ignore anything within a schema - LOGINFO_1(INFO,"SDOSAX2Parser ignores schema element:%s", - (const char *)localname); - - // We need to ignore all events until the end tag for this element - ignoreEvents = true; - ignoreTag.localname = localname; - ignoreTag.uri = URI; - ignoreTag.prefix = prefix; - ignoreTag.tagCount = 0; - return; - } - - - - if (dealingWithChangeSummary) - { - if (csbuilder == 0) - { - LOGERROR(ERROR,"SDOSAX2Parser:Parser builds summary with no builder"); - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit2"); - return; - } - csbuilder->processStart( - localname, - prefix, - URI, - namespaces, - attributes); - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit3"); - return; - } - - - if (URI.equalsIgnoreCase(Type::SDOTypeNamespaceURI.c_str())) - { - /////////////////////////////////////////////////////////////////////// - // Handle datagraph - /////////////////////////////////////////////////////////////////////// - if (localname.equalsIgnoreCase("datagraph")) - { - // Remember this is a datagraph. The root DO will be created - // later when we can have a better guess at the namespaceURI - isDataGraph = true; - } // end handling sdo:datagraph - - //////////////////////////////////// - // Handle ChangeSummary on datagraph - //////////////////////////////////// - if (localname.equals("changeSummary")) - { - changeSummary = true; - changeSummaryDO = currentDataObject; - - csbuilder = new ChangeSummaryBuilder( - dataFactory, rootDataObject ); - - changeSummaryLogging = true; - - - SDOXMLString logging = attributes.getValue("logging"); - if (!logging.isNull()) - { - if (logging.equals("false")) - { - changeSummaryLogging = false; - } - } - - LOGINFO(INFO,"SDOSAX2Parser:Start change summary"); - dealingWithChangeSummary = true; - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit4"); - return; - - } - - } - else - { - /////////////////////////////////////////////////////////////////////// - // Each element is a DataObject or a Property on the current DO - /////////////////////////////////////////////////////////////////////// - DataObjectPtr newDO = 0; - - SDOXMLString typeURI, typeName, propertyName; - - /////////////////////////////////////////////////////////////////////// - // Determine the type. It is either specified by the xsi:type attribute - // or the localname is the name of a property on "RootType" - /////////////////////////////////////////////////////////////////////// - int i; - for (i=0; i < attributes.size(); i++) - { - if (attributes[i].getUri().equalsIgnoreCase("http://www.w3.org/2001/XMLSchema-instance")) - { - if (attributes[i].getName().equalsIgnoreCase("type")) - { - SDOXMLString fullTypeName = attributes[i].getValue(); - SDOXMLString pref; - - int index = fullTypeName.firstIndexOf(':'); - if (index < 0) - { - typeName = fullTypeName; - } - else - { - // Is the namespace prefix defined? - typeName = fullTypeName.substring(index+1); - pref = fullTypeName.substring(0, index); - } - - // Convert the prefix to a namespace URI - const SDOXMLString* namespaceURI = namespaces.find(pref); - if (namespaceURI == 0) - { - namespaceURI = documentNamespaces.find(pref); - } - if (namespaceURI != 0) - { - typeURI = *namespaceURI; - } - } - else if (attributes[i].getName().equalsIgnoreCase("nil")) - { - if (attributes[i].getValue().equalsIgnoreCase("true")) - { - // the current setting needs to be setNull - bToBeNull = true; - } - } - } - } // End - attribute loop - - if (typeURI.isNull()) - { - typeURI = ""; - } - - SDOXMLString tns = URI; - - try - { - if (currentDataObject == 0) - { - // This element should become the root data object - - // Target namespace will be: - // the targetNamespaceURI if specified - // or the URI of xsi:type if specified - // or the URI of this element - if (!typeURI.equals("")) - { - tns = typeURI; - } - - if (!targetNamespaceURI.isNull() && !targetNamespaceURI.equals("")) - { - tns = targetNamespaceURI; - } - - // Check for localname as a property of the RootType - // if we do not already know the type - if (typeName.isNull()) - { - const Type& rootType = dataFactory->getType(tns, "RootType"); - propertyName = getSDOName(rootType, localname); - const Type& newType = - ((TypeImpl&)(rootType)).getRealPropertyType(propertyName); - - typeURI = newType.getURI(); - typeName = newType.getName(); - } - - // Create the root DataObject - if (isDataGraph) - { - DataObjectPtr rootdo = dataFactory->create(tns, "RootType"); - setCurrentDataObject(rootdo); - changeSummaryDO = currentDataObject; - } - else - { - DataFactory* df = dataFactory; - ((DataFactoryImpl*)df)->setRootElementName(localname); - } - - // NOTE: always creating DO doesn't cater for DataType as top element - - const Type& tp = dataFactory->getType(typeURI,typeName); - if (tp.isDataType()) - { - newDO = dataFactory->create(tns, "RootType"); - currentPropertySetting = PropertySetting(newDO, localname, - bToBeNull); - - // TODO - need instead to record the fact that its a primitive, not - // a real DO - and then present it as the root. - // newDO = dataFactory->create(tns, "RootType"); - // const Type& tpr = dataFactory->getType(tns,"RootType"); - // XSDTypeInfo* typeInfo = (XSDTypeInfo*) - // ((DASType*)&tpr)->getDASValue("XMLDAS::TypeInfo"); - // if (typeInfo) - // { - // TypeDefinitionImpl* td; - // td = (TypeDefinitionImpl*)&(typeInfo->getTypeDefinition()); - // if (td)td->isExtendedPrimitive = true; - // currentPropertySetting = PropertySetting(newDO, "value" /*localname*/, - // bToBeNull); - - // } - // else - // { - // currentPropertySetting = PropertySetting(newDO, localname, - // bToBeNull); - // } - - } - else - { - - newDO = dataFactory->create(typeURI, typeName); - - // get the type definition, and see if its an extended primitive. - - XSDTypeInfo* typeInfo = (XSDTypeInfo*) - ((DASType*)&tp)->getDASValue("XMLDAS::TypeInfo"); - if (typeInfo) - { - const TypeDefinitionImpl& typeDefinition = typeInfo->getTypeDefinition(); - if (typeDefinition.isExtendedPrimitive) - { - // The name of this element is the name of a property on the current DO - currentPropertySetting = PropertySetting(newDO, localname, - bToBeNull); - } - } - } - - } // End - currentDataObject == 0 - - else - { // currentDataObject != 0 - - // Get the Property from the dataObject - propertyName = getSDOName(*currentDataObjectType, localname); - const Type& type = currentDataObject->getType(); - - - // go lower level so we can find open properties w/o exception - DataObject* dob = currentDataObject; - const PropertyImpl* pprop = ((DataObjectImpl*)dob)->getPropertyImpl(propertyName); - if (pprop == 0) - { - if (type.isOpenType()) - { - pprop = handleOpenType( - tns, - localname, - (DataObjectImpl*)dob, - namespaces, - attributes, - typeURI, - typeName, - bToBeNull); - } - if (pprop == 0) - { - // this is an open property , we will need to create it - LOGERROR_1(WARNING,"SDOSAX2Parser Unknown element:%s", - (const char *)localname); - - // We need to ignore all events until the end tag for this element - ignoreEvents = true; - ignoreTag.localname = localname; - ignoreTag.uri = URI; - ignoreTag.prefix = prefix; - ignoreTag.tagCount = 0; - if (setter != 0) - { - char *msg = new char[strlen((const char*)localname) + 32]; - if (msg) { - sprintf(msg,"Parser found unknown element %s", - (const char*)localname); - setter->setError( msg ); - delete msg; - } - } - } - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit5"); - return; - } - else - { - - const Property& prop = (Property&)*pprop; - const TypeImpl* propType = ((TypeImpl&)type).getRealPropertyTypeImpl(propertyName); - if (propType == 0) - { - // could be a previously created open type property - propType = (const TypeImpl*)pprop->getTypeImpl(); - } - if (propType != 0) - { - XSDPropertyInfo* pi = (XSDPropertyInfo*)((DASProperty*)&prop)->getDASValue("XMLDAS::PropertyInfo"); - if ((pi && pi->getPropertyDefinition().isIDREF) - || prop.isReference()) - { - // The name of this element is the name of a property on the current DO - currentPropertySetting = PropertySetting(currentDataObject, propertyName, bToBeNull, - true); - } - - // If it is a DataType then we need set the value - else if (propType->isDataType() ) - { - // The name of this element is the name of a property on the current DO - currentPropertySetting = PropertySetting(currentDataObject, propertyName, - bToBeNull); - } - else - { - - // If typeName is not set then create object of Type of Property - // otherwise use the typeURI and typeName specified by e.g. xsi:type - if (typeName.isNull()) - { - newDO = dataFactory->create(propType->getURI(), propType->getName()); - } - else - { - newDO = dataFactory->create(typeURI, typeName); - } - - XSDTypeInfo* typeInfo = (XSDTypeInfo*) - ((DASType*)propType)->getDASValue("XMLDAS::TypeInfo"); - if (typeInfo && typeInfo->getTypeDefinition().isExtendedPrimitive) - { - // The name of this element is the name of a property on the current DO - currentPropertySetting = PropertySetting(newDO, "value", bToBeNull); - } - - } - } - } // End // currentDataObject != 0 - } // end prop != 0 - if (newDO) - { - if (!setDO(newDO, propertyName)) - { - LOGERROR_1(WARNING,"SDOSAX2Parser Unknown element:%s", - (const char *)localname); - - // We need to ignore all events until the end tag for this element - ignoreEvents = true; - ignoreTag.localname = localname; - ignoreTag.uri = URI; - ignoreTag.prefix = prefix; - ignoreTag.tagCount = 0; - if (setter != 0) - { - char *msg = new char[strlen((const char*)localname) + 32]; - if (msg) { - sprintf(msg,"Parser found unknown element %s", - (const char*)localname); - setter->setError( msg ); - delete msg; - } - } - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit6"); - return; - } - } - } // end try - - catch (const SDOTypeNotFoundException& ) - { - - LOGERROR_1(WARNING,"SDOSAX2Parser Unknown element:%s", - (const char *)localname); - - // We need to ignore all events until the end tag for this element - ignoreEvents = true; - ignoreTag.localname = localname; - ignoreTag.uri = URI; - ignoreTag.prefix = prefix; - ignoreTag.tagCount = 0; - if (setter != 0) - { - char *msg = new char[strlen((const char*)localname) + 32]; - if (msg) { - sprintf(msg,"Parser found unknown element %s", - (const char*)localname); - setter->setError( msg ); - delete msg; - } - } - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit7"); - return; - } - -#ifdef _DEBUG - catch (const SDOPropertyNotFoundException& e ) -#else - catch (const SDOPropertyNotFoundException& ) -#endif - { - LOGERROR_1(WARNING,"SDOSAX2Parser Unknown element exception:%s", - (const char *)localname); - LOGSDOEXCEPTION(WARNING,"Exception:",e); - - // We need to ignore all events until the end tag for this element - ignoreEvents = true; - ignoreTag.localname = localname; - ignoreTag.uri = URI; - ignoreTag.prefix = prefix; - ignoreTag.tagCount = 0; - if (setter != 0) - { - char *msg = new char[strlen((const char*)localname) + 32]; - if (msg) - { - sprintf(msg,"Parser found unknown element %s", - (const char*)localname); - setter->setError( msg ); - delete msg; - } - } - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit8"); - return; - } - - setAttributes(tns,namespaces, attributes); - - } - LOGEXIT(INFO,"SDOSAX2Parser: startElementNs - exit9"); - } - - - void SDOSAX2Parser::endElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI) - { - - LOGENTRY(INFO,"SDOSAX2Parser: endElementNs"); - - newSequence = true; - - if (localname.equals("changeSummary")) - { - // end of change summary - dealingWithChangeSummary = false; - LOGINFO(INFO,"SDOSAX2Parser: Finished change summary"); - LOGEXIT(INFO,"SDOSAX2Parser: endElementNs - exit1"); - return; - } - - if (dealingWithChangeSummary) - - { - if (csbuilder == 0) - { - LOGERROR(WARNING,"SDOSAX2Parser: End change summary with no builder"); - LOGEXIT(INFO,"SDOSAX2Parser: endElementNs - exit2"); - return; - } - csbuilder->processEnd(localname, - prefix, - URI); - LOGEXIT(INFO,"SDOSAX2Parser: endElementNs - exit3"); - return; - } - - - if (ignoreEvents) - { - // Check for the tag we are waiting for - if ( (ignoreTag.localname.equals(localname)) - && (ignoreTag.uri.equals(URI)) - && (ignoreTag.prefix.equals(prefix)) ) - { - if (ignoreTag.tagCount == 0) - { - ignoreEvents = false; - } - ignoreTag.tagCount--; - } - LOGEXIT(INFO,"SDOSAX2Parser: endElementNs - exit4"); - return; - } - - // If currentPropertySetting is set (name is not null) - // then we need to set the property now - if (!currentPropertySetting.name.isNull()) - { - if (currentPropertySetting.isNULL) - { - - currentPropertySetting.dataObject-> - setNull((const char*)currentPropertySetting.name); - - } - else - { - if (currentPropertySetting.value.isNull()) - { - currentPropertySetting.value = SDOXMLString(""); - } - try - { - const Type& tp = currentPropertySetting.dataObject->getType(); - XSDTypeInfo* typeInfo = (XSDTypeInfo*) - ((DASType*)&tp)->getDASValue("XMLDAS::TypeInfo"); - if (typeInfo && typeInfo->getTypeDefinition().isExtendedPrimitive) - { - const Property& p = currentPropertySetting.dataObject->getProperty( - "value"); - if (p.isMany()) - { - // use the sequence interface if it exists. - if (currentPropertySetting.dataObject->getType().isSequencedType()) - { - SequencePtr seq = currentPropertySetting.dataObject->getSequence(); - seq->addCString("value", currentPropertySetting.value); - } - else - { - DataObjectList& dl = currentPropertySetting.dataObject-> - getList((const char*)"value"); - dl.append((const char*)currentPropertySetting.value); - } - - } - else - { - // use the sequence interface if it exists - if (currentPropertySetting.dataObject->getType().isSequencedType()) - { - SequencePtr seq = currentPropertySetting.dataObject->getSequence(); - seq->addCString("value", currentPropertySetting.value); - } - else - { - currentPropertySetting.dataObject-> - setCString((const char*)"value", currentPropertySetting.value ); - } - } - if (dataObjectStack.size() == 0 || rootDataObject == dataObjectStack.top()) - { - currentDataObject = 0; - currentDataObjectType = 0; - } - else - { - dataObjectStack.pop(); - currentDataObject = dataObjectStack.top(); - currentDataObjectType = &(currentDataObject->getType()); - } - - } - else - { - if (currentPropertySetting.isIDREF) - { - // remember this value to resolve later - IDRef ref(currentPropertySetting.dataObject, - currentPropertySetting.name, - currentPropertySetting.value ); - IDRefs.insert(IDRefs.end(), ref); - } - else - { - if (currentPropertySetting.dataObject->getType().isSequencedType()) - { - SequencePtr seq = currentPropertySetting.dataObject->getSequence(); - seq->addCString(currentPropertySetting.name, currentPropertySetting.value); - } - // Always set the property as a String. SDO will do the conversion - - // It might be a single setting for a many-valued property. - // may throw SDOPropertyNotFoundException - else { - const Property& p = currentPropertySetting.dataObject->getProperty( - currentPropertySetting.name); - if (p.isMany()) - { - DataObjectList& dl = currentPropertySetting.dataObject-> - getList((const char*)currentPropertySetting.name); - dl.append((const char*)currentPropertySetting.value); - } - else - { - currentPropertySetting.dataObject-> - setCString((const char*)currentPropertySetting.name, currentPropertySetting.value ); - } - } - } - } - } -#ifdef _DEBUG - catch (const SDOPropertyNotFoundException& e) -#else - catch (const SDOPropertyNotFoundException&) -#endif - { - LOGSDOEXCEPTION(WARNING,"SDOSAX2Parser error attribute (ignored)",e); - } - } - currentPropertySetting = PropertySetting(); - - } - else - { - if (changeSummary - && changeSummaryLogging - && changeSummaryDO == currentDataObject) - { - // Set logging on for this DO before it is popped from stack - ChangeSummary* cs = currentDataObject->getChangeSummary(); - if (cs) - { - cs->beginLogging(); - } - changeSummary = false; - } - - if (dataObjectStack.size() == 0 || rootDataObject == dataObjectStack.top()) - { - currentDataObject = 0; - currentDataObjectType = 0; - } - else - { - dataObjectStack.pop(); - currentDataObject = dataObjectStack.top(); - currentDataObjectType = &(currentDataObject->getType()); - } - } - LOGEXIT(INFO,"SDOSAX2Parser: endElementNs - exit4"); - } - - - - void SDOSAX2Parser::characters(const SDOXMLString& chars) - { - if (chars.isNull()) return; - - if (!strcmp((const char*)chars,"\r") || - !strcmp((const char*)chars,"\n")) - { - newSequence = true; - return; - } - - if (dealingWithChangeSummary) - { - if (csbuilder == 0) - { - LOGERROR(WARNING,"SDOSAX2Parser: no builder"); - return; - } - csbuilder->processChars(chars); - return; - } - - if (ignoreEvents) - return; - - if (!currentPropertySetting.name.isNull()) - { - currentPropertySetting.value = currentPropertySetting.value + chars; - return; - } - DataObject* dob = currentDataObject; - if ((dob != 0) && ((DataObjectImpl*)dob)->getTypeImpl().isFromList()) - { - // this is a list,so we need to split it up - DataObjectList& dl = currentDataObject->getList( - (const char *)"values"); - - const char* str = (const char*)chars; - char* buf = new char[strlen(str)+1]; - if (!buf) return; - - strcpy(buf,str); - - int start_point = 0; - int end_point; - int final = strlen(buf); - - do { - if (start_point >= final)break; - while (buf[start_point] == (char)0x20 || buf[start_point] == (char)0x09 - || buf[start_point] == (char)0x0A || buf[start_point] == (char)0x0D )start_point++; - end_point = start_point; - while (buf[end_point] != (char)0x20 && buf[end_point] != (char)0x09 && - buf[end_point] != (char)0x0A && buf[end_point] != (char)0x0D && - buf[end_point] != 0x0)end_point++; - if (end_point == start_point)break; - *(buf+end_point) = 0; - dl.append((const char*)(buf+start_point)); - start_point = end_point + 1; - } while(1); - - delete buf; - return; - } - - - // If the current DataObject is a sequenced Type - // then add this as text to the sequence - if (currentDataObject && currentDataObjectType->isSequencedType()) - { - SequencePtr seq = currentDataObject->getSequence(); - if (seq) - { - if (newSequence == true) - { - seq->addText(chars); - newSequence = false; - } - else - { - for (int k= (int)(seq->size())-1; k>=0 ; k --) - { - if (seq->isText(k)) - { - const char * s = seq->getCStringValue(k); - - if (s) - { - char *combi = - new char[strlen(s)+strlen(chars) + 2]; - strcpy(combi,s); - strcat(combi,chars); - seq->setText(k,(const char*)combi); - delete combi; - } - else - { - seq->setText(k,chars); - } - return; - } - } - seq->addText(chars); - } - return; - } - } - - } - - - void SDOSAX2Parser::setCurrentDataObject(DataObjectPtr currentDO) - { - currentDataObject = currentDO; - dataObjectStack.push(currentDataObject); - currentDataObjectType = &(currentDataObject->getType()); - if (rootDataObject == 0) - { - rootDataObject = currentDataObject; - } - } - - const SDOXMLString& SDOSAX2Parser::getSDOName(const Type& type, const SDOXMLString& localName) - { - -/* XSDTypeInfo* typeInfo = (XSDTypeInfo*)((DASType*)&type)->getDASValue("XMLDAS::TypeInfo"); - if (typeInfo) - { - const TypeDefinitionImpl& typeDefinition = typeInfo->getTypeDefinition(); - XmlDasPropertyDefs::const_iterator propsIter; - for (propsIter = typeDefinition.properties.begin(); propsIter != typeDefinition.properties.end(); propsIter++) - { - const PropertyDefinitionImpl& prop = *propsIter; - if (prop.localname.equals(localName)) - { - return prop.name; - } - for (int i=0;i< prop.substituteNames.size();i++) - { - if (prop.substituteLocalNames[i].equals(localName)) - { - return prop.substituteNames[i]; - // possibly should be return prop.name; - } - } - } - } - */ - - PropertyList pl = type.getProperties(); - for (int i = 0; i < pl.size(); i++) - { - XSDPropertyInfo* pi = (XSDPropertyInfo*)((DASProperty*)&pl[i])->getDASValue("XMLDAS::PropertyInfo"); - if (pi) - { - const PropertyDefinitionImpl& propdef = pi->getPropertyDefinition(); - if (localName .equals(propdef.localname)) - return propdef.name; - - for (int j=0;j< propdef.substituteNames.size();j++) - { - if (propdef.substituteLocalNames[j].equals(localName)) - { - return propdef.substituteNames[j]; - // possibly should be return propdef.name; - } - } - } - } - - - - return localName; - } - - - std::istream& operator>>(std::istream& input, SDOSAX2Parser& parser) - { - parser.stream(input); - - return input; - } - - std::istringstream& operator>>(std::istringstream& input, SDOSAX2Parser& parser) - { - parser.stream(input); - - return input; - } - - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSAX2Parser.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSAX2Parser.h deleted file mode 100644 index 4a985a8c02..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSAX2Parser.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SDOSAX2PARSER_H_ -#define _SDOSAX2PARSER_H_ -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SAX2Parser.h" - -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/SAX2Namespaces.h" -#include "commonj/sdo/PropertySetting.h" -#include "commonj/sdo/ChangeSummaryImpl.h" -#include "commonj/sdo/ChangeSummaryBuilder.h" - - -#include <stack> - -namespace commonj -{ - namespace sdo - { - - -/** - * SDOSAX2Parser implements SAX2Parser. - * This class gets called back by the libxml library, and - * deals with the creation of data objects from XML. - */ - - class SDOSAX2Parser : public SAX2Parser - { - - - public: - - - SDOSAX2Parser( - DataFactoryPtr df, - const SDOXMLString& targetNamespaceURI, - DataObjectPtr& rootDO, - ParserErrorSetter* insetter); - - virtual ~SDOSAX2Parser(); - - virtual void startDocument(); - virtual void endDocument(); - - virtual bool setDO(DataObjectPtr newDO, - SDOXMLString& propertyName); - - virtual void setAttributes( - SDOXMLString& tns, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void handleOpenAttribute( - SDOXMLString& tns, - const char* propuri, - const char* propname, - const char* value); - - virtual const PropertyImpl* handleOpenType( - SDOXMLString& tns, - const SDOXMLString& localname, - DataObjectImpl* dob, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes, - SDOXMLString& xsitypeURI, - SDOXMLString& xsitypeName, - bool bToBeNull); - - virtual void startElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void endElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI); - - virtual void characters(const SDOXMLString& chars); - - friend std::istream& operator>>(std::istream& input, SDOSAX2Parser& parser); - friend std::istringstream& operator>>(std::istringstream& input, SDOSAX2Parser& parser); - - - private: - SDOXMLString targetNamespaceURI; - DataFactoryPtr dataFactory; - DataObjectPtr& rootDataObject; - - - std::stack<DataObjectPtr> dataObjectStack; - - DataObjectPtr currentDataObject; - bool isDataGraph; - bool newSequence; - - void setCurrentDataObject(DataObjectPtr currentDO); - const Type* currentDataObjectType; - const SDOXMLString& getSDOName(const Type& type, const SDOXMLString& localName); - - PropertySetting currentPropertySetting; - - void reset(); - - bool setNamespaces; - SAX2Namespaces documentNamespaces; - - bool changeSummary; - DataObjectPtr changeSummaryDO; - bool changeSummaryLogging; - bool dealingWithChangeSummary; - ChangeSummaryBuilder* csbuilder; - - bool ignoreEvents; - struct ignoretag - { - SDOXMLString localname; - SDOXMLString uri; - SDOXMLString prefix; - int tagCount; - } ignoreTag; - - - typedef std::map<SDOXMLString, DataObjectPtr> ID_MAP; - ID_MAP IDMap; - - class IDRef - { - public: - IDRef(DataObjectPtr dataobj, - const SDOXMLString& prop, - const SDOXMLString& val) - : dataObject(dataobj), property(prop), value(val) - {} - - DataObjectPtr dataObject; - SDOXMLString property; - SDOXMLString value; - }; - - typedef std::list<IDRef> ID_REFS; - ID_REFS IDRefs; - }; - } // End - namespace sdo -} // End - namespace commonj - -#endif //_SDOSAX2PARSER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSPI.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSPI.h deleted file mode 100644 index 1165514123..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSPI.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/ChangeSummary.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/SDO.h" - -#include "commonj/sdo/DASValues.h" diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSchemaSAX2Parser.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSchemaSAX2Parser.cpp deleted file mode 100644 index c9476ca867..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSchemaSAX2Parser.cpp +++ /dev/null @@ -1,1337 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 12:33:33 $ */ -#include "libxml/uri.h" -#include "commonj/sdo/SDOSchemaSAX2Parser.h" -#include "commonj/sdo/XSDPropertyInfo.h" -#include "commonj/sdo/XSDTypeInfo.h" -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/Logging.h" -#include "commonj/sdo/SDOUtils.h" - - -#include <stdio.h> - -extern "C" { - void sdo_error(void *ctx, const char *msg, ...); -} - -namespace commonj -{ - namespace sdo - { - - SDOSchemaSAX2Parser::SDOSchemaSAX2Parser(SchemaInfo& schemaInf, - ParserErrorSetter* insetter) - : schemaInfo(schemaInf) ,SAX2Parser(insetter) - { - bInSchema = false; - bInvalidElement = false; - bInInvalidContent = false; - bInvalidList = false; - inGroup = 0; - preParsing = true; - } - - SDOSchemaSAX2Parser::~SDOSchemaSAX2Parser() - { - } - - - void SDOSchemaSAX2Parser::storeStartElementEvent( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - // copy the event to as list for replay. - if (currentGroup) - { - currentGroup->events.insert( currentGroup->events.end(), - GroupEvent( - localname,prefix,URI,namespaces,attributes)); - } - - } - - void SDOSchemaSAX2Parser::storeEndElementEvent( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI) - { - // copy the event to as list for replay. - if (currentGroup) - { - currentGroup->events.insert(currentGroup->events.end(), - GroupEvent(localname,prefix,URI)); - } - - } - - void SDOSchemaSAX2Parser::replayEvents( - const SDOXMLString& uri, - const SDOXMLString& name, - bool isGroup) - { - for (int i=0;i< groupList.size(); i++) - { - if (groupList[i].isAttributeGroup != isGroup) - { - if ( - (!name.isNull() && name.equals(groupList[i].name)) - && - ( - (uri.isNull() && groupList[i].uri.isNull()) - || uri.equals(groupList[i].uri)) - ) - { - for (int j=0;j< groupList[i].events.size();j++) - { - if (groupList[i].events[j].isStartEvent) - { - startElementNs( - (const SDOXMLString&) - groupList[i].events[j].localname, - (const SDOXMLString&) - groupList[i].events[j].prefix, - (const SDOXMLString&) - groupList[i].events[j].URI, - (const SAX2Namespaces&) - groupList[i].events[j].namespaces, - (const SAX2Attributes&) - groupList[i].events[j].attributes); - } - else - { - endElementNs( - (const SDOXMLString&) - groupList[i].events[j].localname, - (const SDOXMLString&) - groupList[i].events[j].prefix, - (const SDOXMLString&) - groupList[i].events[j].URI); - } - } - return; - } - } - } - // no group found - if (setter) - { - char *msg = new char[strlen((const char*)name) + 32]; - if (msg) - { - sprintf(msg,"Use of undefined group %s", - (const char*)name); - setter->setError( msg ); - delete msg; - } - } - } - - // ============================================================================ - // endDocument - // ============================================================================ - void SDOSchemaSAX2Parser::endDocument() - { - preParsing=!preParsing; - schemaInfo.getSchemaNamespaces().empty(); - } - - - // ============================================================================ - // startElementNS - // ============================================================================ - void SDOSchemaSAX2Parser::startElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - LOGINFO_1( INFO,"SchemaParser:startElementNs:%s",(const char*)localname); - - if (URI.equalsIgnoreCase("http://www.w3.org/2001/XMLSchema")) - { - - /////////////////////////////////////////////////////////////////////// - // Handle schema - // Set the URI from the targetNamespace of the xsd:schema element - // Remember namespace mappings - // Create the root Type - /////////////////////////////////////////////////////////////////////// - - - if (localname.equalsIgnoreCase("schema")) - { - bInSchema = true; - // Handle namespace definitions - - - schemaInfo.getSchemaNamespaces().merge(namespaces); - - // Handle attributes - for (int i=0; i < attributes.size(); i++) - { - if (attributes[i].getName().equalsIgnoreCase("targetNamespace")) - { - schemaInfo.setTargetNamespaceURI(attributes[i].getValue()); - } - } - - - currentType.uri = schemaInfo.getTargetNamespaceURI(); - currentType.name = "RootType"; - currentType.localname="RootType"; - return; - - } // end schema handling - if (preParsing) - { - // we are now pre-parsing groups so that we can allow them to be - // defined after use. - - if (inGroup > 0) - { - if ( localname.equalsIgnoreCase("group") - || localname.equalsIgnoreCase("attributeGroup")) - { - inGroup++; - } - // check for a group reference first - // we are inside a group.... - storeStartElementEvent( - localname, - prefix, - URI, - namespaces, - attributes); - return; - } - - if ( localname.equalsIgnoreCase("group") - || localname.equalsIgnoreCase("attributeGroup")) - { - inGroup++; - int i; - for (i=0; i < attributes.size(); i++) - { - if (attributes[i].getName().equalsIgnoreCase("ref")) - { - // dont store references. - return; - } - } - - groupList.insert(groupList.begin(),GroupDefinition()); - currentGroup = &groupList[0]; - - if (localname.equalsIgnoreCase("group")) - currentGroup->isAttributeGroup = false; - else currentGroup->isAttributeGroup = true; - - for (i=0; i < attributes.size(); i++) - { - if (attributes[i].getName().equalsIgnoreCase("name")) - { - currentGroup->uri = schemaInfo.getTargetNamespaceURI(); - currentGroup->name = attributes[i].getValue(); - } - } - } - } // end of preParsing groups. - else - { - if (inGroup == 0) - { - // Handle <import> of other schema - if (localname.equalsIgnoreCase("import")) - { - // TODO - import and include treated equally for now - need to - // separate out the namespace info for import - startInclude(localname, prefix, URI, namespaces, attributes); - } - - // Handle <include> of other schema - else if (localname.equalsIgnoreCase("include")) - { - startInclude(localname, prefix, URI, namespaces, attributes); - } - - /////////////////////////////////////////////////////////////////////// - // Handle elements and attributes - // These become Properties of the current Type - // ?? Any special handling of global elements??? - /////////////////////////////////////////////////////////////////////// - else if (localname.equalsIgnoreCase("element")) - { - if (!bInInvalidContent) startElement(localname, prefix, URI, namespaces, attributes); - } - else if (localname.equalsIgnoreCase("attribute")) - { - if (!bInInvalidContent) startAttribute(localname, prefix, URI, namespaces, attributes); - } - else if (localname.equalsIgnoreCase("any") - || localname.equalsIgnoreCase("anyAttribute")) - { - // the type containing this is to be created as open - if (!bInInvalidContent) currentType.isOpen = true; - } - - - /////////////////////////////////////////////////////////////////////// - // Handle complexType - // These become new types - /////////////////////////////////////////////////////////////////////// - else if (localname.equalsIgnoreCase("complexType")) - { - if (!bInInvalidContent) startComplexType(localname, prefix, URI, namespaces, attributes); - } // end complexType handling - - else if (localname.equalsIgnoreCase("choice") - || localname.equalsIgnoreCase("sequence") - || localname.equalsIgnoreCase("all")) - { - if (!bInInvalidContent) startGroup(localname, prefix, URI, namespaces, attributes); - } // end Group handling - - else if ( localname.equalsIgnoreCase("group") - || localname.equalsIgnoreCase("attributeGroup")) - { - - int i; - for (i=0; i < attributes.size(); i++) - { - if (attributes[i].getName().equalsIgnoreCase("ref")) - { - XMLQName qname(attributes[i].getValue(), - schemaInfo.getSchemaNamespaces(), - namespaces); - if (qname.getURI().isNull()) - { - replayEvents(schemaInfo.getTargetNamespaceURI(), qname.getLocalName(), - localname.equalsIgnoreCase("group")); - } - else - { - replayEvents(qname.getURI(), qname.getLocalName(), - localname.equalsIgnoreCase("group")); - } - } - } - inGroup++; - // if theres no 'ref' then its a group definition, and we - // already pre-parsed it. - } - else if (localname.equalsIgnoreCase("list")) - { - startList( - localname, - prefix, - URI, - namespaces, - attributes); - } - - /////////////////////////////////////////////////////////////////////// - // Handle simpleType - // These become new types - /////////////////////////////////////////////////////////////////////// - else if (localname.equalsIgnoreCase("simpleType")) - { - if (!bInInvalidContent) startSimpleType(localname, prefix, URI, namespaces, attributes); - } // end complexType handling - - else if (localname.equalsIgnoreCase("restriction")) - { - if (!bInInvalidContent) startRestriction(localname, prefix, URI, namespaces, attributes); - } - - else if (localname.equalsIgnoreCase("extension")) - { - if (!bInInvalidContent) startExtension(localname, prefix, URI, namespaces, attributes); - } - // Handle <import> of other schema - else if (localname.equalsIgnoreCase("union")) - { - // TODO - unions not yet supported - bInInvalidContent = true; - if (setter) - { - setter->setError("Schema contains a union which is not yet implemented"); - } - } - } - } - } - else // not in schema - check for any extra namespaces - { - schemaInfo.getSchemaNamespaces().merge(namespaces); - } - - } - - - // ============================================================================ - // endElementNs - // ============================================================================ - void SDOSchemaSAX2Parser::endElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI) - { - LOGINFO_1( INFO,"SchemaParser:endElementNs:%s",(const char*)localname); - - if (URI.equalsIgnoreCase("http://www.w3.org/2001/XMLSchema")) - { - if (localname.equalsIgnoreCase("schema")) - { - bInSchema = false; - } - - /////////////////////////////////////////////////////////////////////// - // Handle complexType - // Pop the Type off our stack - /////////////////////////////////////////////////////////////////////// - - // We do not support unions, so all inside a union, plus the containing - // element are invalid for now. - // - if (!bInInvalidContent) - { - if (preParsing) - { - if (inGroup > 0) - { - if (localname.equalsIgnoreCase("group") - || localname.equalsIgnoreCase("attributeGroup")) - { - inGroup--; - if (inGroup < 0)inGroup = 0; // should never happen. - } - if (inGroup > 0) // still need to store end of group ref - { - storeEndElementEvent( - localname, - prefix, - URI); - } - } - } - else - { - if (localname.equalsIgnoreCase("group") - || localname.equalsIgnoreCase("attributeGroup")) - { - inGroup--; - if (inGroup < 0) inGroup = 0; - // outside of preparse, dont need to do anything. - } - else if (inGroup == 0) - { - if (localname.equalsIgnoreCase("complexType")) - { - if (!bInvalidElement) defineType(); - } // end complexType handling - else if (localname.equalsIgnoreCase("simpleType")) - { - if (!bInvalidElement) defineType(); - } - else if (localname.equalsIgnoreCase("schema")) - { - if (!bInvalidElement) defineType(); - } // end complexType handling - else if (localname.equalsIgnoreCase("element") - || localname.equalsIgnoreCase("attribute")) - { - // PropertyDefinition should now be complete - if (!bInvalidElement) defineProperty(); - } - else if (localname.equalsIgnoreCase("choice") - || localname.equalsIgnoreCase("sequence") - || localname.equalsIgnoreCase("all")) - { - if (!bInvalidElement) currentType.isMany = false; - } - else if (localname.equalsIgnoreCase("list")) - { - // PropertyDefinition should now be complete - if (!bInvalidList) defineProperty(); - bInvalidList = false; - } - bInvalidElement = false; - } - } - - } // bInUnsupportedContent - if (localname.equalsIgnoreCase("union")) - { - bInInvalidContent = false; - // the enclosing element is not useful - bInvalidElement = true; - } - } - - } - - // ============================================================================ - // used by startInclude to try to locate the file - // ============================================================================ - - int SDOSchemaSAX2Parser::startSecondaryParse( - SDOSchemaSAX2Parser& schemaParser, - SDOXMLString& schemaLocation) - { - int i,j,k; - SDOXMLString sl = getCurrentFile(); - - i = sl.lastIndexOf('/'); - j = sl.lastIndexOf('\\'); - if ((j > i) || (i < 0))i=j; - if (i>=0) - { - sl = sl.substring(0,i+1) + schemaLocation; - try { - if (-1 != schemaParser.parse((const char *)sl)) - return 1; - } - catch (SDORuntimeException e) - { - } - k = schemaLocation.lastIndexOf('/'); - j = schemaLocation.lastIndexOf('\\'); - if ((j > k) || (k < 0))k=j; - if (k>=0) - { - sl = sl.substring(0,i+1) + schemaLocation.substring(0,k+1); - try { - if (-1 != schemaParser.parse((const char *)sl)) - return 1; - } - catch (SDORuntimeException e) - { - } - } - } - try { - if (-1 != schemaParser.parse((const char *)schemaLocation)) - return 1; - } - catch (SDORuntimeException e) - { - } - k = schemaLocation.lastIndexOf('/'); - j = schemaLocation.lastIndexOf('\\'); - if ((j > k) || (k < 0))k=j; - if (k>=0) - { - sl = schemaLocation.substring(0,k+1); - try { - if (-1 != schemaParser.parse((const char *)sl)) - return 1; - } - catch (SDORuntimeException e) - { - } - } - return 0; - } - - - // ============================================================================ - // startInclude - // ============================================================================ - void SDOSchemaSAX2Parser::startInclude( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - LOGINFO_1( INFO,"SchemaParser:startInclude:%s",(const char*)localname); - - if (!bInSchema) return; - - SDOXMLString schemaLocation = attributes.getValue("schemaLocation"); - if (!schemaLocation.isNull()) - { - SchemaInfo schemaInf; - SDOSchemaSAX2Parser schemaParser(schemaInf, (ParserErrorSetter*)setter); - - if (startSecondaryParse(schemaParser,schemaLocation) == 0) - { - // - // we were not able to start the parse - return; - } - - - TypeDefinitionsImpl& typedefs = schemaParser.getTypeDefinitions(); - XMLDAS_TypeDefs types = typedefs.types; - XMLDAS_TypeDefs::iterator iter; - for (iter=types.begin(); iter != types.end(); iter++) - { - if ((*iter).second.name.equals("RootType") - && currentType.name.equals("RootType") - && (*iter).second.uri.equals(currentType.uri)) - { - // This must be true for an import/include to be - // legally positioned - - XMLDAS_TypeDefs::iterator find = typeDefinitions.types.find( - (*iter).first); - - std::list<PropertyDefinitionImpl>::iterator propit; - std::list<PropertyDefinitionImpl>::iterator currpropit; - bool found; - - for (propit = (*iter).second.properties.begin() ; - propit != (*iter).second.properties.end(); ++ propit) - { - found = false; - // do not merge properties whose names clash - for ( currpropit = currentType.properties.begin(); - currpropit != currentType.properties.end(); - ++currpropit) - { - if ((*currpropit).name.equals((*propit).name)) - { - found = true; - break; - } - } - if (!found) - { - currentType.properties.insert( - currentType.properties.end(),*propit); - } - } - } - else - { - typeDefinitions.types.insert(*iter); - } - } - } - } - - - // ============================================================================ - // startList - // ============================================================================ - void SDOSchemaSAX2Parser::startList( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - - LOGINFO_1( INFO,"SchemaParser:startList:%s",(const char*)localname); - - if (!bInSchema) return; - - // invent a property called "values" to hold the list - - SDOXMLString typeName = attributes.getValue("itemType"); - - if (typeName.isNull()) - { - // we do not support lists with no item type (yet). - if (setter) - { - setter->setError("Schema contains a list with no type - not supported"); - } - bInvalidList = true; - return; - } - - currentType.dataType = false; - currentType.isFromList = true; - - // attribute to set the list type - // define an internal property to hold the list - PropertyDefinitionImpl thisProperty; - thisProperty.name = "values"; - thisProperty.localname = "values"; - thisProperty.isContainment = false; - thisProperty.isElement=true; - thisProperty.isMany = true; - - XMLQName qname = resolveTypeName( - typeName, - namespaces, - thisProperty.typeUri, - thisProperty.typeName); - thisProperty.fullTypeName = typeName; - - setCurrentProperty(thisProperty); - - } - - // ============================================================================ - // startElement - // ============================================================================ - void SDOSchemaSAX2Parser::startElement( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - - if (!bInSchema) return; - - PropertyDefinitionImpl thisProperty; - - LOGINFO_1( INFO,"SchemaParser:startElement:%s",(const char*)localname); - - thisProperty.isElement = true; - - setName(attributes, - thisProperty.name, - thisProperty.localname); - - - setType(thisProperty, attributes, namespaces); - - SDOXMLString maxOccurs = attributes.getValue("maxOccurs"); - if (!maxOccurs.isNull()) - { - if (!maxOccurs.equalsIgnoreCase("1")) - { - thisProperty.isMany = true; - } - } - - // find aliases - thisProperty.aliases = attributes.getValue("aliasName"); - - // mark this as a substitution group. - // TODO - what about properties which have already been set into the tree, - // and might have a substitution? - - SDOXMLString substituteName = attributes.getValue("substitutionGroup"); - if (! substituteName.isNull()) - { - XMLQName qname = resolveTypeName( - substituteName, - namespaces, - thisProperty.substituteUri, - thisProperty.substituteName); - thisProperty.isSubstitute=true; - } - - // count the number of elements in the group - if (currentType.isMany) - { - currentType.groupElementCount++; - } - - setCurrentProperty(thisProperty); - - } - - // ============================================================================ - // startAttribute - // ============================================================================ - void SDOSchemaSAX2Parser::startAttribute( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - - LOGINFO_1( INFO,"SchemaParser:startAttribute:%s",(const char*)localname); - - if (!bInSchema) return; - - PropertyDefinitionImpl thisProperty; - - thisProperty.isElement = false; - - setName(attributes, - thisProperty.name, - thisProperty.localname); - - setType(thisProperty, attributes, namespaces); - - setCurrentProperty(thisProperty); - } - - // ============================================================================ - // startComplexType - // ============================================================================ - void SDOSchemaSAX2Parser::startComplexType( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - LOGINFO_1( INFO,"SchemaParser:startComplexType:%s",(const char*)localname); - - if (!bInSchema) return; - - TypeDefinitionImpl thisType; // set defaults - thisType.uri=schemaInfo.getTargetNamespaceURI(); - - setTypeName(thisType, attributes,namespaces); - - - - for (int i=0; i < attributes.size(); i++) - { - // If sdo:sequence="true" or mixed="true" it is sequenced - if ( (attributes[i].getUri().equalsIgnoreCase("commonj.sdo/xml") - && attributes[i].getName().equalsIgnoreCase("sequence")) - || attributes[i].getName().equalsIgnoreCase("mixed")) - { - if (attributes[i].getValue().equals("true")) - { - thisType.isSequenced = true; - } - } - // If abstract="true" it is abstract - else if (attributes[i].getName().equalsIgnoreCase("abstract")) - { - if (attributes[i].getValue().equals("true")) - { - thisType.isAbstract = true; - } - } - else if (attributes[i].getName().equalsIgnoreCase("aliasName")) - { - thisType.aliases = attributes[i].getValue(); - } - } - - setCurrentType(thisType); - } - - // ============================================================================ - // startSimpleType - // ============================================================================ - void SDOSchemaSAX2Parser::startSimpleType( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - LOGINFO_1( INFO,"SchemaParser:startSimpleType:%s",(const char*)localname); - - if (!bInSchema) return; - - TypeDefinitionImpl thisType; // set defaults - thisType.uri=schemaInfo.getTargetNamespaceURI(); - thisType.dataType = true; - - for (int i=0; i < attributes.size(); i++) - { - // If abstract="true" it is abstract - if (attributes[i].getName().equalsIgnoreCase("abstract")) - { - if (attributes[i].getValue().equals("true")) - { - thisType.isAbstract = true; - } - } - else if (attributes[i].getName().equalsIgnoreCase("aliasName")) - { - thisType.aliases = attributes[i].getValue(); - } - } - setTypeName(thisType, attributes,namespaces); - - // see if the type is going to be abstract... - - - setCurrentType(thisType); - } - - // ============================================================================ - // startRestriction - // ============================================================================ - void SDOSchemaSAX2Parser::startRestriction( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - LOGINFO_1( INFO,"SchemaParser:startRestriction:%s",(const char*)localname); - - if (!bInSchema) return; - - SDOXMLString base = attributes.getValue("base"); - if (!base.isNull()) - { - // Resolve typename to uri:name - XMLQName qname = resolveTypeName( - base, - namespaces, - currentType.parentTypeUri, - currentType.parentTypeName); - - currentType.isRestriction=true; - - - if(qname.getLocalName().equals("QName")) - { - currentType.isQName = true; - } - } - } - - // ============================================================================ - // startExtension - // ============================================================================ - void SDOSchemaSAX2Parser::startExtension( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - LOGINFO_1( INFO,"SchemaParser:startExtension:%s",(const char*)localname); - - if (!bInSchema) return; - - SDOXMLString base = attributes.getValue("base"); - if (!base.isNull()) - { - SDOXMLString typeUri; - SDOXMLString typeName; - // Resolve typename to uri:name - XMLQName qname = resolveTypeName( - base, - namespaces, - typeUri, - typeName); - - // If extending a simple type (an SDO DataType) we create a - // Property named "value" of this type rather than set the - // simple type as a base - currentType.isRestriction=false; - - // ?? Does this only apply within a <simpleContent> tag?? - if (typeUri.equalsIgnoreCase(Type::SDOTypeNamespaceURI.c_str())) - { - // here the type needs to be flagged so that - // we know to serialize this property as an element with - // just the contents <element>abc</element> rather than - // value=abc - - - PropertyDefinitionImpl thisProperty; - thisProperty.name = "value"; - thisProperty.localname = "value"; - thisProperty.typeUri = typeUri; - thisProperty.typeName = typeName; - thisProperty.fullTypeName = base; - thisProperty.isContainment = false; - thisProperty.isElement=true; - - currentType.isExtendedPrimitive= true; - - if(qname.getLocalName().equals("QName")) - { - thisProperty.isQName = true; - } - - setCurrentProperty(thisProperty); - defineProperty(); - } - else - { - currentType.parentTypeUri = typeUri; - currentType.parentTypeName = typeName; - } - } - } - - // ============================================================================ - // startGroup - // ============================================================================ - void SDOSchemaSAX2Parser::startGroup( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes) - { - LOGINFO_1( INFO,"SchemaParser:startGroup:%s",(const char*)localname); - - if (!bInSchema) return; - - SDOXMLString maxOccurs = attributes.getValue("maxOccurs"); - if (!maxOccurs.isNull()) - { - if (!maxOccurs.equalsIgnoreCase("1")) - { - currentType.isMany = true; - } - } - } - - // ============================================================================ - // setCurrentType - // ============================================================================ - void SDOSchemaSAX2Parser::setCurrentType(const TypeDefinitionImpl& type) - { - typeStack.push(currentType); - currentType = type; - } - - // ============================================================================ - // defineType - // ============================================================================ - void SDOSchemaSAX2Parser::defineType() - { - // Set this Type as sequenced of more than one element in a group definition - if (currentType.groupElementCount > 1) - { - currentType.isSequenced = true; - } - - SDOXMLString typeQname = TypeDefinitionsImpl::getTypeQName(currentType.uri, currentType.localname); - typeDefinitions.types[typeQname] = currentType; - - if (currentProperty.typeName.isNull()) - { - // Set the type name to the name of this type - currentProperty.typeUri = currentType.uri; - currentProperty.typeName = currentType.localname; - } - - if (typeStack.size() != 0) - { - currentType = typeStack.top(); - typeStack.pop(); - } - else - { - currentType = TypeDefinitionImpl(); - } - } - - // ============================================================================ - // setCurrentProperty - // ============================================================================ - void SDOSchemaSAX2Parser::setCurrentProperty(const PropertyDefinitionImpl& prop) - { - propertyStack.push(currentProperty); - currentProperty = prop; - } - - // ============================================================================ - // defineProperty - // ============================================================================ - void SDOSchemaSAX2Parser::defineProperty() - { - - if (currentProperty.typeName.isNull()) - { - // Set the type of this property to default (sdo:String) - currentProperty.typeUri = Type::SDOTypeNamespaceURI.c_str(); - currentProperty.typeName = "String"; - } - - if (currentProperty.localname.isNull()) - currentProperty.localname = currentProperty.typeName; - - // Set isMany if property isMany OR if containing type isMany - // NOTE: The above comment is as per the SDO2.0 spec however this does not - // work when serializing a sequence containing a single-valued property and - // then deserializing. - // currentProperty.isMany = currentProperty.isMany || currentType.isMany; - - - currentType.properties.insert(currentType.properties.end(), currentProperty); - if (propertyStack.size() != 0) - { - currentProperty = propertyStack.top(); - propertyStack.pop(); - } - else - currentProperty = PropertyDefinitionImpl(); - - } - - // ============================================================================ - // setDefault - // ============================================================================ - void SDOSchemaSAX2Parser::setDefault( - PropertyDefinitionImpl& thisProperty, - const SAX2Attributes& attributes) - { - thisProperty.defaultValue = attributes.getValue("fixed"); - if (!thisProperty.defaultValue.isNull()) - { - thisProperty.isReadOnly = true; - } - else - { - thisProperty.defaultValue = attributes.getValue("default"); - } - } - - // ============================================================================ - // setName - // ============================================================================ - void SDOSchemaSAX2Parser::setName( - const SAX2Attributes& attributes, - SDOXMLString& sdoname, - SDOXMLString& localname) - { - for (int i=0; i < attributes.size(); i++) - { - // Handle sdo: annotations - if (attributes[i].getUri().equalsIgnoreCase("commonj.sdo/xml")) - { - // sdo:name overrides the property name - if (attributes[i].getName().equalsIgnoreCase("name")) - { - sdoname = attributes[i].getValue(); - } - } - else - { - - if (attributes[i].getName().equalsIgnoreCase("name")) - { - localname = attributes[i].getValue(); - // If name is already set it must have been an - // override using sdo:name - if (sdoname.isNull()) - { - sdoname = localname; - } - } - } - } - - } - - // ============================================================================ - // setType - // ============================================================================ - void SDOSchemaSAX2Parser::setType( - PropertyDefinitionImpl& property, - const SAX2Attributes& attributes, - const SAX2Namespaces& namespaces) - { - property.fullLocalTypeName = attributes.getValue("type"); - if (!property.fullLocalTypeName.isNull()) - { - XMLQName qname(property.fullLocalTypeName,schemaInfo.getSchemaNamespaces(), namespaces); - if (qname.getLocalName().equals("IDREF") - || qname.getLocalName().equals("IDREFS")) - { - property.fullTypeName = attributes.getValue("commonj.sdo/xml","propertyType"); - - property.isIDREF = true; - property.isContainment = false; - - if (qname.getLocalName().equals("IDREFS")) - { - property.isMany = true; - } - } - else if (qname.getLocalName().equals("anyURI")) - { - property.fullTypeName = attributes.getValue("commonj.sdo/xml","propertyType"); - } - else if (qname.getLocalName().equals("ID")) - { - property.isID = true; - currentType.IDPropertyName = property.name; - } - - else - { - property.fullTypeName = attributes.getValue("commonj.sdo/xml","dataType"); - } - } - - else - { - property.fullLocalTypeName = attributes.getValue("ref"); - if (!property.fullLocalTypeName.isNull()) - { - property.isReference = true; - } - } - - if (property.fullTypeName.isNull()) - { - property.fullTypeName = property.fullLocalTypeName; - } - - if (!property.fullTypeName.isNull()) - { - // Resolve typename to uri:name - XMLQName qname = resolveTypeName( - property.fullTypeName, - namespaces, - property.typeUri, - property.typeName); - - if(qname.getLocalName().equals("QName")) - { - property.isQName = true; - } - } - - } - - // ============================================================================ - // setTypeName - // ============================================================================ - void SDOSchemaSAX2Parser::setTypeName( - TypeDefinitionImpl& type, - const SAX2Attributes& attributes, - const SAX2Namespaces& namespaces) - { - std::map<SDOXMLString,SDOXMLString>::iterator it; - setName(attributes, type.name, type.localname); - // If localname is not set it is anonymous so use the enclosing element name - - - if (type.localname.isNull()) - { - type.localname = currentProperty.name; - } - else - { - // check for an overriding url in the name - int i; - if ((i = type.localname.firstIndexOf(':')) > 0) - { - XMLQName qname(type.localname, - schemaInfo.getSchemaNamespaces(), - namespaces); - type.uri = qname.getURI(); - type.localname = qname.getLocalName(); - } - } - - // Set SDO name if not specified - if (type.name .isNull()) - { - type.name = type.localname ; - } - else - { - // check for an overriding url in the name - int i; - if ((i = type.name.firstIndexOf(':')) > 0) - { - XMLQName qname(type.name, - schemaInfo.getSchemaNamespaces(), - namespaces); - type.uri = qname.getURI(); - type.name = qname.getLocalName(); - } - } - } - - std::istream& operator>>(std::istream& input, SDOSchemaSAX2Parser& parser) - { - parser.stream(input); - - return input; - } - - std::istringstream& operator>>(std::istringstream& input, SDOSchemaSAX2Parser& parser) - { - parser.stream(input); - - return input; - } - - void SDOSchemaSAX2Parser::stream(std::istream& input) - { - // override to parse twice for groups - - stream_twice(input); - } - - - int SDOSchemaSAX2Parser::parse(const char* filename) - { - return parse_twice(filename); - } - - - - // ============================================================================ - // resolveTypeName - // ============================================================================ - XMLQName SDOSchemaSAX2Parser::resolveTypeName( - const SDOXMLString& fullTypeName, - const SAX2Namespaces& namespaces, - SDOXMLString& uri, - SDOXMLString& name) - { - XMLQName qname(fullTypeName, - schemaInfo.getSchemaNamespaces(), - namespaces); - - uri = qname.getURI(); - name = qname.getLocalName(); - - /////////////////////////////////////////////////////////////////////// - // Map the xsd types to SDO Types - /////////////////////////////////////////////////////////////////////// - if (qname.getURI().equalsIgnoreCase("http://www.w3.org/2001/XMLSchema")) - { - uri = Type::SDOTypeNamespaceURI.c_str(); - name = SDOUtils::XSDToSDO((const char*)(qname.getLocalName())); - if (name.isNull()) - { - name = "String"; - } - - } - - // Temporary hack: ChangeSummaryType is ChangeSummary in core - else if (qname.getURI().equalsIgnoreCase(Type::SDOTypeNamespaceURI.c_str())) - { - if (qname.getLocalName().equalsIgnoreCase("ChangeSummaryType")) - { - name = "ChangeSummary"; - } - - } - else if (qname.getURI().isNull()) - { - uri = schemaInfo.getTargetNamespaceURI(); - } - - return qname; - } - - } // End - namespace sdo - -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSchemaSAX2Parser.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSchemaSAX2Parser.h deleted file mode 100644 index c3cd319183..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOSchemaSAX2Parser.h +++ /dev/null @@ -1,232 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 12:33:33 $ */ - -#ifndef _SDOSCHEMASAX2PARSER_H_ -#define _SDOSCHEMASAX2PARSER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SAX2Parser.h" -#include "commonj/sdo/SchemaInfo.h" -#include "stack" -#include "commonj/sdo/TypeDefinitionsImpl.h" -#include "commonj/sdo/GroupDefinition.h" -#include "commonj/sdo/XMLQName.h" -#include "commonj/sdo/ParserErrorSetter.h" - -namespace commonj -{ - namespace sdo - { - - - -/** - * SDOSAX2Parser implements SAX2Parser. - * This class gets called back by the libxml library, and - * deals with the creation of metadata objects from XSD. - */ - - class SDOSchemaSAX2Parser : public SAX2Parser - { - - public: - - SDOSchemaSAX2Parser(SchemaInfo& schemaInfo, - ParserErrorSetter* insetter); - - virtual ~SDOSchemaSAX2Parser(); - - - virtual void startElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void endElementNs( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI); - - - virtual void stream(std::istream& input); - - virtual int parse(const char* filename); - - virtual void endDocument(); - - - const SDOXMLString& getTargetNamespaceURI() const {return schemaInfo.getTargetNamespaceURI();} - - TypeDefinitionsImpl& getTypeDefinitions() {return typeDefinitions;} - - friend std::istream& operator>>(std::istream& input, SDOSchemaSAX2Parser& parser); - friend std::istringstream& operator>>(std::istringstream& input, SDOSchemaSAX2Parser& parser); - - - private: - - // group handling. - - int inGroup; - bool preParsing; - GroupDefinition* currentGroup; - std::vector<GroupDefinition> groupList; - - bool bInSchema; // only parse when within a schema - bool bInvalidElement; // where element content is not valid - bool bInInvalidContent; // actually inside invalid content. - bool bInvalidList; // a list with no type - not supported. - - virtual void replayEvents( - const SDOXMLString& uri, - const SDOXMLString& name, - bool isGroup); - - virtual void storeStartElementEvent( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void storeEndElementEvent( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI - ); - - virtual int startSecondaryParse( - SDOSchemaSAX2Parser& schemaParser, - SDOXMLString& schemaLocation); - - virtual void startInclude( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void startElement( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void startAttribute( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void startComplexType( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void startSimpleType( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void startRestriction( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void startExtension( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void startGroup( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - virtual void startList( - const SDOXMLString& localname, - const SDOXMLString& prefix, - const SDOXMLString& URI, - const SAX2Namespaces& namespaces, - const SAX2Attributes& attributes); - - XMLQName resolveTypeName( - const SDOXMLString& fullTypeName, - const SAX2Namespaces& namespaces, - SDOXMLString& uri, - SDOXMLString& name); - - void setName( - const SAX2Attributes& attributes, - SDOXMLString& sdoname, - SDOXMLString& localname - ); - - void setType( - PropertyDefinitionImpl& property, - const SAX2Attributes& attributes, - const SAX2Namespaces& namespaces); - - void setTypeName( - TypeDefinitionImpl& type, - const SAX2Attributes& attributes, - const SAX2Namespaces& namespaces); - - void setDefault( - PropertyDefinitionImpl& thisProperty, - const SAX2Attributes& attributes); - - - SchemaInfo& schemaInfo; - - - PropertyDefinitionImpl currentProperty; - std::stack<PropertyDefinitionImpl> propertyStack; - void setCurrentProperty(const PropertyDefinitionImpl& property); - void defineProperty(); - - TypeDefinitionImpl currentType; - std::stack<TypeDefinitionImpl> typeStack; - void setCurrentType(const TypeDefinitionImpl& type); - void defineType(); - - TypeDefinitionsImpl typeDefinitions; - - - }; - - - } // End - namespace sdo -} // End - namespace commonj -#endif //_SDOSCHEMASAX2PARSER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOString.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOString.cpp deleted file mode 100644 index e291c38f76..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOString.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -// This class probably needs to inherit from RefCountingObject to ensure that objects of this type get cleaned up correctly. - -#include "commonj/sdo/SDOString.h" -#include <iostream> -// #include "libxml/globals.h" - -#include <ctype.h> -#include <string> - -// C6 duff compilation - see http://www.codecomments.com/message294418.html -using std::string; -#define std_string string - -namespace commonj -{ - namespace sdo - { - SDOString SDOString::toLower(unsigned int start, unsigned int length) - { - std::string result_string; - result_string.reserve(size()); - - for (unsigned int i = start; (i < size() && i < length); i++) - { - result_string[i] = tolower((*this)[i]); - } - - return SDOString(result_string); - } - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOString.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOString.h deleted file mode 100644 index 2452a7f3a7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOString.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -// #include "commonj/sdo/disable_warn.h" - -#ifndef _SDOString_H_ -#define _SDOString_H_ -#include "commonj/sdo/export.h" - -#include <iostream> -using std::string; - -namespace commonj -{ - namespace sdo - { - /** - * SDOString - utility class for string handling. - * Keeps the string handling local to one place, so we can - * replace it with a more NLS friendly version later. - */ - - class SDOString : public string - { - public: - SDO_API SDOString substr(size_t i = 0, size_t n = std::string::npos) const - { - return SDOString(string::substr(i, n)); - } - - SDO_API SDOString toLower(unsigned int start = 0, - unsigned int length = 0); - SDO_API SDOString(const string& str) : string(str) {} - // SDO_SPI SDOString(const std::string& str, size_t pos); - SDO_API SDOString(const std::string& str, size_t pos, size_t n = std::string::npos) - : string(str, pos, n) {} - SDO_API SDOString(const char* str) : string(str) {} - SDO_API SDOString() : string() {} - SDO_API virtual ~SDOString() {} - - - // User defined conversion so that the compiler will automatically convert SDOString to const char * - - // This is currently omitted because it can lead to confusion over - // which method should be called. For example, suppose we have two - // (overloaded) methods - // 1. void fn(const char* first, const char* second) - // 2. void fn(const SDOString& first, const SDOString& second) - // and we make a call passing a C style string as the first parameter and an SDOString - // as the second parameter. Currently, the first parameter is - // converted to an SDOString and the second method is called. If the - // conversion below is uncommented, then the compiler also has the - // option to convert the second parameter to a C style string and then - // call the first method - and it is ambiguous which of these to choose, - // leading to a compile time error. - - // operator const char*() const { return c_str(); } - - }; - } // End - namespace sdo -} // End - namespace commonj - -#endif // _SDOString_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOUtils.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOUtils.cpp deleted file mode 100644 index 8916400144..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOUtils.cpp +++ /dev/null @@ -1,228 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/03/16 12:21:39 $ */ - -#include "commonj/sdo/SDOUtils.h" - -using namespace std; - -// -// Utility methods to print a DataObject tree -// - -namespace commonj { - namespace sdo { - -////////////////////////////////////////////////////////////////////////// -// Conversions -////////////////////////////////////////////////////////////////////////// - - - std::map<std::string,std::string> SDOUtils::SdoToXsd; - - std::map<std::string,std::string> SDOUtils::XsdToSdo; - - bool SDOUtils::populated = false; - - bool SDOUtils::populate() - { - SDOUtils::XsdToSdo["ID"] = "String"; - SDOUtils::XsdToSdo["NCName"] = "String"; - SDOUtils::XsdToSdo["string"] = "String"; - SDOUtils::XsdToSdo["anyType"] = "DataObject"; - SDOUtils::XsdToSdo["int"] = "Integer"; - SDOUtils::XsdToSdo["integer"] = "Integer"; - SDOUtils::XsdToSdo["negativeInteger"] = "Integer"; - SDOUtils::XsdToSdo["nonNegativeInteger"] = "Integer"; - SDOUtils::XsdToSdo["positiveInteger"] = "Integer"; - SDOUtils::XsdToSdo["nonpositiveInteger"] = "Integer"; - SDOUtils::XsdToSdo["unsignedShort"] = "Integer"; - SDOUtils::XsdToSdo["unsignedInt"] = "Integer"; - SDOUtils::XsdToSdo["unsignedLong"] = "Long"; - SDOUtils::XsdToSdo["double"] = "Double"; - SDOUtils::XsdToSdo["short"] = "Short"; - SDOUtils::XsdToSdo["unsignedByte"] = "Short"; - SDOUtils::XsdToSdo["float"] = "Float"; - SDOUtils::XsdToSdo["boolean"] = "Boolean"; - SDOUtils::XsdToSdo["byte"] = "Byte"; - SDOUtils::XsdToSdo["base64Binary"] = "Bytes"; - SDOUtils::XsdToSdo["hexBinary"] = "Bytes"; - SDOUtils::XsdToSdo["anyURI"] = "URI"; - SDOUtils::XsdToSdo["QName"] = "URI"; - - SDOUtils::SdoToXsd["String"] = "string"; - SDOUtils::SdoToXsd["DataObject"] = "anyType"; - SDOUtils::SdoToXsd["Integer"] = "integer"; - SDOUtils::SdoToXsd["Long"] = "unsignedLong"; - SDOUtils::SdoToXsd["Double"] = "double"; - SDOUtils::SdoToXsd["Short"] = "short"; - SDOUtils::SdoToXsd["Float"] = "float"; - SDOUtils::SdoToXsd["Boolean"] = "boolean"; - SDOUtils::SdoToXsd["Byte"] = "byte"; - SDOUtils::SdoToXsd["Bytes"] = "base64Binary"; - SDOUtils::SdoToXsd["URI"] = "anyURI"; - - SDOUtils::populated = true; - return true; - } - - const char* SDOUtils::SDOToXSD(const char* sdoname) - { - if (sdoname == 0) - { - return SDOUtils::SdoToXsd["String"].c_str(); - } - if (!SDOUtils::populated) SDOUtils::populate(); - string& s = SDOUtils::SdoToXsd[sdoname]; - if (s.empty()) - { - return SDOUtils::SdoToXsd["String"].c_str(); - } - return s.c_str(); - } - - - const char* SDOUtils::XSDToSDO(const char* xsdname) - { - if (xsdname == 0) - { - return SDOUtils::XsdToSdo["string"].c_str(); - } - if (!SDOUtils::populated) SDOUtils::populate(); - string& s = SDOUtils::XsdToSdo[xsdname]; - if (s.empty()) - return SDOUtils::XsdToSdo["string"].c_str(); - return s.c_str(); - } - -////////////////////////////////////////////////////////////////////////// -// Print Tabs -////////////////////////////////////////////////////////////////////////// - - void SDOUtils::printTabs(ostream& out, unsigned int incr) - { - for (int ind=0; ind < incr; ind++) - { - out << " "; - } - } - -////////////////////////////////////////////////////////////////////////// -// Print a DatObject tree -////////////////////////////////////////////////////////////////////////// - - void SDOUtils::printDataObject(ostream& out, DataObjectPtr dataObject) - { - printDataObject(out, dataObject,0); - } - - - void SDOUtils::printDataObject(ostream& out ,DataObjectPtr dataObject, - unsigned int incr) - { - - out << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO" - << endl; - - if (!dataObject)return; - - const Type& dataObjectType = dataObject->getType(); - printTabs(out, incr); - out << "DataObject type: " - << dataObjectType.getURI() - << "#" << dataObjectType.getName() << endl; - - incr++; - - ////////////////////////////////////////////////////////////// - // Iterate over all the properties - ////////////////////////////////////////////////////////////// - PropertyList pl = dataObject->getInstanceProperties(); - for (int i = 0; i < pl.size(); i++) - { - printTabs(out, incr); - out << "Property: " << pl[i].getName() << endl; - - const Type& propertyType = pl[i].getType(); - - printTabs(out, incr); - - out << "Property Type: " - << propertyType.getURI() - << "#" << propertyType.getName() << endl; - - if (dataObject->isSet(pl[i])) - { - - /////////////////////////////////////////////////////////// - // For a many-valued property get the list of values - /////////////////////////////////////////////////////////// - if (pl[i].isMany()) - { - incr++; - DataObjectList& dol = dataObject->getList(pl[i]); - char cc[20]; - for (int j = 0; j <dol.size(); j++) - { - printTabs(out, incr); - // seems to be a bug in ostream? Will not print j - // as an integer. - out << "Value "; - sprintf(cc,"%d",j); - out << cc; - out << endl; - incr++; - printDataObject(out, dol[j],incr); - incr--; - out << endl; - } - incr--; - } // end IsMany - - ////////////////////////////////////////////////////////////////////// - // For a primitive data type print the value - ////////////////////////////////////////////////////////////////////// - else if (propertyType.isDataType()) - { - printTabs(out, incr); - out<< "Property Value: " - << dataObject->getCString(pl[i]) <<endl ; - } - - ////////////////////////////////////////////////////////////////////// - // For a dataobject print the do - ////////////////////////////////////////////////////////////////////// - else - { - incr++; - printDataObject(out, dataObject->getDataObject(pl[i]),incr); - incr--; - } - } - else - { - printTabs(out, incr); - out << "Property Value: not set" <<endl ; - } - - } - incr--; - out << "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do" << endl; - } - }; -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOUtils.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOUtils.h deleted file mode 100644 index 0fed291164..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOUtils.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/03/16 12:21:39 $ */ - -#ifndef _SDOUTILS_H_ -#define _SDOUTILS_H_ - -#include "commonj/sdo/DataObject.h" -#include <map> -#include <string> - -namespace commonj -{ - namespace sdo - { - - - /** - * SDOUtils will provide utility functions. - * The class currently holds a method to print data objects. - */ - - class SDOUtils - { - - public: - - static SDO_API void printDataObject(std::ostream& out, DataObjectPtr d); - static SDO_API const char* SDOToXSD(const char* sdoname); - static SDO_API const char* XSDToSDO(const char* xsdname); - - private: - - static bool populate(); - static bool populated; - - static void printDataObject(std::ostream& out, DataObjectPtr d, unsigned int incr); - static void printTabs(std::ostream& out, unsigned int incr); - - static std::map<std::string,std::string> XsdToSdo; - static std::map<std::string,std::string> SdoToXsd; - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOUTILS_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLBufferWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLBufferWriter.cpp deleted file mode 100644 index 6812ef166b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLBufferWriter.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SDOXMLBufferWriter.h" -#include "commonj/sdo/SDORuntimeException.h" - -namespace commonj -{ - namespace sdo - { - - - - - SDOXMLBufferWriter::SDOXMLBufferWriter(DataFactoryPtr dataFactory) - : SDOXMLWriter(dataFactory) - { - buf = xmlBufferCreate(); - if (buf == NULL) - { - SDO_THROW_EXCEPTION("SDOXMLBufferWriter", SDOXMLParserException, "xmlBufferCreate failed"); - } - setWriter(xmlNewTextWriterMemory(buf, 0)); - } - - SDOXMLBufferWriter::~SDOXMLBufferWriter() - { - freeWriter(); - xmlBufferFree(buf); - } - - SDOXMLString SDOXMLBufferWriter::getBuffer() - { - freeWriter(); - return buf->content; - } - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLBufferWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLBufferWriter.h deleted file mode 100644 index 489f44b86c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLBufferWriter.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SDOXMLBUFFERWRITER_H_ -#define _SDOXMLBUFFERWRITER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXMLWriter.h" - -namespace commonj -{ - namespace sdo - { - -/** - * SDOXMLBufferWriter extends SDOXMLWriter and writes a buffer. - */ - class SDOXMLBufferWriter : public SDOXMLWriter - { - - public: - - SDOXMLBufferWriter(DataFactoryPtr dataFactory = NULL); - virtual ~SDOXMLBufferWriter(); - - SDOXMLString getBuffer(); - private: - xmlBufferPtr buf; - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOXMLBUFFERWRITER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLFileWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLFileWriter.cpp deleted file mode 100644 index 09d80075c9..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLFileWriter.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SDOXMLFileWriter.h" - -namespace commonj -{ - namespace sdo - { - - - - - SDOXMLFileWriter::SDOXMLFileWriter(const char* xmlFile, DataFactoryPtr dataFactory) - : SDOXMLWriter(dataFactory) - { - setWriter(xmlNewTextWriterFilename(xmlFile, 0)); - } - - SDOXMLFileWriter::~SDOXMLFileWriter() - { - - } - - - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLFileWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLFileWriter.h deleted file mode 100644 index cddfb41293..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLFileWriter.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SDOXMLFILEWRITER_H_ -#define _SDOXMLFILEWRITER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXMLWriter.h" - - - -namespace commonj -{ - namespace sdo - { - -/** - * SDOXMLFileWriter extends SDOXMLWriter and writes a file. - */ - class SDOXMLFileWriter : public SDOXMLWriter - { - - public: - - SDOXMLFileWriter(const char* xmlFile, DataFactoryPtr dataFactory = NULL); - - virtual ~SDOXMLFileWriter(); - - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOXMLFILEWRITER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLStreamWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLStreamWriter.cpp deleted file mode 100644 index 00d76b1b6e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLStreamWriter.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#include "commonj/sdo/SDOXMLStreamWriter.h" -#include <sstream> - -namespace commonj -{ - namespace sdo - { - - - - - SDOXMLStreamWriter::SDOXMLStreamWriter(std::ostream& outXML, DataFactoryPtr dataFactory) - : SDOXMLBufferWriter(dataFactory), outXmlStream(outXML) - { - } - - SDOXMLStreamWriter::~SDOXMLStreamWriter() - { - } - - int SDOXMLStreamWriter::write(XMLDocumentPtr doc, int indent) - { - int rc = SDOXMLBufferWriter::write(doc, indent); - - // Now stream the buffer - outXmlStream << getBuffer(); - return rc; - } - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLStreamWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLStreamWriter.h deleted file mode 100644 index 92bbfa3cf0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLStreamWriter.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#ifndef _SDOXMLSTREAMWRITER_H_ -#define _SDOXMLSTREAMWRITER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXMLBufferWriter.h" -#include <iostream> - - -namespace commonj -{ - namespace sdo - { - -/** - * SDOXMLStreamWriter extends SDOXMLWriter and writes a stream. - */ - class SDOXMLStreamWriter : public SDOXMLBufferWriter - { - - public: - - SDOXMLStreamWriter(std::ostream& outXML, DataFactoryPtr dataFactory = NULL); - virtual ~SDOXMLStreamWriter(); - - int write(XMLDocumentPtr doc, int indent = -1); - private: - std::ostream& outXmlStream; - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOXMLSTREAMWRITER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLString.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLString.cpp deleted file mode 100644 index 248df58a7f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLString.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/01/23 16:39:24 $ */ - -#include "commonj/sdo/SDOXMLString.h" -#include <iostream> -#include "libxml/globals.h" - -#include <ctype.h> - -namespace commonj -{ - namespace sdo - { - - SDOXMLString::SDOXMLString() - : xmlForm(0) - { - } - - SDOXMLString::SDOXMLString(const xmlChar* xmlString) - { - xmlForm = xmlStrdup(xmlString); - } - - SDOXMLString::SDOXMLString(const char* localString) - { - xmlForm = xmlCharStrdup(localString); - } - - SDOXMLString::SDOXMLString(const SDOXMLString& str) - { - xmlForm = xmlStrdup(str.xmlForm); - } - - SDOXMLString::SDOXMLString(const xmlChar* str, int start, int len) - { - xmlForm = xmlStrsub(str, start, len); - } - - SDOXMLString& SDOXMLString::operator=(const SDOXMLString& str) - { - if (this != &str) - { - release(); - xmlForm = xmlStrdup(str.xmlForm); - } - return *this; - } - - SDOXMLString SDOXMLString::operator+(const SDOXMLString& str) const - { - xmlChar* newString = xmlStrncatNew(xmlForm, str.xmlForm, xmlStrlen(str.xmlForm)); - SDOXMLString retString(newString); - if (newString) - xmlFree(newString); - return retString; - } - - SDOXMLString& SDOXMLString::operator+=(const SDOXMLString& str) - { - xmlForm = xmlStrncat(xmlForm, str.xmlForm, xmlStrlen(str.xmlForm)); - return *this; - } - - SDOXMLString::~SDOXMLString() - { - release(); - } - - void SDOXMLString::release() - { - if (xmlForm) - xmlFree((void*)xmlForm); - } - - bool SDOXMLString::operator< (const SDOXMLString& str) const - { - if (xmlStrcmp(xmlForm, str.xmlForm) <0) - return true; - else - return false; - } - - bool SDOXMLString::operator==(const SDOXMLString& str) const - { - if (xmlStrEqual(xmlForm, str.xmlForm)) - return true; - else - return false; - } - - bool SDOXMLString::equals(const SDOXMLString& str) const - { - return equals(str.xmlForm); - } - - bool SDOXMLString::equals(const char* localString) const - { - return equals(SDOXMLString(localString)); - } - - - bool SDOXMLString::equals(const xmlChar* xmlString) const - { - if (xmlStrEqual(xmlForm, xmlString)) - return true; - else - return false; - } - - bool SDOXMLString::equalsIgnoreCase(const SDOXMLString& str) const - { - return equalsIgnoreCase(str.xmlForm); - } - - bool SDOXMLString::equalsIgnoreCase(const char* localString) const - { - return equalsIgnoreCase(SDOXMLString(localString)); - } - - - bool SDOXMLString::equalsIgnoreCase(const xmlChar* xmlString) const - { - if (xmlStrcasecmp(xmlForm, xmlString) == 0) - return true; - else - return false; - } - - - std::ostream& operator<<(std::ostream& output, const SDOXMLString& str) - { - if (str.xmlForm) - output << str.xmlForm; - return output; - } - - bool SDOXMLString::isNull() const - { - if (xmlForm) - return false; - else - return true; - } - - SDOXMLString SDOXMLString::toLower(unsigned int start, unsigned int length) - { - char* newString = new char[strlen(*this)+1]; - strcpy(newString, *this); - for (int i = start; (i<=(strlen(newString)) && i < length); i++) - { - newString[i] = tolower(newString[i]); - } - SDOXMLString retString(newString); - delete newString; - return retString; - } - - int SDOXMLString::firstIndexOf(const char ch) const - { - const xmlChar* loc = xmlStrchr(xmlForm, ch); - if (loc == 0) - { - return -1; - } - - return int(loc-xmlForm); - } - - int SDOXMLString::lastIndexOf(const char ch) const - { - const xmlChar* index = 0; - const xmlChar* loc = xmlStrchr(xmlForm, ch); - while (loc !=0) - { - index = loc; - loc = xmlStrchr(loc+1, ch); - } - - if (index == 0) - return -1; - - return int(index-xmlForm); - } - - SDOXMLString SDOXMLString::substring(int start, int length) const - { - if (length >0) - { - return xmlStrsub(xmlForm, start, length); - } - else - return SDOXMLString(); - } - - SDOXMLString SDOXMLString::substring(int start) const - { - - return xmlStrsub(xmlForm, start, xmlStrlen(xmlForm) - start); - } - - - } // End - namespace sdo -} // End - namespace commonj - - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLString.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLString.h deleted file mode 100644 index 9cbf48be1d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLString.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/disable_warn.h" - -#ifndef _SDOXMLString_H_ -#define _SDOXMLString_H_ -#include "commonj/sdo/export.h" - -#include <libxml/xmlstring.h> -#include <iostream> - -namespace commonj -{ - namespace sdo - { - /** - * SDOXMLString - utility class for string handling. - * Keeps the string handling local to one place, so we can - * replace it with a more NLS friendly version later. - * Many places within the core should use this too instead - * of allocated char* buffers. (DataObject etc...) - */ - - class SDOXMLString - { - public: - SDO_SPI SDOXMLString(); - SDO_SPI SDOXMLString(const xmlChar* xmlString); - SDO_SPI SDOXMLString(const char* localString); - SDO_SPI SDOXMLString(const SDOXMLString& str); - SDO_SPI SDOXMLString(const xmlChar* str, int start, int len); - SDO_SPI virtual ~SDOXMLString(); - - SDO_SPI SDOXMLString& operator=(const SDOXMLString& str); - SDO_SPI SDOXMLString operator+(const SDOXMLString& str) const; - SDO_SPI SDOXMLString& operator+=(const SDOXMLString& str); - - - SDO_SPI bool operator== (const SDOXMLString& str) const; - SDO_SPI bool equals(const xmlChar* xmlString) const; - SDO_SPI bool equals(const char* localString) const; - SDO_SPI bool equals(const SDOXMLString& str) const; - SDO_SPI bool equalsIgnoreCase(const xmlChar* xmlString) const; - SDO_SPI bool equalsIgnoreCase(const char* localString) const; - SDO_SPI bool equalsIgnoreCase(const SDOXMLString& str) const; - - SDO_SPI bool operator< (const SDOXMLString& str) const; - - SDO_SPI operator const char*() const {return (const char*) xmlForm;} - SDO_SPI operator const xmlChar*() const {return xmlForm;} - - SDO_SPI friend std::ostream& operator<<(std::ostream& output, const SDOXMLString& str); - - SDO_SPI bool isNull() const; - - SDO_SPI SDOXMLString toLower( - unsigned int start = 0, - unsigned int length = 0); - - - SDO_SPI int firstIndexOf(const char ch) const; - SDO_SPI int lastIndexOf(const char ch) const; - SDO_SPI SDOXMLString substring(int start, int length) const; - SDO_SPI SDOXMLString substring(int start) const; - private : - xmlChar* xmlForm; - void release(); - }; - } // End - namespace sdo -} // End - namespace commonj - - - -#endif // _SDOXMLString_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.cpp deleted file mode 100644 index baf3a762cb..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.cpp +++ /dev/null @@ -1,1171 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/03/07 15:35:56 $ */ - -#include "commonj/sdo/SDOXMLWriter.h" -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/SDOString.h" -#include "iostream" -using namespace::std; -#include "commonj/sdo/DASProperty.h" -#include "commonj/sdo/XSDPropertyInfo.h" -#include "commonj/sdo/XSDTypeInfo.h" -#include "commonj/sdo/ChangeSummary.h" -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/XMLQName.h" -#include "commonj/sdo/DataObjectImpl.h" - -namespace commonj -{ - namespace sdo - { - - - - - SDOXMLWriter::SDOXMLWriter( - DataFactoryPtr dataFact) - : dataFactory(dataFact) - { - - } - - SDOXMLWriter::~SDOXMLWriter() - { - freeWriter(); - } - - void SDOXMLWriter::setWriter(xmlTextWriterPtr textWriter) - { - writer = textWriter; - } - - void SDOXMLWriter::freeWriter() - { - if (writer != NULL) - { - xmlFreeTextWriter(writer); - writer = NULL; - } - } - - int SDOXMLWriter::write(XMLDocumentPtr doc, int indent) - { - if (!doc) - { - return 0; - } - - if (writer == NULL) - { - // Throw exception - return -1; - } - - int rc = 0; - - //namespaceUriStack.empty(); - //namespaceUriStack.push(SDOXMLString()); - //namespaces.empty(); - //namespaceStack.push(namespaces); - namespaceMap.empty(); - - if (indent >= 0) - { - xmlTextWriterSetIndent(writer, 1); - if (indent > 0) - { - char * chars = new char[indent+1]; - for (int i=0;i<indent;i++)chars[i] = ' '; - chars[indent] = 0; - xmlTextWriterSetIndentString(writer, SDOXMLString(chars)); - delete chars; - } - else - { - xmlTextWriterSetIndentString(writer, SDOXMLString("")); - } - } - - if (doc->getXMLDeclaration()) - { - rc = xmlTextWriterStartDocument(writer, doc->getXMLVersion(), doc->getEncoding(), NULL); - if (rc < 0) { - SDO_THROW_EXCEPTION("write", SDOXMLParserException, "xmlTextWriterStartDocument failed"); - } - } - - DataObjectPtr root = doc->getRootDataObject(); - if (root) - { - bool writeXSIType = false; - // For the root DataObject we need to determine the element name - SDOXMLString elementURI = doc->getRootElementURI(); - if (elementURI.isNull() || elementURI.equals("")) - { - elementURI = root->getType().getURI(); - } - SDOXMLString elementName = doc->getRootElementName(); - if (elementName.isNull() || elementName.equals("")) - { - elementName = root->getType().getName(); - elementName = elementName.toLower(0,1); - writeXSIType = true; - } - - writeDO(root, elementURI, elementName, true, true); - } - rc = xmlTextWriterEndDocument(writer); - if (rc < 0) { - SDO_THROW_EXCEPTION("write", SDOXMLParserException, "xmlTextWriterEndDocument failed"); - return rc; - } - - xmlTextWriterFlush(writer); - freeWriter(); - - return rc; - } - - ////////////////////////////////////////////////////////////////////////// - // Write Change Summary attributes - ////////////////////////////////////////////////////////////////////////// - - void SDOXMLWriter::handleChangeSummaryAttributes( - ChangeSummaryPtr cs, - DataObjectPtr dol) - { - int rc; - - SettingList& sl = cs->getOldValues(dol); - if (sl.size() == 0) - { - // no attributes - return; - } - for (int j=0;j< sl.size(); j++) - { - try { - - if (sl.get(j)->getProperty().isMany()) - { - // manys are elements - continue; - } - - if (sl.get(j)->getProperty().getType().isDataType()) - { - // data types are OK - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString(sl.get(j)->getProperty().getName()), - SDOXMLString(sl.get(j)->getCStringValue())); - } - else - { - DataObjectPtr dob = sl.get(j)->getDataObjectValue(); - if (dob) - { - if (cs->isDeleted(dob)) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString(sl.get(j)->getProperty().getName()), - SDOXMLString(cs->getOldXpath(dob))); - } - else - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString(sl.get(j)->getProperty().getName()), - SDOXMLString(dob->objectToXPath())); - } - } - else - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString(sl.get(j)->getProperty().getName()), - SDOXMLString("")); - } - } - } - catch (SDORuntimeException e) - { - // ignore this attribute - } - } - } - - ////////////////////////////////////////////////////////////////////////// - // Write Change Summary elements - ////////////////////////////////////////////////////////////////////////// - - void SDOXMLWriter::handleChangeSummaryElements( - ChangeSummaryPtr cs, - DataObjectPtr dob) - { - int rc; - - SettingList& sl = cs->getOldValues(dob); - - if (sl.size() == 0) - { - // there are no setting for this element. - return; - } - - for (int j=0;j< sl.size(); j++) - { - try - { - - // single values will have been covered by the attributes. - if (!sl.get(j)->getProperty().isMany()) continue; - - if (sl.get(j)->getProperty().getType().isDataType()) - { - - rc = xmlTextWriterWriteElement( - writer, - SDOXMLString(sl.get(j)->getProperty().getName()), - SDOXMLString(sl.get(j)->getCStringValue())); - - } // if datatype - else - { - DataObjectPtr dob2 = sl.get(j)->getDataObjectValue(); - if (!dob2) - { - continue; - } - if (cs->isDeleted(dob2)) - { - handleChangeSummaryDeletedObject(sl.get(j)->getProperty().getName(), cs,dob2); - } - else - { - rc = xmlTextWriterStartElement( - writer, - SDOXMLString(sl.get(j)->getProperty().getName())); - rc = xmlTextWriterWriteAttribute( - writer, - SDOXMLString("sdo:ref"), - SDOXMLString(dob2->objectToXPath())); - rc = xmlTextWriterEndElement( - writer); - } - } - } - catch (SDORuntimeException e) - { - // ignore this element - } - } // for - } - - - ////////////////////////////////////////////////////////////////////////// - // Write a deleted object and all its props - ////////////////////////////////////////////////////////////////////////// - - void SDOXMLWriter::handleChangeSummaryDeletedObject( - const char* name, - ChangeSummaryPtr cs, - DataObjectPtr dob) - { - - int rc, k; // TODO error handling - - SettingList& sl = cs->getOldValues(dob); - - rc = xmlTextWriterStartElement( - writer, - SDOXMLString(name)); - - if (sl.size() == 0) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdo:ref"), - SDOXMLString(cs->getOldXpath(dob))); - rc = xmlTextWriterEndElement(writer); - return; - } - - - try - { - // print single valued datatypes as attributes - - for (int j=0;j< sl.size(); j++) - { - //if (!sl.get(j)->isSet()) - //{ - // // unset properties dont need recording - ah but they do! - // - // continue; - //} - if ( sl.get(j)->getProperty().isMany()) - { - // manys are elements - continue; - } - if (!sl.get(j)->getProperty().getType().isDataType()) - { - // data objects are element in a deleted data object. - continue; - } - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString(sl.get(j)->getProperty().getName()), - SDOXMLString(sl.get(j)->getCStringValue())); - - } // for attributes - - - // now we are onto the many-values, - // and dataobject single values. - // - // handle deletions within deletions in reverse order, so they match the - // deletion records above. - - for (k=sl.size()-1;k>=0; k--) - { - - if ( !sl.get(k)->getProperty().getType().isDataType() && - sl.get(k)->getProperty().isMany()) - { - // its a dataobject type - DataObjectPtr dob2 = sl.get(k)->getDataObjectValue(); - if (!dob2) continue; - if (!cs->isDeleted(dob2)) continue; - handleChangeSummaryDeletedObject(sl.get(k)-> - getProperty().getName(),cs,dob2); - } - } // for attributes - - for (k=0;k< sl.size(); k++) - { - - if ( !sl.get(k)->getProperty().getType().isDataType()) - { - if (sl.get(k)->getProperty().isMany()) continue; - // its a single valued dataobject type - - DataObjectPtr dob2 = sl.get(k)->getDataObjectValue(); - if (!dob2) continue; - if (!cs->isDeleted(dob2)) continue; - handleChangeSummaryDeletedObject(sl.get(k)-> - getProperty().getName(),cs,dob2); - - } - else - { - if ( !sl.get(k)->getProperty().isMany()) continue; - - // could only be many valued data type - - rc = xmlTextWriterWriteElement(writer, - SDOXMLString(sl.get(k)->getProperty().getName()), - SDOXMLString(sl.get(k)->getCStringValue())); - } - } // for attributes - } - catch (SDORuntimeException e) - { - // ignore - and write the end-element - } - - rc = xmlTextWriterEndElement(writer); - } - - - ////////////////////////////////////////////////////////////////////////// - // Write the list of elements of a change summary - ////////////////////////////////////////////////////////////////////////// - - void SDOXMLWriter::handleSummaryChange( - const SDOXMLString& elementName, - ChangeSummaryPtr cs, - DataObjectPtr dob) - { - int rc; - DataObject* temp = dob; - const char* name; - try - { - name = temp->getContainmentProperty().getName(); - } - catch (SDORuntimeException e) - { - // This could be a root, and have no name. - name = 0; - } - - if (name == 0) - { - rc = xmlTextWriterStartElement( - writer, - elementName); - } - else - { - rc = xmlTextWriterStartElement( - writer, - SDOXMLString(name)); - } - - if (rc != 0) - { - // failed to write an element - return; - } - - try - { - name = temp->objectToXPath(); - } - catch (SDORuntimeException e) - { - name = 0; - } - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdo:ref"), - SDOXMLString(name)); - - handleChangeSummaryAttributes(cs, temp); - - handleChangeSummaryElements(cs, temp); - - rc = xmlTextWriterEndElement(writer); - - } - - ////////////////////////////////////////////////////////////////////////// - // Write a Change Summary - ////////////////////////////////////////////////////////////////////////// - - void SDOXMLWriter::handleChangeSummary( - const SDOXMLString& elementName, - ChangeSummaryPtr cs) - { - int i; - int rc; - - ChangedDataObjectList& changedDOs = cs->getChangedDataObjects(); - rc = xmlTextWriterStartElementNS(writer, - SDOXMLString("sdo"), SDOXMLString("changeSummary"), SDOXMLString(Type::SDOTypeNamespaceURI.c_str())); - if (rc != 0) return; - if (cs->isLogging()) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("logging"), - SDOXMLString("true")); - } - - if (changedDOs.size() > 0) - { - - // write the creates/deletes in the order they - // happened, as elements. - - for (i=0;i< changedDOs.size();i++) - { - if (cs->isCreated(changedDOs[i]) - && changedDOs.getType(i) == ChangedDataObjectList::Create) - { - // TODO - should work out if theres a IDREF here - // TODO - can we have more than one create like this? - try - { - rc = xmlTextWriterWriteElement(writer, - SDOXMLString("create"), - SDOXMLString(changedDOs[i]->objectToXPath())); - } - catch (SDORuntimeException e) - { - // The object was not in our tree - we ignore it. - } - } - if (cs->isDeleted(changedDOs[i]) - && changedDOs.getType(i) == ChangedDataObjectList::Delete) - { - // TODO - should work out if theres a IDREF here - try - { - rc = xmlTextWriterWriteElement(writer, - SDOXMLString("delete"), - SDOXMLString(cs->getOldXpath(changedDOs[i]))); - } - catch (SDORuntimeException e) - { - // The object was not in the deleted list - we ignore it. - } - } - } - - - for (i=0;i< changedDOs.size();i++) - { - if (cs->isModified(changedDOs[i])) - { - handleSummaryChange(elementName, cs, changedDOs[i]); - } - } - - } - rc = xmlTextWriterEndElement(writer); - } - - ////////////////////////////////////////////////////////////////////////// - // Add to namespaces - ////////////////////////////////////////////////////////////////////////// - - void SDOXMLWriter::addToNamespaces(DataObjectImpl* dob) - { - std::map<SDOXMLString,SDOXMLString>::iterator it; - SDOXMLString uri = dob->getType().getURI(); - - it = namespaceMap.find(uri); - if (it == namespaceMap.end()) - { - char buf[20]; - sprintf(buf,"%d",++spacescount); - SDOXMLString s = SDOXMLString("tns") + buf; - namespaceMap.insert(make_pair(uri,s)); - } - - PropertyList pl = dob->getInstanceProperties(); - for (int i = 0; i < pl.size(); i++) - { - if (!dob->isSet(pl[i]))continue; - - if (pl[i].isMany()) - { - if (!pl[i].getType().isDataType()) - { - DataObjectList& dl = dob->getList(pl[i]); - for (int k=0;k< dl.size() ;k++) - { - DataObjectImpl* d = (DataObjectImpl*)(DataObject*)dl[k]; - if (d != 0)addToNamespaces(d); - } - } - } - else - { - if (!pl[i].getType().isDataType()) - { - DataObjectImpl* d = (DataObjectImpl*)(DataObject*)dob->getDataObject(pl[i]); - if (d != 0)addToNamespaces(d); - } - else - { - XSDPropertyInfo* pi = getPropertyInfo(dob->getType(), pl[i]); - if (pi) - { - PropertyDefinitionImpl propdef; - propdef = pi->getPropertyDefinition(); - if (propdef.isElement)continue; - if (!propdef.isQName)continue; - - SDOXMLString propertyValue = (dob->getCString(pl[i])); - XMLQName qname(propertyValue); - - it = namespaceMap.find(qname.getURI()); - if (it == namespaceMap.end()) - { - char buf[20]; - sprintf(buf,"%d",++spacescount); - SDOXMLString s = SDOXMLString("tns") + buf; - namespaceMap.insert(make_pair(qname.getURI(),s)); - } - } - } - } - } - } - - - - - ////////////////////////////////////////////////////////////////////////// - // Write a DatObject tree - ////////////////////////////////////////////////////////////////////////// - - int SDOXMLWriter::writeDO( - DataObjectPtr dataObject, - const SDOXMLString& elementURI, - const SDOXMLString& elementName, - bool writeXSIType, - bool isRoot) - { - - int rc; - - if (dataObject == 0) - return 0; - - - //SDOXMLString uri; - //if (!elementURI.equals(namespaceUriStack.top())) - //{ - // uri = elementURI; - // namespaceUriStack.push(elementURI); - //} - - const Type& dataObjectType = dataObject->getType(); - - ////////////////////////////////////////////////////////////////////////// - // suppose its a primitive type - just write the value - ////////////////////////////////////////////////////////////////////////// - if (dataObjectType.isDataType()) - { - if (dataObject->isNull("")) - { - rc = xmlTextWriterStartElementNS(writer, - NULL, elementName, elementURI); - if (rc < 0) - { - SDO_THROW_EXCEPTION("writeDO", - SDOXMLParserException, - "xmlTextWriterStartElementNS failed"); - } - rc = xmlTextWriterWriteAttribute(writer, - (const unsigned char*)"xsi:nil", - (const unsigned char*)"true"); - rc = xmlTextWriterEndElement(writer); - } - else - { - xmlTextWriterWriteElement( - writer, - elementName, - SDOXMLString(dataObject->getCString(""))); - } - - // need to pop stacks before returning - //if (!uri.isNull()) - //{ - // namespaceUriStack.pop(); - //} - return 0; - - } - - - //namespaceStack.push(namespaces); - - - if (isRoot) - { - tnsURI=elementURI; - if (elementURI.equals("")) { - rc = xmlTextWriterStartElementNS(writer, NULL, elementName, NULL); - } - else - { - rc = xmlTextWriterStartElementNS(writer, NULL, elementName, elementURI); - } - if (rc < 0) { - SDO_THROW_EXCEPTION("writeDO", SDOXMLParserException, "xmlTextWriterStartElementNS failed"); - } - } - else - { - //xmlTextWriterWriteString(writer,SDOXMLString("\n")); - - SDOXMLString theName=elementName; - - if (!elementURI.isNull() && !elementURI.equals(tnsURI) && !elementURI.equals("")) - { - std::map<SDOXMLString,SDOXMLString>::iterator it = namespaceMap.find(elementURI); - if (it != namespaceMap.end()) - { - theName = (*it).second; - theName += ":"; - theName += elementName; - } - } - - rc = xmlTextWriterStartElementNS(writer, NULL, theName, NULL); - if (rc < 0) { - SDO_THROW_EXCEPTION("writeDO", SDOXMLParserException, "xmlTextWriterStartElementNS failed"); - } - } - - - if (writeXSIType) - { - rc = xmlTextWriterWriteAttributeNS(writer, - SDOXMLString("xsi"), SDOXMLString("type"), - NULL, - /*SDOXMLString("http://www.w3.org/2001/XMLSchema-instance"),*/ - SDOXMLString(dataObject->getType().getName())); - if (isRoot) - { - namespaceMap.insert(make_pair( - SDOXMLString("http://www.w3.org/2001/XMLSchema-instance"), - SDOXMLString("xsi"))); - - } - } - - - if (isRoot) - { - std::map<SDOXMLString,SDOXMLString>::iterator it = namespaceMap.find(elementURI); - if (it == namespaceMap.end()) - { - SDOXMLString s = SDOXMLString("tns"); - namespaceMap.insert(make_pair(elementURI,s)); - } - DataObjectImpl* d = (DataObjectImpl*)(DataObject*)dataObject; - spacescount = 1; - addToNamespaces(d); - -///////////////////////////////////////////////////////////////////////////////////// -// // build the namespace map, and write the items out at the -// // top of the tree. -// int spacecount = 0; -// DataObjectImpl* d = (DataObjectImpl*)(DataObject*)dataObject; -// if (d != 0) -// { -// TypeList types = (d->getDataFactory())->getTypes(); -// std::map<SDOXMLString,SDOXMLString>::iterator it; -// -// for (int i = 0; i<types.size(); i++) -// { -// SDOXMLString uri = types[i].getURI(); -// if (uri.equals(Type::SDOTypeNamespaceURI)) continue; -// std::map<SDOXMLString,SDOXMLString>::iterator it = namespaceMap.find(uri); -// if (it == namespaceMap.end()) -// { -// char buf[4]; -// if (!elementURI.isNull()) -// { -// if (elementURI.equals(uri)) -// { -// SDOXMLString s = SDOXMLString("tns"); -// namespaceMap.insert(make_pair(uri,s)); -// } -// else -// { -// sprintf(buf,"%d",++spacecount); -// SDOXMLString s = SDOXMLString("tns") + buf; -// namespaceMap.insert(make_pair(uri,s)); -// } -// } -// } -// } -//////////////////////////////////////////////////////////////////////////////////// - - for (it = namespaceMap.begin();it != namespaceMap.end(); ++it) - { - if ((*it).first.equals("")) continue; - SDOXMLString space = SDOXMLString("xmlns:") + (*it).second; - rc = xmlTextWriterWriteAttribute(writer, - space, (*it).first); - } - } - - - ////////////////////////////////////////////////////////////////////////// - // write out the type if the xsi:type if the containing type is open - // and the property is not one of the declared properties - ////////////////////////////////////////////////////////////////////////// - DataObject* dob = dataObject; - DataObjectImpl* cont = - ((DataObjectImpl*)dob)->getContainerImpl(); - if (cont != 0) - { - if (cont->getType().isOpenType()) - { - //if (dataObject->getType().getURI() != 0) - //{ - // std::string value = - // dataObject->getType().getURI(); - // value += ":"; - // value += dataObject->getType().getName(); - // rc = xmlTextWriterWriteAttribute(writer, - // (const unsigned char*)"xsi:type", - // (const unsigned char*)value.c_str()); - //} - //else - //{ - if (cont->getTypeImpl().getPropertyImpl(elementName) == 0) - { - rc = xmlTextWriterWriteAttribute(writer, - (const unsigned char*)"xsi:type", - (const unsigned char*)dataObject->getType().getName()); - } - } - } - - // write nil if required - if (dataObject->isNull("")) - { - rc = xmlTextWriterWriteAttribute(writer, - (const unsigned char*)"xsi:nil", - (const unsigned char*)"true"); - } - - - ////////////////////////////////////////////////////////////////////////// - // Iterate over all the properties to find attributes - ////////////////////////////////////////////////////////////////////////// - int i; - int j = 1; - PropertyList pl = dataObject->getInstanceProperties(); - for (i = 0; i < pl.size(); i++) - { - if (dataObject->isSet(pl[i])) - { - SDOXMLString propertyName(pl[i].getName()); - XSDPropertyInfo* pi = getPropertyInfo(dataObjectType, pl[i]); - PropertyDefinitionImpl propdef; - if (pi) - { - propdef = pi->getPropertyDefinition(); - propertyName = propdef.localname; - } - - // Elements are written as <element> - if (propdef.isElement) - continue; - - // Many-valued properties are written as <element> - if (pl[i].isMany()) - continue; - - // if (pl[i].isContainment()) - // continue; - - ////////////////////////////////////////////////////////////////////// - // Non contained properties become attributes - ////////////////////////////////////////////////////////////////////// - const Type& propertyType = pl[i].getType(); - - if (propertyType.isDataType()) - { - SDOXMLString propertyValue = (dataObject->getCString(pl[i])); - if (pi && pi->getPropertyDefinition().isQName) - { - XMLQName qname(propertyValue); - - //{ - //const SDOXMLString* prefix = namespaces.findPrefix(qname.getURI()); - //if (prefix == 0) - //{ - // char buffer[100]; - // SDOXMLString pref = "tns"; - // sprintf(buffer, "%d", i); - // pref += buffer; - // namespaces.add(pref, qname.getURI()); - // prefix = namespaces.findPrefix(qname.getURI()); - //} - - //if (prefix != 0 && !(*prefix).equals("")) - - std::map<SDOXMLString,SDOXMLString>::iterator it = namespaceMap.find(qname.getURI()); - if (it != namespaceMap.end()) - { - propertyValue = (*it).second + ":" + qname.getLocalName(); - } - else - { - char buffer[20]; - SDOXMLString pref = "tnss"; - sprintf(buffer, "%d", j++); - pref += buffer; - rc = xmlTextWriterWriteAttributeNS(writer, - SDOXMLString("xmlns"), pref, NULL, qname.getURI()); - propertyValue = pref + ":" + qname.getLocalName(); - } - - } - rc = xmlTextWriterWriteAttribute(writer, - propertyName, propertyValue); - } - else - { - // Handle non-containment reference to DataObject - if (pl[i].isReference()) - { - writeReference(dataObject, pl[i], false); - } - } - } - } - - // -------------------- - // Handle ChangeSummary - // -------------------- - if (dataObject->getType().isChangeSummaryType()) - { - ChangeSummaryPtr changeSummary = dataObject->getChangeSummary(); - if (changeSummary) - { - handleChangeSummary(elementName, changeSummary); - } - } - - if (dataObjectType.isSequencedType()) - { - SequencePtr sequence = dataObject->getSequence(); - if (sequence) - { - for (i=0; i<sequence->size(); i++) - { - - if (sequence->isText(i)) - { - rc = xmlTextWriterWriteString( - writer, - SDOXMLString(sequence->getCStringValue(i))); - continue; - } // end TextType - - const Property& seqProp = sequence->getProperty(i); - SDOXMLString seqPropName = seqProp.getName(); - const Type& seqPropType = seqProp.getType(); - - if (seqPropType.isDataObjectType()) - { - DataObjectPtr doValue; - if (seqProp.isMany()) - { - int index = sequence->getListIndex(i); - doValue = dataObject->getList(seqProp)[index]; - } - else - { - doValue = dataObject->getDataObject(seqProp); - } - - if (doValue) - { - // Handle non-containment reference to DataObject - if (seqProp.isReference()) - { - writeReference(dataObject, seqProp, true, doValue); - } - else - { - writeDO(doValue, doValue->getType().getURI(), seqPropName); - } - } - } // end DataObject - - - else - { - // Sequence member is a primitive - xmlTextWriterWriteElement( - writer, - seqPropName, - SDOXMLString(sequence->getCStringValue(i))); - - } // end DataType - } // end - iterate over sequence - - } - - } // end sequence handling - - else - { - - ////////////////////////////////////////////////////////////////////////// - // Iterate over all the properties to find elements - ////////////////////////////////////////////////////////////////////////// - for (i = 0; i < pl.size(); i++) - { - if (dataObject->isSet(pl[i])) - { - - SDOXMLString propertyName(pl[i].getName()); - XSDPropertyInfo* pi = getPropertyInfo(dataObjectType, pl[i]); - if (pi) - { - if (!pi->getPropertyDefinition().isElement) - continue; - propertyName = pi->getPropertyDefinition().localname; - } - - const Type& propertyType = pl[i].getType(); - - ////////////////////////////////////////////////////////////////////// - // For a many-valued property get the list of values - ////////////////////////////////////////////////////////////////////// - if (pl[i].isMany()) - { - DataObjectList& dol = dataObject->getList(pl[i]); - for (int j = 0; j <dol.size(); j++) - { - // Handle non-containment reference to DataObject - if (pl[i].isReference() ) - { - writeReference(dataObject, pl[i], true, dol[j]); - } - else - { - SDOXMLString typeURI = dol[j]->getType().getURI(); - writeDO(dol[j], dol[j]->getType().getURI(), propertyName); - } - } - } // end IsMany - - ////////////////////////////////////////////////////////////////////// - // For a dataobject write the do - ////////////////////////////////////////////////////////////////////// - else if (!propertyType.isDataType()) - { - // Handle non-containment reference to DataObject - if (pl[i].isReference()) - { - if (pi) - writeReference(dataObject, pl[i], true); - } - else - { - DataObjectPtr propDO = dataObject->getDataObject(pl[i]); - writeDO(propDO, propDO->getType().getURI(), propertyName); - } - } - - ////////////////////////////////////////////////////////////////////// - // For a primitive - ////////////////////////////////////////////////////////////////////// - else - { - // Only write a primitive as an element if defined by the XSD - if (pi) - { - const Type& tp = dataObject->getType(); - XSDTypeInfo* typeInfo = (XSDTypeInfo*) - ((DASType*)&tp)->getDASValue("XMLDAS::TypeInfo"); - if (typeInfo && typeInfo->getTypeDefinition().isExtendedPrimitive) - { - xmlTextWriterWriteRaw( - writer, - SDOXMLString(dataObject->getCString(pl[i]))); - } - else - { - if (dataObject->isNull(pl[i])) - { - rc = xmlTextWriterStartElementNS(writer, - NULL, elementName, elementURI); - if (rc < 0) - { - SDO_THROW_EXCEPTION("writeDO", - SDOXMLParserException, - "xmlTextWriterStartElementNS failed"); - } - rc = xmlTextWriterWriteAttribute(writer, - (const unsigned char*)"xsi:nil", - (const unsigned char*)"true"); - rc = xmlTextWriterEndElement(writer); - } - else - { - xmlTextWriterWriteElement( - writer, - propertyName, - SDOXMLString(dataObject->getCString(pl[i]))); - } - } - } - } - } - } - } - rc = xmlTextWriterEndElement(writer); - return rc; - - //namespaces = namespaceStack.top(); - //namespaceStack.pop(); - //if (!uri.isNull()) - //{ - // namespaceUriStack.pop(); - //} - } - - XSDPropertyInfo* SDOXMLWriter::getPropertyInfo(const Type& type, const Property& property) - { - if (dataFactory) - { - return (XSDPropertyInfo*)dataFactory->getDASValue(type, property.getName(), "XMLDAS::PropertyInfo"); - } - else - { - return (XSDPropertyInfo*)((DASProperty*)&property)->getDASValue("XMLDAS::PropertyInfo"); - } - - } - - void SDOXMLWriter::writeReference( - DataObjectPtr dataObject, - const Property& property, - bool isElement, - DataObjectPtr refferedToObject) - { - DataObjectPtr reffedObject = refferedToObject; - if (reffedObject == 0) - { - reffedObject = dataObject->getDataObject(property); - } - - // Get ID from referred to DataObject or use XPath - SDOXMLString refValue; - XSDTypeInfo* ti = (XSDTypeInfo*)((DASType*)&reffedObject->getType())-> - getDASValue("XMLDAS::TypeInfo"); - if (ti) - { - TypeDefinitionImpl typeDef = ti->getTypeDefinition(); - if (!typeDef.IDPropertyName.isNull()) - { - refValue = reffedObject->getCString(typeDef.IDPropertyName); - } - } - - if (refValue.isNull()) - { - // need to get XPATH - refValue = ((DataObjectImpl*)(DataObject*)reffedObject)->objectToXPath(); - } - - if (!refValue.isNull()) - { - if (isElement) - { - // Set the IDREF value - xmlTextWriterWriteElement(writer, - SDOXMLString(property.getName()), refValue); - } - else - { - // Set the IDREF value - xmlTextWriterWriteAttribute(writer, - SDOXMLString(property.getName()), refValue); - } - } - } - - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.h deleted file mode 100644 index b862a492e1..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 12:53:49 $ */ - -#ifndef _SDOXMLWRITER_H_ -#define _SDOXMLWRITER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include <libxml/xmlwriter.h> -#include "commonj/sdo/XMLDocument.h" -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/SchemaInfo.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/XSDPropertyInfo.h" -#include <stack> -#include "commonj/sdo/SAX2Namespaces.h" -#include "commonj/sdo/DataObjectImpl.h" - - -namespace commonj -{ - namespace sdo - { - -/** - * SDOXMLWriter writes a data object tree to XML - */ - class SDOXMLWriter - { - - public: - - SDOXMLWriter(DataFactoryPtr dataFactory = NULL); - - virtual ~SDOXMLWriter(); - - int write(XMLDocumentPtr doc, int indent=-1); - - protected: - void setWriter(xmlTextWriterPtr textWriter); - void freeWriter(); - - private: - xmlTextWriterPtr writer; - - void handleChangeSummaryAttributes( - ChangeSummaryPtr cs, - DataObjectPtr doB); - - void handleChangeSummaryElements( - ChangeSummaryPtr cs, - DataObjectPtr dob); - - void handleChangeSummaryDeletedObject( - const char* name, - ChangeSummaryPtr cs, - DataObjectPtr dob); - - void handleSummaryChange( - const SDOXMLString& elementName, - ChangeSummaryPtr cs, - DataObjectPtr dob); - - void handleChangeSummary( - const SDOXMLString& elementName, - ChangeSummaryPtr cs); - - void addToNamespaces(DataObjectImpl* dob); - - int writeDO( - DataObjectPtr dataObject, - const SDOXMLString& elementURI, - const SDOXMLString& elementName, - bool writeXSIType = false, - bool isRoot = false); - - SchemaInfo* schemaInfo; - DataFactoryPtr dataFactory; - - XSDPropertyInfo* getPropertyInfo(const Type& type, const Property& property); - - //std::stack<SDOXMLString> namespaceUriStack; - //SAX2Namespaces namespaces; - //std::stack<SAX2Namespaces> namespaceStack; - int spacescount; - std::map<SDOXMLString,SDOXMLString> namespaceMap; - SDOXMLString tnsURI; - - - void writeReference( - DataObjectPtr dataObject, - const Property& property, - bool isElement, - DataObjectPtr refferedToObject = 0); - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOXMLWRITER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDBufferWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDBufferWriter.cpp deleted file mode 100644 index e92b0eb48e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDBufferWriter.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SDOXSDBufferWriter.h" -#include "commonj/sdo/SDORuntimeException.h" - -namespace commonj -{ - namespace sdo - { - - - - - SDOXSDBufferWriter::SDOXSDBufferWriter() - { - buf = xmlBufferCreate(); - if (buf == NULL) - { - SDO_THROW_EXCEPTION("SDOXSDBufferWriter", SDOXMLParserException, "xmlBufferCreate failed"); - } - setWriter(xmlNewTextWriterMemory(buf, 0)); - } - - SDOXSDBufferWriter::~SDOXSDBufferWriter() - { - freeWriter(); - xmlBufferFree(buf); - } - - SDOXMLString SDOXSDBufferWriter::getBuffer() - { - freeWriter(); - return xmlBufferContent(buf); - } - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDBufferWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDBufferWriter.h deleted file mode 100644 index a923c32bd1..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDBufferWriter.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SDOXSDBUFFERWRITER_H_ -#define _SDOXSDBUFFERWRITER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXSDWriter.h" - - -namespace commonj -{ - namespace sdo - { - -/** - * SDOXSDBufferWriter extends SDOXSDWriter and writes a buffer. - */ - class SDOXSDBufferWriter : public SDOXSDWriter - { - - public: - - SDOXSDBufferWriter(); - virtual ~SDOXSDBufferWriter(); - - SDOXMLString getBuffer(); - private: - xmlBufferPtr buf; - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOXSDBUFFERWRITER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDFileWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDFileWriter.cpp deleted file mode 100644 index e0a5b78de4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDFileWriter.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SDOXSDFileWriter.h" - -namespace commonj -{ - namespace sdo - { - - - - - SDOXSDFileWriter::SDOXSDFileWriter(const char* xsdFile) - { - setWriter(xmlNewTextWriterFilename(xsdFile, 0)); - } - - SDOXSDFileWriter::~SDOXSDFileWriter() - { - - } - - - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDFileWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDFileWriter.h deleted file mode 100644 index b85b88bbc4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDFileWriter.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SDOXSDFILEWRITER_H_ -#define _SDOXSDFILEWRITER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXSDWriter.h" - - -namespace commonj -{ - namespace sdo - { - -/** - * SDOXSDFileWriter extends SDOXSDWriter and writes a file. - */ - class SDOXSDFileWriter : public SDOXSDWriter - { - - public: - - SDOXSDFileWriter(const char* xsdFile); - - virtual ~SDOXSDFileWriter(); - - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOXSDFILEWRITER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDStreamWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDStreamWriter.cpp deleted file mode 100644 index 664dbe1c6f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDStreamWriter.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#include "commonj/sdo/SDOXSDStreamWriter.h" -#include <sstream> - -namespace commonj -{ - namespace sdo - { - - - - - SDOXSDStreamWriter::SDOXSDStreamWriter(std::ostream& outXML) - : outXmlStream(outXML) - { - } - - SDOXSDStreamWriter::~SDOXSDStreamWriter() - { - } - - int SDOXSDStreamWriter::write(const TypeList& types, const SDOXMLString& targetNamespaceURI, - const propertyMap& openprops, int indent) - { - int rc = SDOXSDBufferWriter::write(types, targetNamespaceURI, openprops, indent); - - // Now stream the buffer - outXmlStream << getBuffer(); - return rc; - } - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDStreamWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDStreamWriter.h deleted file mode 100644 index 5f80536f4d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDStreamWriter.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#ifndef _SDOXSDSTREAMWRITER_H_ -#define _SDOXSDSTREAMWRITER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SDOXSDBufferWriter.h" -#include <iostream> - - -namespace commonj -{ - namespace sdo - { - -/** - * SDOXSDStreamWriter extends SDOXSDWriter and writes a stream. - */ - class SDOXSDStreamWriter : public SDOXSDBufferWriter - { - - public: - - SDOXSDStreamWriter(std::ostream& outXML); - virtual ~SDOXSDStreamWriter(); - - int write(const TypeList& types, const SDOXMLString& targetNamespaceURI, - const propertyMap& openprops, int indent = -1); - private: - std::ostream& outXmlStream; - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOXSDSTREAMWRITER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDWriter.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDWriter.cpp deleted file mode 100644 index d80b6cc9e4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDWriter.cpp +++ /dev/null @@ -1,840 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 12:53:49 $ */ - -#include "commonj/sdo/SDOXSDWriter.h" -#include "iostream" -using namespace::std; -#include "commonj/sdo/DASProperty.h" -#include "commonj/sdo/XSDPropertyInfo.h" -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/DataFactoryImpl.h" - -namespace commonj -{ - namespace sdo - { - - - - - SDOXSDWriter::SDOXSDWriter( - DataFactoryPtr dataFact) - : dataFactory(dataFact) - { - - } - - SDOXSDWriter::~SDOXSDWriter() - { - freeWriter(); - } - - void SDOXSDWriter::setWriter(xmlTextWriterPtr textWriter) - { - writer = textWriter; - } - - void SDOXSDWriter::freeWriter() - { - if (writer != NULL) - { - xmlFreeTextWriter(writer); - writer = NULL; - } - } - - - void SDOXSDWriter::writeProps( const propertyMap& pl, const SDOXMLString& targetNamespaceURI, - SDOXMLString& xsd) - { - int rc; - - // ------------------------------------------------------- - // Create <element> definitions - // ------------------------------------------------------- - - propertyMap::const_iterator j; - for (j = pl.begin(); j != pl.end(); ++j) - { - const PropertyImpl& prop = (*j).second; - const Type& propType = prop.getType(); - - - SDOXMLString propTypeName = resolveName(propType.getURI(), - propType.getName(), targetNamespaceURI); - - - if (prop.isMany() || !prop.getType().isDataType()) - { - // ----------------------------- - // Write an <element> definition - // ----------------------------- - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("element"), NULL); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("name"), - SDOXMLString(prop.getName())); - - if (!propType.isDataType() && !prop.isContainment()) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdoxml:propertyType"), - propTypeName); - propTypeName = "xsd:anyURI"; - } - - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("type"), - propTypeName); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("minOccurs"), - SDOXMLString("0")); - - if (prop.isMany()) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("maxOccurs"), - SDOXMLString("unbounded")); - } - - // End element - rc = xmlTextWriterEndElement(writer); - } - else - { - // ------------------------------- - // Write an <attribute> definition - // ------------------------------- - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("attribute"), NULL); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("name"), - SDOXMLString(prop.getName())); - - if (!propType.isDataType()) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdoxml:propertyType"), - propTypeName); - if (prop.isReference()) - { - propTypeName = "xsd:IDREF"; - } - else - { - propTypeName = "xsd:anyURI"; - } - } - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("type"), - propTypeName); - - // End attribute - rc = xmlTextWriterEndElement(writer); - - } // else - } // for - } // method - - - //////////////////////////////////////// - - int SDOXSDWriter::write(const TypeList& types, const SDOXMLString& targetNamespaceURI, - const propertyMap& openprops, int indent) - { - int i; - if (writer == NULL) - { - // Throw exception - return -1; - } - - int rc = 0; - - if (indent >= 0) - { - xmlTextWriterSetIndent(writer, 1); - if (indent > 0) - { - char * chars = new char[indent+1]; - for (int i=0;i<indent;i++)chars[i] = ' '; - chars[indent] = 0; - xmlTextWriterSetIndentString(writer, SDOXMLString(chars)); - delete chars; - } - else - { - xmlTextWriterSetIndentString(writer, SDOXMLString("")); - } - } - - // -------------------------------------------------------------- - // Write the <schema> definition including namespace information - // -------------------------------------------------------------- - SDOXMLString tns; - SDOXMLString xsd("xsd"); - SDOXMLString sdoURI(Type::SDOTypeNamespaceURI.c_str()); - - SDOXMLString schemaURI = "http://www.w3.org/2001/XMLSchema"; - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("schema"), schemaURI); - if (rc < 0) { - SDO_THROW_EXCEPTION("write", SDOXMLParserException, "xmlTextWriterStartElementNS failed"); - } - - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("xmlns:sdo"), - sdoURI); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("xmlns:sdoxml"), - sdoURI + "/xml"); - - // -------------------------------------------------------------- - // Add all namespaces found in type list - // -------------------------------------------------------------- - int spacecount = 0; - - std::map<SDOXMLString,SDOXMLString>::iterator it; - - for (i = 0; i<types.size(); i++) - { - SDOXMLString uri = types[i].getURI(); - if (uri.equals(Type::SDOTypeNamespaceURI.c_str())) continue; - std::map<SDOXMLString,SDOXMLString>::iterator it = namespaceMap.find(uri); - if (it == namespaceMap.end()) - { - char buf[4]; - if (!targetNamespaceURI.isNull() - && !targetNamespaceURI.equals(uri)) - { - sprintf(buf,"%d",++spacecount); - SDOXMLString s = SDOXMLString("tns") + buf; - namespaceMap.insert(make_pair(uri,s)); - } - } - } - - for (it = namespaceMap.begin();it != namespaceMap.end(); ++it) - { - SDOXMLString space = SDOXMLString("xmlns:") + (*it).second; - rc = xmlTextWriterWriteAttribute(writer, - space, (*it).first); - } - - // -------------------------------------------------------------- - // Add targetNamespace if necessary - // -------------------------------------------------------------- - if (!targetNamespaceURI.isNull() && !targetNamespaceURI.equals("")) - { - tns = "tns:"; - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("xmlns:tns"), - targetNamespaceURI); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("targetNamespace"), - targetNamespaceURI); - } - - - // -------------------------------------------------------------- - // Now iterate through the Types creating elements as appropriate - // -------------------------------------------------------------- - for (i = 0; i<types.size(); i++) - { - const Type& type = types[i]; - const Type* baseType = type.getBaseType(); - - // Do not define SDO DataTypes - SDOXMLString uri = type.getURI(); - if (uri.equals(Type::SDOTypeNamespaceURI.c_str())) - continue; - - // Do not define the RootType - SDOXMLString name = type.getName(); - if (uri.equals(targetNamespaceURI) && name.equals("RootType")) - continue; - - - // -------------------------------------------------------------- - // DataTypes become simpleType definitions - // -------------------------------------------------------------- - if (type.isDataType()) - { - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("simpleType"), NULL); - if (rc < 0) { - SDO_THROW_EXCEPTION("write", SDOXMLParserException, "xmlTextWriterStartElementNS failed"); - } - - SDOXMLString typeName; - it = namespaceMap.find(type.getURI()); - if (it != namespaceMap.end() && - !targetNamespaceURI.equals((*it).first)) - { - typeName = (*it).second + ":" + name; - } - else - { - typeName = name; - } - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("name"), - typeName); - // -------------------------------------------------------------- - // write any alias. - // -------------------------------------------------------------- - if (type.getAliasCount() > 0) - { - unsigned int j = type.getAliasCount(); - SDOXMLString value = ""; - for (int i=0;i<j-1;i++) - { - value = value + type.getAlias(i); - value = value + " "; - } - value += type.getAlias(j-1); - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdo:aliasName"),value); - - } - - if (baseType != 0) - { - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("restriction"), NULL); - - SDOXMLString baseName = resolveName(baseType->getURI(), baseType->getName(), targetNamespaceURI); - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("base"), - baseName); - - - rc = xmlTextWriterEndElement(writer); - } - rc = xmlTextWriterEndElement(writer); - - } - else - // --------------------------------------------------------------------- - // DataObject Types become ComplexType definitions with a global element - // --------------------------------------------------------------------- - { - rc = xmlTextWriterStartElementNS(writer,xsd, SDOXMLString("element"), NULL); - if (rc < 0) { - SDO_THROW_EXCEPTION("write", SDOXMLParserException, "xmlTextWriterStartElementNS failed"); - } - - SDOXMLString typeName; - it = namespaceMap.find(type.getURI()); - if (it != namespaceMap.end() && - !targetNamespaceURI.equals((*it).first)) - { - typeName = (*it).second + ":" + name; - } - else - { - typeName = name; - } - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("name"), - name.toLower(0,1)); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("type"), - typeName); - - rc = xmlTextWriterEndElement(writer); - - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("complexType"), NULL); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("name"), - typeName); - - // ----------------------------------------------------- - // If there is an alias, write it - // ----------------------------------------------------- - if (type.getAliasCount() > 0) - { - unsigned int j = type.getAliasCount(); - SDOXMLString value = ""; - for (int i=0;i<j-1;i++) - { - value = value + type.getAlias(i); - value = value + " "; - } - value += type.getAlias(j-1); - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdo:aliasName"),value); - - } - - // ----------------------------------------------------- - // If there is a base type then we need <complexContent> - // ----------------------------------------------------- - if (baseType != 0) - { - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("complexContent"), NULL); - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("extension"), NULL); - - SDOXMLString baseName = resolveName(baseType->getURI(), baseType->getName(), targetNamespaceURI); - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("base"), - baseName); - - // End extension - rc = xmlTextWriterEndElement(writer); - } - - // --------------------------- - // Iterate over the properties - // --------------------------- - PropertyList pl = type.getProperties(); - - if (pl.size() != 0) - { - bool inSequence = false; - - // ------------------------------------------------------- - // Create <element> definitions - // ------------------------------------------------------- - - int j; - for (j = 0; j < pl.size(); j++) - { - const Property& prop = pl[j]; - const Type& propType = prop.getType(); - - SDOXMLString propTypeName = resolveName(propType.getURI(), - propType.getName(), targetNamespaceURI); - - bool isElement = false; - bool isQName = false; - XSDPropertyInfo* pi = (XSDPropertyInfo*) - ((DASProperty*)&prop)->getDASValue("XMLDAS::PropertyInfo"); - if (pi) - { - PropertyDefinitionImpl propdef = pi->getPropertyDefinition(); - if (propdef.isElement) - isElement=true; - if (propdef.isQName) - isQName=true; - } - - if (prop.isMany() - || prop.isContainment() - || isElement) - { - // ------------------------------------------------- - // Write <sequence> or <choice> before first element - // ------------------------------------------------- - if (!inSequence) - { - if (type.isSequencedType()) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("mixed"), - SDOXMLString("true")); - - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("choice"), NULL); - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("maxOccurs"), - SDOXMLString("unbounded")); - } - else - { - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("sequence"), NULL); - } - inSequence = true; - } - // ----------------------------- - // Write an <element> definition - // ----------------------------- - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("element"), NULL); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("name"), - SDOXMLString(prop.getName())); - - if (!propType.isDataType() && !prop.isContainment()) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdoxml:propertyType"), - propTypeName); - propTypeName = "xsd:anyURI"; - } - - if (isQName) - { - propTypeName = "xsd:QName"; - } - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("type"), - propTypeName); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("minOccurs"), - SDOXMLString("0")); - - if (prop.isMany()) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("maxOccurs"), - SDOXMLString("unbounded")); - } - - // ----------------------------------------------------- - // If there is an alias... - // ----------------------------------------------------- - if (prop.getAliasCount() > 0) - { - unsigned int j = prop.getAliasCount(); - SDOXMLString value = ""; - for (int i=0;i<j-1;i++) - { - value = value + prop.getAlias(i); - value = value + " "; - } - value += prop.getAlias(j-1); - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdo:aliasName"),value); - - } - - // End element - rc = xmlTextWriterEndElement(writer); - } - } - - - - // ----------------------------------------------------- - // End <sequence> / <choice> if necessary - // ----------------------------------------------------- - if (inSequence) - { - // End sequence - rc = xmlTextWriterEndElement(writer); - } - - // --------------------------------- - // Add ChangeSummary if there is one - // --------------------------------- - if (type.isChangeSummaryType()) - { - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("element"), NULL); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("name"), - SDOXMLString("changeSummary")); - - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("type"), - SDOXMLString("sdo:ChangeSummaryType")); - - rc = xmlTextWriterEndElement(writer); - } - - // ------------------------------------------------------- - // Create <element> definitions - // ------------------------------------------------------- - for (j = 0; j < pl.size(); j++) - { - const Property& prop = pl[j]; - const Type& propType = prop.getType(); - - - SDOXMLString propTypeName = resolveName(propType.getURI(), - propType.getName(), targetNamespaceURI); - - bool isElement = false; - XSDPropertyInfo* pi = (XSDPropertyInfo*) - ((DASProperty*)&prop)->getDASValue("XMLDAS::PropertyInfo"); - if (pi) - { - if (pi->getPropertyDefinition().isElement) - isElement=true; - } - - if (!isElement - && !prop.isMany() - && !prop.isContainment()) - { - // ------------------------------- - // Write an <attribute> definition - // ------------------------------- - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("attribute"), NULL); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("name"), - SDOXMLString(prop.getName())); - - if (!propType.isDataType()) - { - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("sdoxml:propertyType"), - propTypeName); - if (prop.isReference()) - { - propTypeName = "xsd:IDREF"; - } - else - { - propTypeName = "xsd:anyURI"; - } - } - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("type"), - propTypeName); - - // End attribute - rc = xmlTextWriterEndElement(writer); - - } - - } - - } - - // ----------------------------------------------------- - // Write open type information - // ----------------------------------------------------- - if (type.isOpenType()) - { - // <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("any"), NULL); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("namespace"), - SDOXMLString("##other")); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("processContents"), - SDOXMLString("lax")); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("minOccurs"), - SDOXMLString("0")); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("maxOccurs"), - SDOXMLString("unbounded")); - - - // End element - rc = xmlTextWriterEndElement(writer); - - // ----------------------------------------------------- - // Write open type information 2 - // ----------------------------------------------------- - //<anyAttribute namespace="##any" processContents="lax"/> - - rc = xmlTextWriterStartElementNS(writer, xsd, SDOXMLString("anyAttribute"), NULL); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("namespace"), - SDOXMLString("##any")); - - rc = xmlTextWriterWriteAttribute(writer, - SDOXMLString("processContents"), - SDOXMLString("lax")); - - // End element - rc = xmlTextWriterEndElement(writer); - - } - - // ----------------------------------------------------- - // End <complexContent> if necessary - // ----------------------------------------------------- - if (baseType != 0) - { - rc = xmlTextWriterEndElement(writer); - } - - - rc = xmlTextWriterEndElement(writer); - } - } - - - // ----------------------------------------------- - // Write any open content from the factory - // ----------------------------------------------- - if (openprops.size() != 0) - { - writeProps(openprops, targetNamespaceURI, xsd); - } - // End the <schema> definition - rc = xmlTextWriterEndElement(writer); - return rc; - } - - - // ======================================================================================== - // resolveName - resolve a Type uri and name to xsd equivalent - // ======================================================================================== - SDOXMLString SDOXSDWriter::resolveName(const SDOXMLString& uri, const SDOXMLString& name, const SDOXMLString& targetNamespaceURI) - { - SDOXMLString resolvedName = name; - if (uri.equals(Type::SDOTypeNamespaceURI.c_str())) - { - resolvedName = "xsd:"; - if (name.equalsIgnoreCase("Boolean")) - { - resolvedName += "boolean"; - } - else if (name.equalsIgnoreCase("Byte")) - { - resolvedName += "byte"; - } - else if (name.equalsIgnoreCase("Bytes")) - { - resolvedName += "hexBinary"; - } - else if (name.equalsIgnoreCase("Character")) - { - resolvedName += "string"; - } - else if (name.equalsIgnoreCase("DataObject")) - { - resolvedName += "anyType"; - } - else if (name.equalsIgnoreCase("Date")) - { - resolvedName += "dateTime"; - } - else if (name.equalsIgnoreCase("DateTime")) - { - resolvedName += "dateTime"; - } - else if (name.equalsIgnoreCase("Day")) - { - resolvedName += "gDay"; - } - else if (name.equalsIgnoreCase("Decimal")) - { - resolvedName += "decimal"; - } - else if (name.equalsIgnoreCase("Double")) - { - resolvedName += "double"; - } - else if (name.equalsIgnoreCase("Duration")) - { - resolvedName += "duration"; - } - else if (name.equalsIgnoreCase("Float")) - { - resolvedName += "float"; - } - else if (name.equalsIgnoreCase("Int")) - { - resolvedName += "int"; - } - else if (name.equalsIgnoreCase("Integer")) - { - resolvedName += "integer"; - } - else if (name.equalsIgnoreCase("Long")) - { - resolvedName += "long"; - } - else if (name.equalsIgnoreCase("Month")) - { - resolvedName += "gMonth"; - } - else if (name.equalsIgnoreCase("MonthDay")) - { - resolvedName += "gMonthDay"; - } - else if (name.equalsIgnoreCase("Object")) - { - resolvedName += "anySimpleType"; - } - else if (name.equalsIgnoreCase("Short")) - { - resolvedName += "short"; - } - else if (name.equals("String")) - { - resolvedName += "String"; - } - else if (name.equalsIgnoreCase("Strings")) - { - resolvedName += "string"; - } - else if (name.equalsIgnoreCase("Time")) - { - resolvedName += "time"; - } - else if (name.equalsIgnoreCase("Year")) - { - resolvedName += "gYear"; - } - else if (name.equalsIgnoreCase("YearMonth")) - { - resolvedName += "gYearMonth"; - } - else if (name.equalsIgnoreCase("YearMonthDay")) - { - resolvedName += "date"; - } - else if (name.equalsIgnoreCase("URI")) - { - resolvedName += "anyURI"; - } - else - { - resolvedName += "String"; - } - } - else if (!targetNamespaceURI.isNull() && uri.equals(targetNamespaceURI)) - { - resolvedName = "tns:"; - resolvedName += name; - } - else - { - SDOXMLString propTypeName; - std::map<SDOXMLString,SDOXMLString>::iterator it; - it = namespaceMap.find(uri); - if (it != namespaceMap.end() && - !targetNamespaceURI.equals((*it).first)) - { - resolvedName = (*it).second + ":" + name; - } - } - - return resolvedName; - } - - - - } // End - namespace sdo -} // End - namespace commonj - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDWriter.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDWriter.h deleted file mode 100644 index 88ab27fbe6..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SDOXSDWriter.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 12:53:49 $ */ - -#ifndef _SDOXSDWRITER_H_ -#define _SDOXSDWRITER_H_ - -#include "commonj/sdo/disable_warn.h" - -#include <libxml/xmlwriter.h> -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/DataFactoryImpl.h" - - -namespace commonj -{ - namespace sdo - { - -/** - * SDOXSDWriter writes XSD from types and properties. - * The writer takes the contents of a data factory and writes an - * XSD which will be usable to serialize data from the graph. - */ - class SDOXSDWriter - { - - public: - - SDOXSDWriter(DataFactoryPtr dataFactory = NULL); - - virtual ~SDOXSDWriter(); - - int write(const TypeList& types, const SDOXMLString& targetNamespaceURI, - const propertyMap& openprops, int indent = -1); - - protected: - void setWriter(xmlTextWriterPtr textWriter); - void freeWriter(); - - private: - xmlTextWriterPtr writer; - - std::map<SDOXMLString,SDOXMLString> namespaceMap; - - void writeProps( const propertyMap& pl, const SDOXMLString& targetNamespaceURI, - SDOXMLString& xsd); - int writeDO(DataObjectPtr dataObject, const SDOXMLString& elementName); - - DataFactoryPtr dataFactory; - - SDOXMLString resolveName(const SDOXMLString& uri, const SDOXMLString& name, const SDOXMLString& targetNamespaceURI); - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SDOXSDWRITER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SchemaInfo.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SchemaInfo.cpp deleted file mode 100644 index 024546876a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SchemaInfo.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SchemaInfo.h" -namespace commonj -{ - namespace sdo - { - - SchemaInfo::SchemaInfo() - { - } - - SchemaInfo::~SchemaInfo() - { - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SchemaInfo.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SchemaInfo.h deleted file mode 100644 index 0488df1893..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SchemaInfo.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _SCHEMAINFO_H_ -#define _SCHEMAINFO_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SAX2Namespaces.h" -#include "commonj/sdo/DataObject.h" - -namespace commonj -{ - namespace sdo - { - -/** - * - * SchemaInfo holds information supplied by the parser on the schema - * held in an XSD - */ - class SchemaInfo - { - - public: - SDO_SPI SchemaInfo(); - SDO_SPI virtual ~SchemaInfo(); - - SDO_SPI SAX2Namespaces& getSchemaNamespaces() {return schemaNamespaces;} - - SDO_SPI const SDOXMLString& getTargetNamespaceURI() const {return targetNamespaceURI;} - SDO_SPI void setTargetNamespaceURI(const SDOXMLString& URI) {targetNamespaceURI = URI;} - - private: - SAX2Namespaces schemaNamespaces; - SDOXMLString targetNamespaceURI; - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_SCHEMAINFO_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoCheck.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoCheck.cpp deleted file mode 100644 index d577d5bd12..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoCheck.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/SdoCheck.h" - -extern "C" { - SDO_API int SDOCheck(void) - { - return 0; - } -} diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoCheck.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoCheck.h deleted file mode 100644 index daf28c6d6f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoCheck.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/export.h" - - -/** - * SDOCheck is a simple C method which can be called to verify that - * this is an SDO library - this is used in building - */ - -extern "C" { - SDO_API int SDOCheck(void); -} - - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoRuntime.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoRuntime.cpp deleted file mode 100644 index 175dc6dbd2..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoRuntime.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/01/23 16:39:24 $ */ - -#include "commonj/sdo/SdoRuntime.h" -#include <iostream> -#include <stdio.h> - -namespace commonj{ -namespace sdo{ - - -const unsigned int SdoRuntime::major = 0; -const unsigned int SdoRuntime::minor = 9; -const unsigned int SdoRuntime::fix =4; -char* SdoRuntime::version = 0; - - - -const char* SdoRuntime::getVersion() -{ - if (SdoRuntime::version == 0) - { - SdoRuntime::version = new char[11]; - sprintf(SdoRuntime::version,"%02d:%02d:%04d", - SdoRuntime::major, SdoRuntime::minor, SdoRuntime::fix); - } - return (const char *)SdoRuntime::version; - -} - -const unsigned int SdoRuntime::getMajor() -{ - return SdoRuntime::major; -} - -const unsigned int SdoRuntime::getMinor() -{ - return SdoRuntime::minor; -} - -const unsigned int SdoRuntime::getFix() -{ - return SdoRuntime::fix; -} - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoRuntime.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoRuntime.h deleted file mode 100644 index 5720a34a0c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SdoRuntime.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef SDO_RUNTIME_H -#define SDO_RUNTIME_H -#include "commonj/sdo/export.h" - -namespace commonj{ -namespace sdo{ - -/** - * SDORuntime gives information about the version of the library. - */ - -class SdoRuntime -{ - public: - - virtual ~SdoRuntime(); - - /** - * The version as a string major:minor:fix - */ - - static SDO_API const char* getVersion(); - - /** - * The major version as an integer. - */ - - static SDO_API const unsigned int getMajor(); - - /** - * The minor version as an integer. - */ - - static SDO_API const unsigned int getMinor(); - - /** - * The fix level as an integer. - */ - - static SDO_API const unsigned int getFix(); - - - private: - static const unsigned int major; - static const unsigned int minor; - static const unsigned int fix; - static char* version; - -}; -}; -}; - - -#endif - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Sequence.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Sequence.cpp deleted file mode 100644 index 3e830e9889..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Sequence.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/TypeList.h" - -#include "commonj/sdo/Sequence.h" - -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/SDORuntimeException.h" - - -namespace commonj{ -namespace sdo{ - -// all delegated to sequenceimpl -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Sequence.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Sequence.h deleted file mode 100644 index 610848ce98..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Sequence.h +++ /dev/null @@ -1,309 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/02 16:41:30 $ */ - -#ifndef _SEQUENCE_H_ -#define _SEQUENCE_H_ - - -#include "commonj/sdo/export.h" -#include "commonj/sdo/RefCountingObject.h" -#include "commonj/sdo/RefCountingPointer.h" -#include "commonj/sdo/SDODate.h" -#include "commonj/sdo/Type.h" - - -namespace commonj{ -namespace sdo{ - -class Property; /* forward declaration */ -class DataObject; - -/** - * A sequence is a heterogeneous list of properties and corresponding values. - * It represents an ordered arbitrary mixture of data values from more - * than one property of a {@link DataObject data object}. - */ - -class Sequence : public RefCountingObject -{ - public: - /** size() returns the number of elements - * - * Returns the number of entries in the sequence. - */ - - SDO_API virtual unsigned int size() = 0; - - /** - * - * A Sequence element is either a free text item, or represents a property - * setting. If the element is a property setting, then the information - * held in the element consists of: - * -# The property which was set. - * -# The element of that property if it was many valued. - * -# The value which was set. - * - * If the sequence element is text, then there is no property, and only the - * methods for text retrieval will work. Use the isText() method to check - * before calling getProperty(). - */ - - SDO_API virtual const Property& getProperty(unsigned int index) = 0; - - /** - * Return the data object associated with this sequence - */ - - SDO_API virtual const DataObjectPtr getDataObject() = 0; - - /** - * - * The element of that property if it was many valued. Zero if the - * property was single valued. - */ - - SDO_API virtual unsigned int getListIndex(unsigned int index) = 0; - - /** - * - * The element contains the actual value set within the property. The - * method required to get that value will vary depending on the type - * of the property. This is shorthand for getProperty.getTypeEnum(). - */ - - SDO_API virtual Type::Types getTypeEnum(unsigned int index) = 0; - - /** - * - * This method searched the sequence for a setting which corresponds - * to the specified index of the specified property. Searches for single - * valued property settings may omit the pindex parameter. - */ - - - SDO_API virtual unsigned int getIndex(const Property& p, unsigned int pindex=0) = 0; - SDO_API virtual unsigned int getIndex(const char* propName, unsigned int pindex=0) = 0; - - /** - * - * These methods retrieve the setting according to the type of the - * property concerned. If a retrieval method is used which does not correspond to - * the correct type, a conversion will be performed, or an illegal conversion - * exception will be thrown. - */ - - SDO_API virtual const char* getCStringValue(unsigned int index) = 0; - SDO_API virtual bool getBooleanValue(unsigned int index) = 0; - SDO_API virtual char getByteValue(unsigned int index) = 0; - SDO_API virtual wchar_t getCharacterValue(unsigned int index) = 0; - SDO_API virtual unsigned int getStringValue(unsigned int index, wchar_t* val, unsigned int max) = 0; - SDO_API virtual unsigned int getBytesValue(unsigned int index, char* val, unsigned int max) = 0; - SDO_API virtual short getShortValue(unsigned int index) = 0; - SDO_API virtual long getIntegerValue(unsigned int index) = 0; - SDO_API virtual int64_t getLongValue(unsigned int index) = 0; - SDO_API virtual float getFloatValue(unsigned int index) = 0; - SDO_API virtual long double getDoubleValue(unsigned int index) = 0; - SDO_API virtual const SDODate getDateValue(unsigned int index) = 0; - SDO_API virtual DataObjectPtr getDataObjectValue(unsigned int index) = 0; - - /** - * - * getlength applies to string and byte buffer types, and allows the - * client to allocate the correct size of buffer before retrieving the - * value. - */ - - SDO_API virtual unsigned int getLength(unsigned int index) = 0; - - - /** - * - * The setter methods use an element of the sequence to perform a - * property setting. The value in the sequence is updated, and so is the - * rel value of the property in the data object. - */ - - SDO_API virtual void setCStringValue( unsigned int index, const char* s ) = 0; - SDO_API virtual void setBooleanValue( unsigned int index, bool b ) = 0; - SDO_API virtual void setByteValue( unsigned int index, char c ) = 0; - SDO_API virtual void setCharacterValue( unsigned int index, wchar_t c ) = 0; - SDO_API virtual void setStringValue( unsigned int index, const wchar_t* s , unsigned int len) = 0; - SDO_API virtual void setBytesValue( unsigned int index, const char* s , unsigned int len) = 0; - SDO_API virtual void setShortValue( unsigned int index, short s ) = 0; - SDO_API virtual void setIntegerValue( unsigned int index, long i ) = 0; - SDO_API virtual void setLongValue( unsigned int index, int64_t l ) = 0; - SDO_API virtual void setFloatValue( unsigned int index, float f ) = 0; - SDO_API virtual void setDoubleValue(unsigned int index, long double d ) = 0; - SDO_API virtual void setDateValue(unsigned int index, const SDODate t ) = 0; - SDO_API virtual void setDataObjectValue(unsigned int index, DataObjectPtr d ) = 0; - - - /** - * - * Sequences may be added to by usign the addXXX methods. These provoke - * a setting of the real value of the property concerned, and also append - * an element to the sequence to reflect that setting. - * Additions may be performed based on property name, property index or - * the Property itself. - */ - - SDO_API virtual bool addCString( const char* propertyName,const char* s ) = 0; - SDO_API virtual bool addBoolean( const char* propertyName,bool b ) = 0; - SDO_API virtual bool addByte( const char* propertyName,char c ) = 0; - SDO_API virtual bool addCharacter( const char* propertyName,wchar_t c ) = 0; - SDO_API virtual bool addString( const char* propertyName,const wchar_t* s , unsigned int len) = 0; - SDO_API virtual bool addBytes ( const char* propertyName,const char* s , unsigned int len) = 0; - SDO_API virtual bool addShort( const char* propertyName,short s ) = 0; - SDO_API virtual bool addInteger( const char* propertyName,long i ) = 0; - SDO_API virtual bool addLong( const char* propertyName,int64_t l ) = 0; - SDO_API virtual bool addFloat( const char* propertyName,float f ) = 0; - SDO_API virtual bool addDouble(const char* propertyName,long double d ) = 0; - SDO_API virtual bool addDate(const char* propertyName,const SDODate t ) = 0; - SDO_API virtual bool addDataObject(const char* propertyName,DataObjectPtr d ) = 0; - - - SDO_API virtual bool addCString( unsigned int propertyIndex,const char* s ) = 0; - SDO_API virtual bool addBoolean( unsigned int propertyIndex,bool b ) = 0; - SDO_API virtual bool addByte( unsigned int propertyIndex,char c ) = 0; - SDO_API virtual bool addCharacter( unsigned int propertyIndex,wchar_t c ) = 0; - SDO_API virtual bool addString( unsigned int propertyIndex,const wchar_t* s , unsigned int len) = 0; - SDO_API virtual bool addBytes( unsigned int propertyIndex,const char* s , unsigned int len) = 0; - SDO_API virtual bool addShort( unsigned int propertyIndex,short s ) = 0; - SDO_API virtual bool addInteger( unsigned int propertyIndex,long i ) = 0; - SDO_API virtual bool addLong( unsigned int propertyIndex,int64_t l ) = 0; - SDO_API virtual bool addFloat( unsigned int propertyIndex,float f ) = 0; - SDO_API virtual bool addDouble(unsigned int propertyIndex,long double d ) = 0; - SDO_API virtual bool addDate(unsigned int propertyIndex,const SDODate t ) = 0; - SDO_API virtual bool addDataObject(unsigned int propertyIndex,DataObjectPtr d ) = 0; - - - - SDO_API virtual bool addCString( const Property& property,const char* s ) = 0; - SDO_API virtual bool addBoolean( const Property& property,bool b ) = 0; - SDO_API virtual bool addByte( const Property& property,char c ) = 0; - SDO_API virtual bool addCharacter( const Property& property,wchar_t c ) = 0; - SDO_API virtual bool addString ( const Property& property,const wchar_t* s , unsigned int len) = 0; - SDO_API virtual bool addBytes( const Property& property,const char* s , unsigned int len) = 0; - SDO_API virtual bool addShort( const Property& property,short s ) = 0; - SDO_API virtual bool addInteger( const Property& property,long i ) = 0; - SDO_API virtual bool addLong( const Property& property,int64_t l ) = 0; - SDO_API virtual bool addFloat( const Property& property,float f ) = 0; - SDO_API virtual bool addDouble(const Property& property,long double d ) = 0; - SDO_API virtual bool addDate(const Property& property,const SDODate t ) = 0; - SDO_API virtual bool addDataObject(const Property& property,DataObjectPtr d ) = 0; - - - /** - * - * Sequences may be added to by usign the addXXX methods. These provoke - * a setting of the real value of the property concerned, and also append - * an element to the sequence to reflect that setting. - * Additions may be performed based on property name, property index or - * the Property itself. - * The add method also has an override to allow insertion of a sequence element - * before any index. - */ - - SDO_API virtual bool addCString( unsigned int index,const char* propertyName,const char* s ) = 0; - SDO_API virtual bool addBoolean( unsigned int index,const char* propertyName,bool b ) = 0; - SDO_API virtual bool addByte( unsigned int index,const char* propertyName,char c ) = 0; - SDO_API virtual bool addCharacter( unsigned int index,const char* propertyName,wchar_t c ) = 0; - SDO_API virtual bool addString( unsigned int index,const char* propertyName,const wchar_t* s, unsigned int len ) = 0; - SDO_API virtual bool addBytes( unsigned int index,const char* propertyName,const char* s , unsigned int len) = 0; - SDO_API virtual bool addShort( unsigned int index,const char* propertyName,short s ) = 0; - SDO_API virtual bool addInteger( unsigned int index,const char* propertyName,long i ) = 0; - SDO_API virtual bool addLong( unsigned int index,const char* propertyName,int64_t l ) = 0; - SDO_API virtual bool addFloat( unsigned int index,const char* propertyName,float f ) = 0; - SDO_API virtual bool addDouble(unsigned int index,const char* propertyName,long double d ) = 0; - SDO_API virtual bool addDate(unsigned int index,const char* propertyName,const SDODate t ) = 0; - SDO_API virtual bool addDataObject(unsigned int index,const char* propertyName,DataObjectPtr d ) = 0; - - - SDO_API virtual bool addCString( unsigned int index,unsigned int propertyIndex,const char* s ) = 0; - SDO_API virtual bool addBoolean( unsigned int index,unsigned int propertyIndex,bool b ) = 0; - SDO_API virtual bool addByte( unsigned int index,unsigned int propertyIndex,char c ) = 0; - SDO_API virtual bool addCharacter( unsigned int index,unsigned int propertyIndex,wchar_t c ) = 0; - SDO_API virtual bool addString( unsigned int index,unsigned int propertyIndex,const wchar_t* s , unsigned int len) = 0; - SDO_API virtual bool addBytes( unsigned int index,unsigned int propertyIndex,const char* s , unsigned int len) = 0; - SDO_API virtual bool addShort( unsigned int index,unsigned int propertyIndex,short s ) = 0; - SDO_API virtual bool addInteger( unsigned int index,unsigned int propertyIndex,long i ) = 0; - SDO_API virtual bool addLong( unsigned int index,unsigned int propertyIndex,int64_t l ) = 0; - SDO_API virtual bool addFloat( unsigned int index,unsigned int propertyIndex,float f ) = 0; - SDO_API virtual bool addDouble(unsigned int index,unsigned int propertyIndex,long double d ) = 0; - SDO_API virtual bool addDate(unsigned int index,unsigned int propertyIndex,const SDODate t ) = 0; - SDO_API virtual bool addDataObject(unsigned int index,unsigned int propertyIndex,DataObjectPtr d ) = 0; - - - SDO_API virtual bool addCString( unsigned int index,const Property& property,const char* s ) = 0; - SDO_API virtual bool addBoolean( unsigned int index,const Property& property,bool b ) = 0; - SDO_API virtual bool addByte( unsigned int index,const Property& property,char c ) = 0; - SDO_API virtual bool addCharacter( unsigned int index,const Property& property,wchar_t c ) = 0; - SDO_API virtual bool addString( unsigned int index,const Property& property,const wchar_t* s , unsigned int len) = 0; - SDO_API virtual bool addBytes( unsigned int index,const Property& property,const char* s , unsigned int len) = 0; - SDO_API virtual bool addShort( unsigned int index,const Property& property,short s ) = 0; - SDO_API virtual bool addInteger( unsigned int index,const Property& property,long i ) = 0; - SDO_API virtual bool addLong( unsigned int index,const Property& property,int64_t l ) = 0; - SDO_API virtual bool addFloat( unsigned int index,const Property& property,float f ) = 0; - SDO_API virtual bool addDouble(unsigned int index,const Property& property,long double d ) = 0; - SDO_API virtual bool addDate(unsigned int index,const Property& property,const SDODate t ) = 0; - SDO_API virtual bool addDataObject(unsigned int index,const Property& property,DataObjectPtr d ) = 0; - - - /** remove() removes an item. - * - * Remove the item at the specified index in the sequence. - * This has no effect on the value of the property in the data object, - * but the setting is no longer recorded. - */ - SDO_API virtual void remove(unsigned int index) = 0; - SDO_API virtual void removeAll(const Property& p) = 0; - - /** - * Moves an entry in the sequence from one index to another. This - * makes the entry appear to have been set at a different point in - * the sequence, but does not alter the actual value set. - */ - - SDO_API virtual void move(unsigned int toIndex, unsigned int fromIndex) = 0; - - /** - * The text setting APIs add an element to the sequence which - * is not a property setting. - * This is text which may be retieved in sequence with the settings. - */ - - SDO_API virtual bool addText(const char* text) = 0; - SDO_API virtual bool addText(unsigned int index, const char* text) = 0; - SDO_API virtual bool setText(unsigned int index, const char* text) = 0; - - /** - * isText returns true if the element is not a property setting. - * This method should be used before getting the Property, to avoid an - * exception - */ - - SDO_API virtual bool isText(unsigned int index) = 0; - -}; - - -}; -}; - -#endif //_SEQUENCE_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SequenceImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SequenceImpl.cpp deleted file mode 100644 index 37be7881be..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SequenceImpl.cpp +++ /dev/null @@ -1,977 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/07 08:25:11 $ */ - -#include "commonj/sdo/disable_warn.h" -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/TypeList.h" - -#include "commonj/sdo/SequenceImpl.h" - -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/DataObjectImpl.h" -#include "commonj/sdo/SDORuntimeException.h" -using namespace std; - - -#define CHECK_RANGE\ - if (index >= the_list.size()){\ - std::string msg("Index out of range:");\ - msg += index;\ - SDO_THROW_EXCEPTION("Sequence API", SDOIndexOutOfRangeException,\ - msg.c_str());\ - }\ - unsigned int j = 0;\ - for (i = the_list.begin(); (j < index) && (i != the_list.end()); ++i)\ - {\ - j++;\ - } - - -namespace commonj{ -namespace sdo{ - - SequenceImpl::SequenceImpl() - { - SDO_THROW_EXCEPTION("Sequence constructor", SDORuntimeException,\ - "SequenceImpl::construction without a data object");\ - } - - SequenceImpl::SequenceImpl(DataObject* indo) - { - the_do = (DataObjectImpl*)indo; - } - - SequenceImpl::SequenceImpl(SequenceImpl* inseq) - { - // take a copy of the_list - the_list = inseq->the_list; - } - - unsigned int SequenceImpl::size() - { - return the_list.size(); - } - - - /** - * Return the data object associated with this sequence - */ - - const DataObjectPtr SequenceImpl::getDataObject() - { - return the_do; - } - - const Property& SequenceImpl::getProperty(unsigned int index) - { - SEQUENCE_ITEM_LIST::iterator i; - - if (isText(index)) - { - std::string msg("Cannot get property of a text item"); - msg += index; - SDO_THROW_EXCEPTION("getProperty", SDOUnsupportedOperationException, - msg.c_str()); - } - - unsigned int j = 0; - for (i = the_list.begin() ; (j < index) && (i != the_list.end()); ++i){j++;} - - if (i != the_list.end()) { - return *((*i).getProp()); - } - std::string msg("Index out of range:"); - msg += index; - SDO_THROW_EXCEPTION("getProperty", SDOIndexOutOfRangeException, - msg.c_str()); - } - - Type::Types SequenceImpl::getTypeEnum(unsigned int index) - { - SEQUENCE_ITEM_LIST::iterator i; - - unsigned int j = 0; - for (i = the_list.begin() ; (j < index) && (i != the_list.end()); ++i){j++;} - - if (i != the_list.end()) { - if ((*i).getProp() == 0) { - // text type - return Type::TextType; - } - return (*i).getProp()->getTypeEnum(); - } - std::string msg("Index out of range:"); - msg += index; - SDO_THROW_EXCEPTION("getTypeEnum", SDOIndexOutOfRangeException, - msg.c_str()); - } - - unsigned int SequenceImpl::getListIndex(unsigned int index) - { - SEQUENCE_ITEM_LIST::iterator i; - unsigned int j = 0; - for (i = the_list.begin() ; (j < index) && (i != the_list.end()); ++i){j++;} - - if (i != the_list.end()) { - if ((*i).getProp() == 0) - { - std::string msg("Get list index on text property"); - SDO_THROW_EXCEPTION("getListIndex", SDOUnsupportedOperationException, - msg.c_str()); - } - if ( (*i).getProp()->isMany()) - { - return (*i).getIndex(); - } - else - { - std::string msg("Get list index on text single valued property"); - SDO_THROW_EXCEPTION("getListIndex", SDOUnsupportedOperationException, - msg.c_str()); - } - } - std::string msg("Index out of range:"); - msg += index; - SDO_THROW_EXCEPTION("getListIndex", SDOIndexOutOfRangeException, - msg.c_str()); - } - - unsigned int SequenceImpl::getIndex(const char* propName, unsigned int pindex) - { - SEQUENCE_ITEM_LIST::iterator i; - unsigned int j = 0; - for (i=the_list.begin(), j=0;i != the_list.end();++i,++j) { - const Property* p = (*i).getProp(); - if (p == 0 ) continue; // avoid text - if (!strcmp(p->getName(), propName)) { - if (p->isMany()) - { - if( pindex == (*i).getIndex())return j; - } - else { - return j; - } - } - } - SDO_THROW_EXCEPTION("getIndex", SDOIndexOutOfRangeException, - "SequenceImpl::getIndex - property Setting not in sequence"); - } - - unsigned int SequenceImpl::getIndex(const Property& p, unsigned int pindex) - { - return getIndex(p.getName(), pindex); - } - - /////////////////////////////////////////////////////////////////////////// - // specific getters for prims and data objects - /////////////////////////////////////////////////////////////////////////// - - -#define StringGetter(returntype,primtype,defval)\ - returntype SequenceImpl::get##primtype##Value(unsigned int index)\ - {\ - SEQUENCE_ITEM_LIST::iterator i;\ - CHECK_RANGE;\ - const Property* p = (*i).getProp();\ - if (p == 0) {\ - return (*i).getText();\ - }\ - if (p->isMany())\ - {\ - DataObjectList& dol = the_do->getList(*p);\ - DataObject* list_do = dol[(*i).getIndex()];\ - if (list_do != 0)\ - {\ - return ((DataObjectImpl*)list_do)->get##primtype();\ - }\ - return defval;\ - }\ - return the_do->get##primtype(*((*i).getProp()));\ - } - -#define getter(returntype,primtype,defval)\ - returntype SequenceImpl::get##primtype##Value(unsigned int index)\ - {\ - SEQUENCE_ITEM_LIST::iterator i;\ - CHECK_RANGE;\ - const Property* p = (*i).getProp();\ - if (p == 0) {\ - return defval;\ - }\ - if (p->isMany())\ - {\ - DataObjectList& dol = the_do->getList(*p);\ - DataObject* list_do = dol[(*i).getIndex()];\ - if (list_do != 0)\ - {\ - return ((DataObjectImpl*)list_do)->get##primtype();\ - }\ - return defval;\ - }\ - return the_do->get##primtype(*((*i).getProp()));\ - } - -#define ObjectGetter(returntype,primtype,defval)\ - returntype SequenceImpl::get##primtype##Value(unsigned int index)\ - {\ - SEQUENCE_ITEM_LIST::iterator i;\ - CHECK_RANGE;\ - const Property* p = (*i).getProp();\ - if (p == 0) {\ - return defval;\ - }\ - if (p->isMany())\ - {\ - DataObjectList& dol = the_do->getList(*p);\ - DataObject* list_do = dol[(*i).getIndex()];\ - if (list_do != 0)\ - {\ - return list_do;\ - }\ - return defval;\ - }\ - return the_do->get##primtype(*((*i).getProp()));\ - } - -#define CharGetter(returntype,primtype,defval)\ - unsigned int SequenceImpl::get##primtype##Value(unsigned int index, returntype ptr, unsigned int max)\ - {\ - SEQUENCE_ITEM_LIST::iterator i;\ - CHECK_RANGE;\ - const Property* p = (*i).getProp();\ - if (p == 0) {\ - return defval;\ - }\ - if (p->isMany())\ - {\ - DataObjectList& dol = the_do->getList(*p);\ - DataObject* list_do = dol[(*i).getIndex()];\ - if (list_do != 0)\ - {\ - return ((DataObjectImpl*)list_do)->get##primtype(ptr, max);\ - }\ - return defval;\ - }\ - return the_do->get##primtype(*((*i).getProp()), ptr, max);\ - } - - -StringGetter(const char* , CString, 0); - -CharGetter( wchar_t* , String, 0); -CharGetter( char*, Bytes, 0); - -unsigned int SequenceImpl::getLength(unsigned int index) -{ - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - const Property* p = (*i).getProp(); - switch (p->getTypeEnum()) - { - case Type::StringType: - return getStringValue(index,0,0); - case Type::BytesType: - return getBytesValue(index,0,0); - default: - return 0; - } -} - -getter(bool, Boolean, false); -getter(char, Byte, (char)0); -getter(wchar_t, Character, 0); -getter(short, Short, 0); -getter(long, Integer, 0L); -getter(int64_t, Long, 0); -getter(float, Float, (float)0); -getter(long double, Double, 0); -getter(const SDODate, Date, 0); - -ObjectGetter(RefCountingPointer<DataObject> , DataObject, 0); - - - /////////////////////////////////////////////////////////////////////////// - // generic getter for those types which support it - /////////////////////////////////////////////////////////////////////////// - - void SequenceImpl::setCStringValue( unsigned int index, const char* s ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - (*i).setText(s); - return; - } - the_do->setCString(*((*i).getProp()),s); - - } - void SequenceImpl::setBooleanValue( unsigned int index, bool b ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setBoolean(*((*i).getProp()),b); - } - - void SequenceImpl::setByteValue( unsigned int index, char c ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setByte(*((*i).getProp()),c); - } - - void SequenceImpl::setCharacterValue( unsigned int index, wchar_t c ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setCharacter(*((*i).getProp()),c); - } - void SequenceImpl::setStringValue( unsigned int index, const wchar_t* s , unsigned int len) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setString(*((*i).getProp()),s, len); - } - void SequenceImpl::setBytesValue( unsigned int index, const char* s , unsigned int len) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setBytes(*((*i).getProp()),s, len); - } - void SequenceImpl::setShortValue( unsigned int index, short s ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setShort(*((*i).getProp()),s); - } - - void SequenceImpl::setIntegerValue( unsigned int index, long l) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setInteger(*((*i).getProp()),l); - } - - - void SequenceImpl::setLongValue( unsigned int index, int64_t l ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setLong(*((*i).getProp()),l); - } - - void SequenceImpl::setFloatValue( unsigned int index, float f ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setFloat(*((*i).getProp()),f); - } - - - void SequenceImpl::setDoubleValue(unsigned int index, long double d ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setDouble(*((*i).getProp()),d); - } - - void SequenceImpl::setDateValue(unsigned int index, const SDODate t ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setDate(*((*i).getProp()),t); - } - - void SequenceImpl::setDataObjectValue(unsigned int index, DataObjectPtr d ) - { - SEQUENCE_ITEM_LIST::iterator i; - CHECK_RANGE; - if ((*i).getProp() == 0) { - return; - } - the_do->setDataObject(*((*i).getProp()),d); - } - - -#define doadder(primtype,primval)\ - bool SequenceImpl::add##primtype(const char* propertyName, primval v)\ - {\ - const PropertyImpl* p = the_do->getPropertyImpl(propertyName);\ - if (p == 0)\ - {\ - if (the_do->getType().isOpenType())\ - {\ - p = the_do->define ##primtype (propertyName, v->getType());\ - }\ - if (p == 0)\ - {\ - std::string msg("Cannot find property:");\ - msg += propertyName;\ - SDO_THROW_EXCEPTION("getProperty", SDOPropertyNotFoundException,\ - msg.c_str());\ - }\ - }\ - return add##primtype((const Property&)*p,v);\ - }\ - bool SequenceImpl::add##primtype(unsigned int propertyIndex, primval v)\ - {\ - return add##primtype(the_do->getProperty(propertyIndex), v);\ - }\ - bool SequenceImpl::add##primtype(const Property& p, primval v)\ - {\ - if (p.isMany())\ - {\ - DataObjectList& dol = the_do->getList(p);\ - dol.append((primval)v);\ - /* the_list.push_back(seq_item(&p,dol.size()-1));*/\ - return true;\ - }\ - SEQUENCE_ITEM_LIST::iterator i;\ - for (i=the_list.begin();i != the_list.end();++i) {\ - const Property* pp = (*i).getProp();\ - if (pp == 0) continue;\ - if (!strcmp(pp->getName(),p.getName()))\ - {\ - SDO_THROW_EXCEPTION("add", SDOUnsupportedOperationException,\ - "Sequence::add of property which already exists in sequence");\ - }\ - }\ - the_do->set##primtype(p,v);\ - the_list.push_back(seq_item(&p,0));\ - return true;\ - } - - -#define adder(primtype,primval, platval)\ - bool SequenceImpl::add##primtype(const char* propertyName, primval v)\ - {\ - const PropertyImpl* p = the_do->getPropertyImpl(propertyName);\ - if (p == 0)\ - {\ - if (the_do->getType().isOpenType())\ - {\ - p = the_do->define ##primtype (propertyName);\ - }\ - if (p == 0)\ - {\ - std::string msg("Cannot find property:");\ - msg += propertyName;\ - SDO_THROW_EXCEPTION("getProperty", SDOPropertyNotFoundException,\ - msg.c_str());\ - }\ - }\ - return add##primtype((const Property&)*p,v);\ - }\ - bool SequenceImpl::add##primtype(unsigned int propertyIndex, primval v)\ - {\ - return add##primtype(the_do->getProperty(propertyIndex), v);\ - }\ - bool SequenceImpl::add##primtype(const Property& p, primval v)\ - {\ - if (p.isMany())\ - {\ - DataObjectList& dol = the_do->getList(p);\ - dol.append((platval)v);\ - /* the_list.push_back(seq_item(&p,dol.size()-1));*/\ - return true;\ - }\ - SEQUENCE_ITEM_LIST::iterator i;\ - for (i=the_list.begin();i != the_list.end();++i) {\ - const Property* pp = (*i).getProp();\ - if (pp == 0) continue;\ - if (!strcmp(pp->getName(),p.getName()))\ - {\ - SDO_THROW_EXCEPTION("add", SDOUnsupportedOperationException,\ - "Sequence::add of property which already exists in sequence");\ - }\ - }\ - the_do->set##primtype(p,v);\ - the_list.push_back(seq_item(&p,0));\ - return true;\ - } - -adder( CString , const char* , const char* ); -adder( Boolean, bool, bool); -adder( Byte, char , char ); -adder(Character, wchar_t, wchar_t); -adder(Short, short, short); -#if __WORDSIZE ==64 -adder(Integer, long, int64_t); -#else -adder(Integer, long, long); -#endif -adder(Long, int64_t, int64_t); -adder(Float, float, float); -adder(Double, long double, long double); -adder(Date, const SDODate, const SDODate); -doadder(DataObject, RefCountingPointer<DataObject> ); - - -#define charAdder(primtype,primval)\ - bool SequenceImpl::add##primtype(const char* propertyName, primval v, unsigned int len)\ - {\ - const PropertyImpl* p = the_do->getPropertyImpl(propertyName);\ - if (p == 0)\ - {\ - if (the_do->getType().isOpenType())\ - {\ - p = the_do->define ##primtype (propertyName);\ - }\ - if (p == 0)\ - {\ - std::string msg("Cannot find property:");\ - msg += propertyName;\ - SDO_THROW_EXCEPTION("getProperty", SDOPropertyNotFoundException,\ - msg.c_str());\ - }\ - }\ - return add##primtype((const Property&)*p,v, len);\ - }\ - bool SequenceImpl::add##primtype(unsigned int propertyIndex, primval v, unsigned int len)\ - {\ - return add##primtype(the_do->getProperty(propertyIndex), v, len);\ - }\ - bool SequenceImpl::add##primtype(const Property& p, primval v, unsigned int len)\ - {\ - if (p.isMany())\ - {\ - DataObjectList& dol = the_do->getList(p);\ - dol.append((primval)v, len);\ - /*the_list.push_back(seq_item(&p,dol.size()-1));*/\ - return true;\ - }\ - SEQUENCE_ITEM_LIST::iterator i;\ - for (i=the_list.begin();i != the_list.end();++i) {\ - const Property* pp = (*i).getProp();\ - if (pp == 0) continue;\ - if (!strcmp(pp->getName(),p.getName()))\ - {\ - SDO_THROW_EXCEPTION("add", SDOUnsupportedOperationException,\ - "Sequence::add of property which already exists in sequence");\ - }\ - }\ - the_do->set##primtype(p,v, len);\ - the_list.push_back(seq_item(&p,0));\ - return true;\ - } - - -charAdder ( String, const wchar_t* ); -charAdder ( Bytes , const char* ); - - -#define inserter(primtype,primval, platval)\ - bool SequenceImpl::add##primtype(unsigned int index, const char* propertyName, primval v)\ - {\ - const PropertyImpl* p = the_do->getPropertyImpl(propertyName);\ - if (p == 0)\ - {\ - if (the_do->getType().isOpenType())\ - {\ - p = the_do->define ##primtype (propertyName);\ - }\ - if (p == 0)\ - {\ - std::string msg("Cannot find property:");\ - msg += propertyName;\ - SDO_THROW_EXCEPTION("getProperty", SDOPropertyNotFoundException,\ - msg.c_str());\ - }\ - }\ - return add##primtype(index,(const Property&)*p,v);\ - }\ - bool SequenceImpl::add##primtype(unsigned int index, unsigned int propertyIndex, primval v)\ - {\ - return add##primtype(index,the_do->getProperty(propertyIndex), v);\ - }\ - bool SequenceImpl::add##primtype(unsigned int index, const Property& p, primval v)\ - {\ - SEQUENCE_ITEM_LIST::iterator i;\ - SEQUENCE_ITEM_LIST::iterator i2 = the_list.end();\ - int j;\ - if (index >= the_list.size()) {\ - return add##primtype(p,v);\ - }\ - if (p.isMany())\ - {\ - DataObjectList& dol = the_do->getList(p);\ - dol.append((platval)v);\ - j = 0;\ - for (i=the_list.begin();(j < index) && (i != the_list.end());++i) {\ - j++;\ - }\ - /*the_list.insert(i,seq_item(&p,dol.size()-1));*/\ - return true;\ - }\ - j = 0;\ - for (i=the_list.begin();i != the_list.end();++i) {\ - const Property* pp = (*i).getProp();\ - if (pp == 0) continue;\ - if (!strcmp(pp->getName(),p.getName()))\ - {\ - SDO_THROW_EXCEPTION("Insert", SDOUnsupportedOperationException,\ - "Sequence::insert of property which already exists in sequence");\ - }\ - if (j == index) {\ - i2 = i;\ - }\ - j++;\ - }\ - the_do->set##primtype(p,v);\ - the_list.insert(i2,seq_item(&p,0));\ - return true;\ - } - -#define doinserter(primtype,primval)\ - bool SequenceImpl::add##primtype(unsigned int index, const char* propertyName, primval v)\ - {\ - const PropertyImpl* p = the_do->getPropertyImpl(propertyName);\ - if (p == 0)\ - {\ - if (the_do->getType().isOpenType())\ - {\ - p = the_do->define ##primtype (propertyName, v->getType());\ - }\ - if (p == 0)\ - {\ - std::string msg("Cannot find property:");\ - msg += propertyName;\ - SDO_THROW_EXCEPTION("getProperty", SDOPropertyNotFoundException,\ - msg.c_str());\ - }\ - }\ - return add##primtype(index,(const Property&)*p,v);\ - }\ - bool SequenceImpl::add##primtype(unsigned int index, unsigned int propertyIndex, primval v)\ - {\ - return add##primtype(index,the_do->getProperty(propertyIndex), v);\ - }\ - bool SequenceImpl::add##primtype(unsigned int index, const Property& p, primval v)\ - {\ - SEQUENCE_ITEM_LIST::iterator i;\ - SEQUENCE_ITEM_LIST::iterator i2 = the_list.end();\ - int j;\ - if (index >= the_list.size()) {\ - return add##primtype(p,v);\ - }\ - if (p.isMany())\ - {\ - DataObjectList& dol = the_do->getList(p);\ - dol.append((primval)v);\ - j = 0;\ - for (i=the_list.begin();(j < index) && (i != the_list.end());++i) {\ - j++;\ - }\ - /*the_list.insert(i,seq_item(&p,dol.size()-1));*/\ - return true;\ - }\ - j = 0;\ - for (i=the_list.begin();i != the_list.end();++i) {\ - const Property* pp = (*i).getProp();\ - if (pp == 0) continue;\ - if (!strcmp(pp->getName(),p.getName()))\ - {\ - SDO_THROW_EXCEPTION("Insert", SDOUnsupportedOperationException,\ - "Sequence::insert of property which already exists in sequence");\ - }\ - if (j == index) {\ - i2 = i;\ - }\ - j++;\ - }\ - the_do->set##primtype(p,v);\ - the_list.insert(i2,seq_item(&p,0));\ - return true;\ - } - -inserter( CString , const char* , const char* ); -inserter( Boolean, bool, bool); -inserter( Byte, char , char ); -inserter(Character, wchar_t, wchar_t ); -inserter(Short, short, short ); -#if __WORDSIZE ==64 -inserter(Integer, long, int64_t ); -#else -inserter(Integer, long, long ); -#endif -inserter(Long, int64_t, int64_t); -inserter(Float, float, float ); -inserter(Double, long double, long double); -inserter(Date, const SDODate, const SDODate); -doinserter(DataObject, RefCountingPointer<DataObject>); - - - -#define charInserter(primtype,primval)\ - bool SequenceImpl::add##primtype(unsigned int index, const char* propertyName, primval v, unsigned int len)\ - {\ - const PropertyImpl* p = the_do->getPropertyImpl(propertyName);\ - if (p == 0)\ - {\ - if (the_do->getType().isOpenType())\ - {\ - p = the_do->define ##primtype (propertyName);\ - }\ - if (p == 0)\ - {\ - std::string msg("Cannot find property:");\ - msg += propertyName;\ - SDO_THROW_EXCEPTION("getProperty", SDOPropertyNotFoundException,\ - msg.c_str());\ - }\ - }\ - return add##primtype(index,(const Property&)*p,v, len);\ - }\ - bool SequenceImpl::add##primtype(unsigned int index, unsigned int propertyIndex, primval v, unsigned int len)\ - {\ - return add##primtype(index,the_do->getProperty(propertyIndex), v, len);\ - }\ - bool SequenceImpl::add##primtype(unsigned int index, const Property& p, primval v, unsigned int len)\ - {\ - SEQUENCE_ITEM_LIST::iterator i;\ - SEQUENCE_ITEM_LIST::iterator i2 = the_list.end();\ - unsigned int j;\ - if (index >= the_list.size()) {\ - return add##primtype(p,v, len);\ - }\ - if (p.isMany())\ - {\ - DataObjectList& dol = the_do->getList(p);\ - dol.append((primval)v, len);\ - j = 0;\ - for (i=the_list.begin();(j < index) && (i != the_list.end());++i) {\ - j++;\ - }\ - /*the_list.insert(i,seq_item(&p,dol.size()-1));*/\ - return true;\ - }\ - j = 0;\ - for (i=the_list.begin();i != the_list.end();++i) {\ - const Property* pp = (*i).getProp();\ - if (pp == 0) continue;\ - if (!strcmp(pp->getName(),p.getName()))\ - {\ - SDO_THROW_EXCEPTION("Insert", SDOUnsupportedOperationException,\ - "Sequence::insert of property which already exists in sequence");\ - }\ - if (j == index) {\ - i2 = i;\ - }\ - j++;\ - }\ - the_do->set##primtype(p,v, len);\ - the_list.insert(i2,seq_item(&p,0));\ - return true;\ - } - - -charInserter( String , const wchar_t* ); -charInserter (Bytes , const char* ); - - - - - - void SequenceImpl::push(const Property& p, unsigned int index) - { - the_list.push_back(seq_item(&p,index)); - } - - void SequenceImpl::remove(unsigned int index) - { - if (index >= the_list.size()) { - std::string msg("Index out of range:"); - msg += index; - SDO_THROW_EXCEPTION("Sequence remove", SDOIndexOutOfRangeException, - msg.c_str()); - } - SEQUENCE_ITEM_LIST::iterator i; - int j = 0; - for (i=the_list.begin();(j < index) && (i != the_list.end()) ; ++i) - { - j++; - } - the_list.erase(i); - return; - } - - void SequenceImpl::removeAll(const Property& p) - { - int j = 0; - const Property* prop; - SEQUENCE_ITEM_LIST::iterator i; - for (i=the_list.begin();i != the_list.end(); ++i) - { - prop = (*i).getProp(); - if (prop != 0) { - if (!strcmp(prop->getName(), - p.getName())) - { - // not sure this works - does i still equate - // to an iterator over the list after the remove? - i = the_list.erase(i); - } - } - } - - return; - } - - void SequenceImpl::move(unsigned int toIndex, unsigned int fromIndex) - { - if (fromIndex >= the_list.size()) { - std::string msg("Index out of range:"); - msg += fromIndex; - SDO_THROW_EXCEPTION("Sequence Move", SDOIndexOutOfRangeException, - msg.c_str()); - } - - if (toIndex == fromIndex) return; - - SEQUENCE_ITEM_LIST::iterator i1, - i2 = the_list.end(), - i3 = the_list.end(); - int j = 0; - for (i3 = the_list.begin(); - j < toIndex && j < fromIndex && - i3 != the_list.end() ; ++i3); - { - if (j == toIndex) i1 = i3; - if (j == fromIndex) i2 = i3; - j++; - } - - if (toIndex < fromIndex) - { - the_list.insert( i1, *i2); - the_list.erase(i2); - } - else - { - if (toIndex + 1 == the_list.size()) - { - the_list.push_back(*i2); - } - else - { - the_list.insert(++i1,*i2); - } - the_list.erase(i2); - } - return; - } - - bool SequenceImpl::addText(const char* text) - { - the_list.push_back(seq_item(text)); - return true; - } - - bool SequenceImpl::isText(unsigned int index) - { - if (index >= the_list.size()) { - return false; - } - SEQUENCE_ITEM_LIST::iterator i; - int j = 0; - for (i= the_list.begin(); (j < index) && (i != the_list.end()); ++i) - { - j++; - } - if ((*i).getProp() == 0) - { - return true; - } - - return false; - } - - bool SequenceImpl::addText(unsigned int index, const char* text) - { - if (index >= the_list.size()) { - return addText(text); - } - - SEQUENCE_ITEM_LIST::iterator i; - int j = 0; - for (i= the_list.begin(); (j < index) && (i != the_list.end()); ++i) - { - j++; - } - the_list.insert(i,seq_item(text)); - return true; - } - - bool SequenceImpl::setText(unsigned int index, const char* text) - { - if (index >= the_list.size()) { - return false; - } - - if (!isText(index)) - { - return false; - } - - SEQUENCE_ITEM_LIST::iterator i; - int j = 0; - for (i= the_list.begin(); (j < index) && (i != the_list.end()); ++i) - { - j++; - } - (*i).setText(text); - return true; - } - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SequenceImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SequenceImpl.h deleted file mode 100644 index 620de1187d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SequenceImpl.h +++ /dev/null @@ -1,375 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/17 16:01:05 $ */ - -#ifndef _SEQUENCEIMPL_H_ -#define _SEQUENCEIMPL_H_ - -#include "commonj/sdo/disable_warn.h" - -#include <vector> - - -#include "commonj/sdo/Sequence.h" -#include "commonj/sdo/SDODate.h" - -#define SequenceImplPtr RefCountingPointer<SequenceImpl> - -namespace commonj{ -namespace sdo{ - -class Property; /* forward declaration */ -class DataObjectImpl; - -/** SequenceImpl implements the abstract class Sequence. - * - * A sequence is a heterogeneous list of properties and corresponding values. - * It represents an ordered arbitrary mixture of data values from more - * than one property of a {@link DataObject data object}. - */ - -class SequenceImpl : public Sequence -{ - public: - /////////////////////////////////////////////////////////////////////////// - // Returns the number of entries in the sequence. - // @return the number of entries. - /////////////////////////////////////////////////////////////////////////// - virtual unsigned int size(); - - /////////////////////////////////////////////////////////////////////////// - // Returns the property for the given entry index. - /////////////////////////////////////////////////////////////////////////// - virtual const Property& getProperty(unsigned int index); - - /** - * Return the data object associated with this sequence - */ - - SDO_API virtual const DataObjectPtr getDataObject(); - - /////////////////////////////////////////////////////////////////////////// - // Returns the property for the given entry index. - /////////////////////////////////////////////////////////////////////////// - virtual unsigned int getIndex(const Property& p, unsigned int pindex=0); - virtual unsigned int getIndex(const char* propName, unsigned int pindex=0); - - virtual unsigned int getListIndex(unsigned int index); - - Type::Types getTypeEnum(unsigned int index); - - - /////////////////////////////////////////////////////////////////////////// - // Returns the property value for the given entry index. - // @param index the index of the entry. - // @return the value for the given entry index.. - /////////////////////////////////////////////////////////////////////////// - virtual const char* getCStringValue(unsigned int index); - virtual bool getBooleanValue(unsigned int index); - virtual char getByteValue(unsigned int index); - virtual wchar_t getCharacterValue(unsigned int index); - virtual unsigned int getStringValue(unsigned int index, wchar_t* val, unsigned int max); - virtual unsigned int getBytesValue(unsigned int index, char* val, unsigned int max); - virtual short getShortValue(unsigned int index); - virtual long getIntegerValue(unsigned int index); - virtual int64_t getLongValue(unsigned int index); - virtual float getFloatValue(unsigned int index); - virtual long double getDoubleValue(unsigned int index); - virtual const SDODate getDateValue(unsigned int index); - virtual DataObjectPtr getDataObjectValue(unsigned int index); - - virtual unsigned int getLength(unsigned int index); - - /////////////////////////////////////////////////////////////////////////// - // sets the entry at a specified index to the new value. - // @param index the index of the entry. - // @param value the new value for the entry. - /////////////////////////////////////////////////////////////////////////// - - virtual void setCStringValue( unsigned int index, const char* s ); - virtual void setBooleanValue( unsigned int index, bool b ); - virtual void setByteValue( unsigned int index, char c ); - virtual void setCharacterValue( unsigned int index, wchar_t c ); - virtual void setBytesValue( unsigned int index, const char* s , unsigned int len); - virtual void setStringValue( unsigned int index, const wchar_t* s , unsigned int len); - virtual void setShortValue( unsigned int index, short s ); - virtual void setIntegerValue( unsigned int index, long i ); - virtual void setLongValue( unsigned int index, int64_t l ); - virtual void setFloatValue( unsigned int index, float f ); - virtual void setDoubleValue( unsigned int index, long double d ); - virtual void setDateValue( unsigned int index, const SDODate t ); - virtual void setDataObjectValue(unsigned int index, DataObjectPtr d ); - - - /////////////////////////////////////////////////////////////////////////// - // adds a new entry with the specified property name and value - // to the end of the entries. - // @param propertyName the name of the entry's property. - // @param value the value for the entry. - /////////////////////////////////////////////////////////////////////////// - virtual bool addCString( const char* propertyName,const char* s ); - virtual bool addBoolean( const char* propertyName,bool b ); - virtual bool addByte( const char* propertyName,char c ); - virtual bool addCharacter( const char* propertyName,wchar_t c ); - virtual bool addString( const char* propertyName,const wchar_t* s , unsigned int len); - virtual bool addBytes( const char* propertyName,const char* s , unsigned int len); - virtual bool addShort( const char* propertyName,short s ); - virtual bool addInteger( const char* propertyName,long i ); - virtual bool addLong( const char* propertyName,int64_t l ); - virtual bool addFloat( const char* propertyName,float f ); - virtual bool addDouble( const char* propertyName,long double d ); - virtual bool addDate( const char* propertyName,const SDODate t ); - virtual bool addDataObject(const char* propertyName,DataObjectPtr d ); - - - /////////////////////////////////////////////////////////////////////////// - // adds a new entry with the specified property index and value - // to the end of the entries. - // @param propertyIndex the index of the entry's property. - // @param value the value for the entry. - /////////////////////////////////////////////////////////////////////////// - virtual bool addCString( unsigned int propertyIndex,const char* s ); - virtual bool addBoolean( unsigned int propertyIndex,bool b ); - virtual bool addByte( unsigned int propertyIndex,char c ); - virtual bool addCharacter( unsigned int propertyIndex,wchar_t c ); - virtual bool addString( unsigned int propertyIndex,const wchar_t* s , unsigned int len); - virtual bool addBytes( unsigned int propertyIndex,const char* s , unsigned int len); - virtual bool addShort( unsigned int propertyIndex,short s ); - virtual bool addInteger( unsigned int propertyIndex,long i ); - virtual bool addLong( unsigned int propertyIndex,int64_t l ); - virtual bool addFloat( unsigned int propertyIndex,float f ); - virtual bool addDouble( unsigned int propertyIndex,long double d ); - virtual bool addDate( unsigned int propertyIndex,const SDODate t ); - virtual bool addDataObject(unsigned int propertyIndex,DataObjectPtr d ); - - - /////////////////////////////////////////////////////////////////////////// - // adds a new entry with the specified property and value - // to the end of the entries. - // @param property the property of the entry. - // @param value the value for the entry. - /////////////////////////////////////////////////////////////////////////// - - virtual bool addCString( const Property& property,const char* s ); - virtual bool addBoolean( const Property& property,bool b ); - virtual bool addByte( const Property& property,char c ); - virtual bool addCharacter( const Property& property,wchar_t c ); - virtual bool addString( const Property& property,const wchar_t* s , unsigned int len); - virtual bool addBytes( const Property& property,const char* s , unsigned int len); - virtual bool addShort( const Property& property,short s ); - virtual bool addInteger( const Property& property,long i ); - virtual bool addLong( const Property& property,int64_t l ); - virtual bool addFloat( const Property& property,float f ); - virtual bool addDouble( const Property& property,long double d ); - virtual bool addDate( const Property& property,const SDODate t ); - virtual bool addDataObject(const Property& property,DataObjectPtr d ); - - - /////////////////////////////////////////////////////////////////////////// - // adds a new entry with the specified property name and value - // at the specified entry index. - // @param index the index at which to add the entry. - // @param propertyName the name of the entry's property. - // @param value the value for the entry. - /////////////////////////////////////////////////////////////////////////// - virtual bool addCString( unsigned int index,const char* propertyName,const char* s ); - virtual bool addBoolean( unsigned int index,const char* propertyName,bool b ); - virtual bool addByte( unsigned int index,const char* propertyName,char c ); - virtual bool addCharacter( unsigned int index,const char* propertyName,wchar_t c ); - virtual bool addString( unsigned int index,const char* propertyName,const wchar_t* s , unsigned int len); - virtual bool addBytes( unsigned int index,const char* propertyName,const char* s , unsigned int len); - virtual bool addShort( unsigned int index,const char* propertyName,short s ); - virtual bool addInteger( unsigned int index,const char* propertyName,long i ); - virtual bool addLong( unsigned int index,const char* propertyName,int64_t l ); - virtual bool addFloat( unsigned int index,const char* propertyName,float f ); - virtual bool addDouble( unsigned int index,const char* propertyName,long double d ); - virtual bool addDate( unsigned int index,const char* propertyName,const SDODate t ); - virtual bool addDataObject(unsigned int index,const char* propertyName,DataObjectPtr d ); - - - /////////////////////////////////////////////////////////////////////////// - // adds a new entry with the specified property index and value - // at the specified entry index. - // @param index the index at which to add the entry. - // @param propertyIndex the index of the entry's property. - // @param value the value for the entry. - /////////////////////////////////////////////////////////////////////////// - virtual bool addCString( unsigned int index,unsigned int propertyIndex,const char* s ); - virtual bool addBoolean( unsigned int index,unsigned int propertyIndex,bool b ); - virtual bool addByte( unsigned int index,unsigned int propertyIndex,char c ); - virtual bool addCharacter( unsigned int index,unsigned int propertyIndex,wchar_t c ); - virtual bool addString( unsigned int index,unsigned int propertyIndex,const wchar_t* s , unsigned int len); - virtual bool addBytes( unsigned int index,unsigned int propertyIndex,const char* s , unsigned int len); - virtual bool addShort( unsigned int index,unsigned int propertyIndex,short s ); - virtual bool addInteger( unsigned int index,unsigned int propertyIndex,long i ); - virtual bool addLong( unsigned int index,unsigned int propertyIndex,int64_t l ); - virtual bool addFloat( unsigned int index,unsigned int propertyIndex,float f ); - virtual bool addDouble( unsigned int index,unsigned int propertyIndex,long double d ); - virtual bool addDate( unsigned int index,unsigned int propertyIndex,const SDODate t ); - virtual bool addDataObject(unsigned int index,unsigned int propertyIndex,DataObjectPtr d ); - - - /////////////////////////////////////////////////////////////////////////// - // adds a new entry with the specified property and value - // at the specified entry index. - // @param index the index at which to add the entry. - // @param property the property of the entry. - // @param value the value for the entry. - /////////////////////////////////////////////////////////////////////////// - virtual bool addCString( unsigned int index,const Property& property,const char* s ); - virtual bool addBoolean( unsigned int index,const Property& property,bool b ); - virtual bool addByte( unsigned int index,const Property& property,char c ); - virtual bool addCharacter( unsigned int index,const Property& property,wchar_t c ); - virtual bool addString( unsigned int index,const Property& property,const wchar_t* s , unsigned int len); - virtual bool addBytes( unsigned int index,const Property& property,const char* s , unsigned int len); - virtual bool addShort( unsigned int index,const Property& property,short s ); - virtual bool addInteger( unsigned int index,const Property& property,long i ); - virtual bool addLong( unsigned int index,const Property& property,int64_t l ); - virtual bool addFloat( unsigned int index,const Property& property,float f ); - virtual bool addDouble( unsigned int index,const Property& property,long double d ); - virtual bool addDate( unsigned int index,const Property& property,const SDODate t ); - virtual bool addDataObject(unsigned int index,const Property& property,DataObjectPtr d ); - - - /////////////////////////////////////////////////////////////////////////// - // removes the entry at the given entry index. - // @param index the index of the entry - /////////////////////////////////////////////////////////////////////////// - virtual void remove(unsigned int index); - virtual void removeAll(const Property& p); - - /////////////////////////////////////////////////////////////////////////// - // pushes a new entry without setting the property. - // @param index the index of the entry - /////////////////////////////////////////////////////////////////////////// - virtual void push(const Property& p, unsigned int index); - - /////////////////////////////////////////////////////////////////////////// - // Moves the entry at <code>fromIndex</code> to <code>toIndex</code>. - // @param toIndex the index of the entry destination. - // @param fromIndex the index of the entry to move. - /////////////////////////////////////////////////////////////////////////// - virtual void move(unsigned int toIndex, unsigned int fromIndex); - - /////////////////////////////////////////////////////////////////////////// - // adds a new Setting with the SDO text Property - // to the end of the Settings. - // @param text value of the Setting. - /////////////////////////////////////////////////////////////////////////// - virtual bool addText(const char* text); - - /////////////////////////////////////////////////////////////////////////// - // adds a new Setting with the SDO text Property - // to the Settings. - // @param index the index at which to add the entry. - // @param text value of the Setting. - /////////////////////////////////////////////////////////////////////////// - virtual bool addText(unsigned int index, const char* text); - - /////////////////////////////////////////////////////////////////////////// - // sets a text Property - // @param index the index at which to set the entry. - // @param text value of the Setting. - /////////////////////////////////////////////////////////////////////////// - bool setText(unsigned int index, const char* text); - - /////////////////////////////////////////////////////////////////////////// - // Checks if an entry is text or a setting. - /////////////////////////////////////////////////////////////////////////// - virtual bool isText(unsigned int index); - - SequenceImpl(DataObject* the_do); - SequenceImpl(SequenceImpl* s); - - private: - - SequenceImpl(); - - DataObjectImpl* the_do; - - class seq_item { - public: - seq_item(const Property* p, unsigned int i): - the_prop(p) - { - index = i; - text = 0; - } - seq_item(const char* t) - { - text = new char[strlen(t) + 1]; - strcpy(text,t); - the_prop = 0; - } - - ~seq_item() - { - if (text) { - delete text; - } - } - - seq_item(const seq_item& sin) - { - the_prop = sin.the_prop; - index = sin.index; - if (sin.text) { - text = new char[strlen(sin.text) +1]; - strcpy(text, sin.text); - } - else - { - text =0; - } - } - - const Property* getProp() {return the_prop;} - unsigned int getIndex() { return index;} - char* getText() { return text;} - void setProp(Property* p) { the_prop = p;} - void setText(const char* intext) - { - if (intext != 0) - { - if (text != 0) - { - delete text; - } - text = new char[strlen(intext) +1]; - strcpy(text,intext); - } - } - void setIndex(unsigned int i) - { - index = i; - } - private: - const Property* the_prop; - unsigned int index; - char* text; - }; - - typedef std::list<seq_item> SEQUENCE_ITEM_LIST; - - SEQUENCE_ITEM_LIST the_list; - -}; -}; -}; - -#endif //_SEQUENCE_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Setting.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Setting.cpp deleted file mode 100644 index 6aa8dab8b6..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Setting.cpp +++ /dev/null @@ -1,303 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/Setting.h" -#include "commonj/sdo/TypeImpl.h" - -namespace commonj{ -namespace sdo { - - Setting::Setting(bool set, bool nul, void* invalue, unsigned int len, const Property& p, unsigned int inindex) - : bisSet(set), bisNull(nul) , value(invalue),theProp(&p) - { - index = inindex; - length = len; - strbuf = 0; - } - - void Setting::copy(const Setting& s) - { - bisSet = s.isSet(); - bisNull = s.isNull(); - index = s.getIndex(); - length = s.getLength(); - theProp = &(s.getProperty()); - strbuf = 0; - switch (theProp->getTypeEnum()) - { - case Type::BooleanType: - value = new long; - *(long*)value = (long)s.getBooleanValue(); - break; - case Type::ByteType: - value = new long; - *(long*)value = (long)s.getByteValue(); - break; - case Type::CharacterType: - value = new long; - *(long*)value = (long)s.getCharacterValue(); - break; - case Type::IntegerType: - value = new long; - *(long*)value = (long)s.getIntegerValue(); - break; - case Type::ShortType: - value = new long; - *(long*)value = (long)s.getShortValue(); - break; - case Type::DoubleType: - value = new long double; - *(long double*)value = s.getDoubleValue(); - break; - case Type::FloatType: - value = new float; - *(float*)value = s.getFloatValue(); - break; - case Type::LongType: - value = new int64_t; - *(int64_t*)value = s.getLongValue(); - break; - case Type::DateType: - value = new long; - *(long*)value = long(s.getDateValue().getTime()); - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - value = new wchar_t[length]; - s.getStringValue((wchar_t*)value,length); - break; - case Type::BytesType: - value = new char[length]; - s.getBytesValue((char*)value,length); - break; - case Type::OtherTypes: - case Type::DataObjectType: - case Type::ChangeSummaryType: - value = s.getDataObjectValue(); - default: - break; - } - } - - Setting& Setting::operator=(const Setting& s) - { - if (this == &s) return *this; - copy(s); - return *this; - } - - Setting::Setting(const Setting& s) - { - copy(s); - } - - Setting::~Setting() - { - // The value has been allocated for everything except data objects - - switch (theProp->getTypeEnum()) - { - case Type::BooleanType: - case Type::ByteType: - case Type::CharacterType: - case Type::IntegerType: - case Type::ShortType: - delete (long*)value; - break; - case Type::DoubleType: - delete (long double*)value; - break; - case Type::FloatType: - delete (float*)value; - break; - case Type::LongType: - delete (int64_t*)value; - break; - case Type::DateType: - delete (long*)value; - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - delete (wchar_t*)value; - break; - case Type::BytesType: - delete (char*)value; - break; - case Type::OtherTypes: - case Type::DataObjectType: - case Type::ChangeSummaryType: - default: - break; - } - if (strbuf != 0) delete strbuf; - } - - const Property& Setting::getProperty() const - { - return *theProp; - } - - const Type& Setting::getType() const - { - return theProp->getType(); - } - - bool Setting::getBooleanValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToBoolean(value, length); - //if (value == 0) return false; - //if (*(long*)value != 0) { - // return true; - //} - //return false; - } - - char Setting::getByteValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToByte(value, length); - //if (value == 0) return 0; - //return (char)*(long*)value; - } - - wchar_t Setting::getCharacterValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToCharacter(value, length); - //if (value == 0) return 0; - //return (wchar_t)*(long*)value; - } - - unsigned int Setting::getBytesValue(char* buffer, unsigned int max) const - { - if (buffer == 0 && max == 0) return length; - - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToBytes(value, buffer,length, max); - //int i; - //char* c = (char*)value; - //for (i=0;i < max && i < length;i++) - //{ - // buffer[i] = (char)*c; - // c++; - //} - //return i; - } - - unsigned int Setting::getStringValue(wchar_t* buffer, unsigned int max) const - { - if (buffer == 0 && max == 0) return length; - - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToString(value, buffer,length, max); - //int i; - //wchar_t* c = (wchar_t*)value; - //for (i=0;i < max && i < length;i++) - //{ - // buffer[i] = (wchar_t)*c; - // c++; - //} - //return i; - } - - short Setting::getShortValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToShort(value,length); - //return (short)*(long*)value; - } - - long Setting::getIntegerValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToInteger(value, length); - //return *(long*)value; - } - - - int64_t Setting::getLongValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToLong(value, length); - //return (int64_t)*(int64_t*)value; - } - - float Setting::getFloatValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToFloat(value, length); - //return (float)*(float*)value; - } - - const SDODate Setting::getDateValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToDate(value, length); - } - - - long double Setting::getDoubleValue() const - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToDouble(value, length); - //return (long double)*(long double*)value; - } - - const char* Setting::getCStringValue() - { - TypeImpl* t = (TypeImpl*)&(getType()); - return t->convertToCString(value, &strbuf, length); - //return (const char*)value; - } - - RefCountingPointer<DataObject> Setting::getDataObjectValue() const - { - DataObject *dob = (DataObject*)value; - return RefCountingPointer<DataObject>(dob); - } - - - unsigned int Setting::getLength() const - { - return length; - } - - unsigned int Setting::getIndex() const - { - return index; - } - - bool Setting::isSet() const - { - return bisSet; - } - - bool Setting::isNull() const - { - return bisNull; - } - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Setting.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Setting.h deleted file mode 100644 index 37de243716..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Setting.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef SETTING_H -#define SETTING_H - -#include "commonj/sdo/export.h" - -#include "commonj/sdo/Type.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/SDODate.h" - -namespace commonj{ -namespace sdo { - - class Property; - - /** - * A Setting encapsulates a property and a corresponding single value of - * the property's type. - */ - - class Setting - { - public: - - Setting(bool set, bool nul, void* invalue, unsigned int len, const Property& p, - unsigned int inindex); - - Setting(const Setting& s); - - void copy(const Setting& s); - - Setting& operator=(const Setting& s); - - - virtual ~Setting(); - - - /** getProperty returns the property set. - * - * Returns the property of the Setting. - * @return the Setting property. - */ - - SDO_API const Property& getProperty() const; - - /** getType returns the type of the property - * - * Returns the type of this property. This is the same as - * getProperty().getType() - */ - - SDO_API const Type& getType() const; - - /** getTypeEnum returns the type enumerator - * - * Returns the enum for the type of this property - */ - - SDO_API Type::Types getTypeEnum() const; - - - /** get methods get the right type of value from the setting - * - * - * Returns the value of the Setting. This must be of the right type for - * Setting value. - */ - - SDO_API bool getBooleanValue() const; - SDO_API char getByteValue() const; - SDO_API wchar_t getCharacterValue() const; - SDO_API unsigned int getBytesValue(char* buffer, unsigned int max) const; - SDO_API unsigned int getStringValue(wchar_t* buffer, unsigned int max) const; - SDO_API short getShortValue() const; - SDO_API long getIntegerValue() const; - SDO_API int64_t getLongValue() const; - SDO_API float getFloatValue() const; - SDO_API long double getDoubleValue() const; - SDO_API const SDODate getDateValue() const; - SDO_API const char* getCStringValue() ; - SDO_API DataObjectPtr getDataObjectValue() const; - - - - /** getIndex returns the index in a many-valued property - * - * Returns the index of the Setting, if this is many valued - */ - - SDO_API unsigned int getIndex() const; - - - /** getLength gives the length of a string or bytes - * - * Returns the length of the setting, if this is a String or - * Bytes type - */ - - SDO_API unsigned int getLength() const ; - - /** isSet returns whether the property WAS set. - * - * Returns whether or not the property is set. This value comes from the - * setting, and tells us whether the property was set before the change - * occurred. - */ - - SDO_API bool isSet() const; - - /** isNull is true if the property value WAS null - * - * Returns whether or not the property was null beforfe the setting - * happened. - */ - - SDO_API bool isNull() const; - - private: - - bool bisSet; - bool bisNull; - void* value; - const Property* theProp; - unsigned int length; - unsigned int index; - char* strbuf; - }; -}; -}; - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SettingList.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SettingList.cpp deleted file mode 100644 index 2617f49289..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SettingList.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/17 16:01:05 $ */ - -#include "commonj/sdo/SDORuntimeException.h" - -#include "commonj/sdo/SettingList.h" -#include "commonj/sdo/Logger.h" -#include "commonj/sdo/Setting.h" - -namespace commonj{ -namespace sdo { - - -//SettingList::SettingList(SETTING_VECTOR p) : slist (p) -//{ -//} - -/*SettingList::SettingList(const SettingList &pin) -{ - Logger::log("SettingList copy constructor\n"); - slist = std::vector<Setting>(pin.getVec()); -} -*/ - -SettingList::SettingList() -{ -} - -SettingList::~SettingList() -{ - while (slist.size() > 0) - { - Setting* s = slist[0]; - slist.erase(slist.begin()); - delete s; - } - -} - - -Setting& SettingList::operator[] (int pos) const -{ - validateIndex(pos); - return (*slist[pos]); -} - -Setting* SettingList::get(int pos) -{ - validateIndex(pos); - return (slist[pos]); -} - -int SettingList::size () const -{ - return slist.size(); -} - -//SETTING_VECTOR SettingList::getVec() const -//{ -// return slist; -//} - -void SettingList::insert (unsigned int index, Setting* d) -{ - slist.insert(slist.begin()+index, d); -} - -void SettingList::append ( Setting* d) -{ - slist.insert(slist.end(),d); -} - -void SettingList::remove(unsigned int index) -{ - validateIndex(index); - const Setting* s = slist[index]; - slist.erase(slist.begin()+index); - delete s; - return; -} - -void SettingList::validateIndex(int index) const -{ - if ((index < 0) || (index > size())) - { - std::string msg("Index out of range:"); - msg += index; - SDO_THROW_EXCEPTION("ValidateIndex", SDOIndexOutOfRangeException, - msg.c_str()); - - } - -} - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SettingList.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SettingList.h deleted file mode 100644 index 63089a1b70..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/SettingList.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/17 16:01:05 $ */ - -#ifndef SETTINGLIST_H -#define SETTINGLIST_H - - - -#include <vector> -#include "commonj/sdo/Setting.h" - -namespace commonj{ -namespace sdo{ - -typedef std::vector< Setting*> SETTING_VECTOR; - -/** SettingList is a list of settings returned by a change summary - */ - -class SettingList -{ - -public: - //SettingList(SETTING_VECTOR sl); - SettingList(); - - virtual ~SettingList(); - - /** [] is the index operator - * - * This gives access to elements of the list - */ - - SDO_API virtual Setting& operator[] (int pos) const; - - /** size() returns the number of settings - * - * This method returns the size of the list os settings found. - * These may be creations, deletions or changes. - */ - - SDO_API virtual int size () const; - - virtual void insert (unsigned int index, Setting* d); - virtual void append ( Setting* d); - virtual void remove (unsigned int index); - virtual Setting* get (int pos); - - -private: - SETTING_VECTOR slist; - - void validateIndex(int index) const; -}; - -}; -}; - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Type.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Type.cpp deleted file mode 100644 index 3f381ed1cf..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Type.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/Type.h" - -namespace commonj{ -namespace sdo{ - - - Type::~Type() - { - } - - const SDOString Type::SDOTypeNamespaceURI = "commonj.sdo"; - -}; -}; -// end - namespace sdo - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Type.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Type.h deleted file mode 100644 index 7b7b939d6e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/Type.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/02 16:41:30 $ */ - -#ifndef _SDO_TYPE_H_ -#define _SDO_TYPE_H_ - - -#include "commonj/sdo/export.h" - -#include "commonj/sdo/PropertyList.h" -#include "commonj/sdo/SDOString.h" - - -namespace commonj{ -namespace sdo{ - - - - -class Property; - - /** - * - * Type is a representation of the type of a property of a data object. - */ - -class Type -{ - -public: - - -/** \enum Types - * - * This is the enumerator for all DataType types. All DataObjectType types - * appear as a Type::Types of DataObjectType. - * otherTypes, ChangeSumamryType and TextType are not used by client code. - */ - - - SDO_API enum Types - { - // Zero is a value for 'unknown type; - all data objects' - OtherTypes = 0, - BigDecimalType, - BigIntegerType, - BooleanType, - ByteType, - BytesType, - CharacterType, - DateType, - DoubleType, - FloatType, - IntegerType, - LongType, - ShortType, - StringType, - UriType, - DataObjectType, - ChangeSummaryType, - TextType, - OpenDataObjectType, - num_types - }; - - virtual SDO_API ~Type(); - - /** getName returns the name of the type - * - * This method returns a const char* name of the type. - */ - - virtual SDO_API const char* getName() const = 0; - - /** getAlias returns the n'th alias - * - * This method returns a const char* corresponding to the - * alias at index n of the list of aliases. Use getAliasCount to - * discover the size of the list. - */ - - virtual SDO_API const char* getAlias(unsigned int index = 0) const = 0; - - /** getAliasCount returns the number of aliases - * - * This method returns the number of aliases for this type - */ - - virtual SDO_API unsigned int getAliasCount() const = 0; - - /** getBaseType returns the base if there is one - * - * This method returns a const Type* corresponding to the - * base Type for this type. The base type is the one which - * this type inherits from. - */ - - virtual SDO_API const Type* getBaseType() const = 0; - - /** getURI returns the URI for this type - * - * This method returns the URI for this type. The URI may be - * null. - */ - - virtual SDO_API const char* getURI() const = 0; - - - - /** getProperties returns a list of properties for this type - * - * This method returns the list of properties for this type. - * Instances of open types may have more properties than appear - * in this list. - * See the propertylist API. - */ - - virtual SDO_API PropertyList getProperties() const = 0; - - - /** getProperty returns a property for this type - * - * This method returns a property, by index or by name - */ - - virtual SDO_API const Property& getProperty(const char* propertyName) const = 0; - virtual SDO_API const Property& getProperty(const SDOString& propertyName) const = 0; - virtual SDO_API const Property& getProperty(unsigned int index) const = 0; - - /** getPropertyIndex returns an index - * - * This method returns a property index for a named property - */ - - virtual SDO_API unsigned int getPropertyIndex(const char* propertyName) const = 0; - virtual SDO_API unsigned int getPropertyIndex(const SDOString& propertyName) const = 0; - - /** isDataObjectType true if not a DataType - * - * This method returns true if the type is not a DataType, and is therefore - * a DataObjectType with properties. - */ - - virtual SDO_API bool isDataObjectType() const = 0; - - - /** isSequencedType true if the type is sequenced - * - * This method returns true if the type is sequenced, and is therefore - * objects of this type can be manipulate via their sequence interface. - */ - - virtual SDO_API bool isSequencedType() const = 0; - - - /** isOpenType true if the type is open - * - * Normal types have a predefined list of properties. Trying to set - * properties which do not exist will cause an exception to be thrown. - * Open types, on the other hand, may have properties added to their - * instances runtime. These properties get added silently when setting a - * property value for a property which does not exist. - * Different instances of these objects may have different lists of - * open properties. - */ - - virtual SDO_API bool isOpenType() const = 0; - - /** isAbstractType true if the type is not instantiable. - * - * An abstract type may not be instantiated. It is useful only as - * a base type to some other non-abstract type. - */ - - virtual SDO_API bool isAbstractType() const = 0; - - /** isDataType true if the type is not an object. - * - * A DataType is anything which is not a DataObjectType. This method - * is the opposite of isDataObjectType(). - */ - - virtual SDO_API bool isDataType() const = 0; - - - /** isChangeSummaryType true if the type is a change summary. - * - * There is only one type called ChangeSummary. This method serves - * no purpose in the C++ implementation. - */ - - virtual SDO_API bool isChangeSummaryType() const = 0; - - /** getTypeEnum gets the enum for this type. - * - * Each DataType has a defined value in the list of Types. - */ - - virtual SDO_API Type::Types getTypeEnum() const = 0; - - /** equals compares uri and name. - * - * The types are equal if the URI and Name are equal. - */ - - virtual SDO_API bool equals(const Type& tother) const = 0; - - static SDO_API const SDOString SDOTypeNamespaceURI; -}; - -}; -}; -#endif //_SDO_TYPE_H_ - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinition.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinition.cpp deleted file mode 100644 index f96d3ae138..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinition.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - - -#include "commonj/sdo/TypeDefinition.h" -#include "commonj/sdo/TypeDefinitionImpl.h" - -namespace commonj -{ - namespace sdo - { - TypeDefinition::TypeDefinition() - { - typedefinition = new TypeDefinitionImpl(); - } - - TypeDefinition::~TypeDefinition() - { - if (typedefinition != 0) delete typedefinition; - } - - void TypeDefinition::copy (const TypeDefinition& td) - { - if (typedefinition != 0) delete typedefinition; - typedefinition = new TypeDefinitionImpl(*(td.typedefinition)); - } - - TypeDefinition::TypeDefinition(const TypeDefinition& td) - { - copy(td); - } - - TypeDefinition& TypeDefinition::operator=(const TypeDefinition& td) - { - if (this != &td) - { - copy(td); - } - return *this; - } - - TypeDefinitionImpl* TypeDefinition::getTypeDefinition() - { - return typedefinition; - } - - void TypeDefinition::setUri(const char * inuri) - { - typedefinition->uri = inuri; - } - - const char * TypeDefinition::getUri() const - { - return (const char *)typedefinition->uri; - } - - - void TypeDefinition::setName(const char * inname) - { - typedefinition->name = inname; - } - - const char * TypeDefinition::getName() const - { - return (const char *)typedefinition->name; - } - - - void TypeDefinition::setLocalName(const char * inname) - { - typedefinition->localname = inname; - } - - const char * TypeDefinition::getLocalName() const - { - return (const char *)typedefinition->localname; - } - - - void TypeDefinition::setAliases(const char * inaliases) - { - typedefinition->aliases = inaliases; - } - - const char * TypeDefinition::getAliases() const - { - return (const char*)typedefinition->aliases; - } - - void TypeDefinition::setParentType(const char* uri, const char* name, - bool isrestriction) - { - typedefinition->parentTypeUri = uri; - typedefinition->parentTypeName = name; - typedefinition->isRestriction = isrestriction; - } - - const char * TypeDefinition::getParentTypeUri() const - { - return (const char *)typedefinition->parentTypeUri; - } - - const char * TypeDefinition::getParentTypeName() const - { - return (const char *)typedefinition->parentTypeName; - } - - void TypeDefinition::setIDPropertyName(const char * idpropname) - { - typedefinition->IDPropertyName = idpropname; - } - - const char * TypeDefinition::getIDPropertyName() const - { - return (const char *)typedefinition->IDPropertyName; - } - - void TypeDefinition::addPropertyDefinition(PropertyDefinition& p) - { - typedefinition->properties.push_back((PropertyDefinitionImpl&)(*(p.getPropertyDefinition()))); - } - - bool TypeDefinition::getIsDataType() const - { - return typedefinition->dataType; - } - - bool TypeDefinition::getIsOpen() const - { - return typedefinition->isOpen; - } - - bool TypeDefinition::getIsSequenced() const - { - return typedefinition->isSequenced; - } - - bool TypeDefinition::getIsAbstract() const - { - return typedefinition->isAbstract; - } - - bool TypeDefinition::getIsExtendedPrimitive() const - { - return typedefinition->isExtendedPrimitive; - } - - bool TypeDefinition::getIsFromList() const - { - return typedefinition->isFromList; - } - - bool TypeDefinition::getIsQName() const - { - return typedefinition->isQName; - } - - bool TypeDefinition::getIsMany() const - { - return typedefinition->isMany; - } - - void TypeDefinition::setIsDataType(bool value) - { - typedefinition->dataType = value; - } - - void TypeDefinition::setIsOpen(bool value) - { - typedefinition->isOpen = value; - } - - void TypeDefinition::setIsSequenced(bool value) - { - typedefinition->isSequenced = value; - } - - void TypeDefinition::setIsAbstract(bool value) - { - typedefinition->isAbstract = value; - } - - void TypeDefinition::setIsExtendedPrimitive(bool value) - { - typedefinition->isExtendedPrimitive = value; - } - - void TypeDefinition::setIsFromList(bool value) - { - typedefinition->isFromList = value; - } - - void TypeDefinition::setIsQName(bool value) - { - typedefinition->isQName = value; - } - - void TypeDefinition::setIsMany(bool value) - { - typedefinition->isMany = value; - } - - - int TypeDefinition::getGroupElementCount() const - { - return typedefinition->groupElementCount; - } - - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinition.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinition.h deleted file mode 100644 index 4b4d9a1f86..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinition.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/13 08:35:04 $ */ - -#ifndef _TYPEDefinition_H_ -#define _TYPEDefinition_H_ - -#include "export.h" - - -#include "commonj/sdo/PropertyDefinition.h" -#include "list" - - -namespace commonj -{ - namespace sdo - { - - class TypeDefinitionImpl; - - -/** - * TypeDefinitionImpl holds information gathered from parsing the - * XSD and used for creating Types - */ - class SDO_API TypeDefinition - { - - public: - - - /*SDO_API*/ TypeDefinition(); - TypeDefinition(const TypeDefinition& td); - TypeDefinition& operator=(const TypeDefinition& td); - - /*SDO_API*/ virtual ~TypeDefinition(); - - - TypeDefinitionImpl* getTypeDefinition(); - - /*SDO_API*/ void setUri(const char * inuri) ; - /*SDO_API*/ const char * getUri() const; - - /*SDO_API*/ void setName(const char * inname) ; - /*SDO_API*/ const char * getName() const; - - /*SDO_API*/ void setLocalName(const char * inname) ; - /*SDO_API*/ const char * getLocalName() const; - - /*SDO_API*/ void setAliases(const char * inaliases) ; - /*SDO_API*/ const char * getAliases() const; - - - /*SDO_API*/ void setParentType(const char* uri, const char* name, - bool isrestriction); - /*SDO_API*/ const char * getParentTypeUri() const; - /*SDO_API*/ const char * getParentTypeName() const; - - /*SDO_API*/ void setIDPropertyName(const char * idpropname) ; - /*SDO_API*/ const char * getIDPropertyName() const; - - - /*SDO_API*/ void addPropertyDefinition(PropertyDefinition& p); - - /*SDO_API*/ bool getIsDataType() const; - /*SDO_API*/ bool getIsOpen() const; - /*SDO_API*/ bool getIsSequenced() const; - /*SDO_API*/ bool getIsAbstract() const; - /*SDO_API*/ bool getIsExtendedPrimitive() const; - /*SDO_API*/ bool getIsFromList() const; - /*SDO_API*/ bool getIsQName() const; - /*SDO_API*/ bool getIsMany() const; - - /*SDO_API*/ void setIsDataType(bool value); - /*SDO_API*/ void setIsOpen(bool value); - /*SDO_API*/ void setIsSequenced(bool value); - /*SDO_API*/ void setIsAbstract(bool value); - /*SDO_API*/ void setIsExtendedPrimitive(bool value); - /*SDO_API*/ void setIsFromList(bool value); - /*SDO_API*/ void setIsQName(bool value); - /*SDO_API*/ void setIsMany(bool value); - - /*SDO_API*/ int getGroupElementCount() const; - - private : - TypeDefinitionImpl *typedefinition; - void copy(const TypeDefinition& td); - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_TYPEDefinition_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionImpl.cpp deleted file mode 100644 index 31a64a91da..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionImpl.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#include "commonj/sdo/TypeDefinitionImpl.h" -namespace commonj -{ - namespace sdo - { - TypeDefinitionImpl::TypeDefinitionImpl() - : dataType(false), - isOpen(false), - isSequenced(false), - isMany(false), - isQName(false), - isAbstract(false), - groupElementCount(0), - isExtendedPrimitive(false), - isFromList(false) - { - } - - TypeDefinitionImpl::~TypeDefinitionImpl() - { - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionImpl.h deleted file mode 100644 index 2a4f8e90cf..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionImpl.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#ifndef _TYPEDefinitionImpl_H_ -#define _TYPEDefinitionImpl_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/PropertyDefinitionImpl.h" -#include "list" - - -namespace commonj -{ - namespace sdo - { - - typedef std::list<PropertyDefinitionImpl> XmlDasPropertyDefs; - -/** - * TypeDefinitionImpl holds information gathered from parsing the - * XSD and used for creating Types - */ - class TypeDefinitionImpl - { - - public: - TypeDefinitionImpl(); - virtual ~TypeDefinitionImpl(); - - - SDOXMLString uri; - SDOXMLString name; - SDOXMLString localname; - - SDOXMLString aliases; - - SDOXMLString parentTypeUri; - SDOXMLString parentTypeName; - bool isRestriction; - - SDOXMLString IDPropertyName; - - bool dataType; - XmlDasPropertyDefs properties; - - bool isOpen; - bool isSequenced; - bool isAbstract; - - bool isExtendedPrimitive; - - bool isFromList; - - - bool isMany; - int groupElementCount; - - bool isQName; - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_TYPEDefinitionImpl_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitions.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitions.cpp deleted file mode 100644 index 2bea93494c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitions.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - - - -#include "commonj/sdo/TypeDefinitions.h" -#include "commonj/sdo/TypeDefinitionsImpl.h" - -namespace commonj -{ - namespace sdo - { - TypeDefinitions::TypeDefinitions() - { - typedefinitions = new TypeDefinitionsImpl(); - } - - TypeDefinitions::~TypeDefinitions() - { - if (typedefinitions != 0) delete typedefinitions; - } - - void TypeDefinitions::copy (const TypeDefinitions& tds) - { - if (typedefinitions != 0) delete typedefinitions; - typedefinitions = new TypeDefinitionsImpl(*(tds.typedefinitions)); - } - - TypeDefinitions::TypeDefinitions(const TypeDefinitions& tds) - { - copy(tds); - } - - TypeDefinitions& TypeDefinitions::operator=(const TypeDefinitions& tds) - { - if (this != &tds) - { - copy(tds); - } - return *this; - } - - void TypeDefinitions::addTypeDefinition(TypeDefinition& t) - { - if (typedefinitions == 0) - { - typedefinitions = new TypeDefinitionsImpl(); - } - - typedefinitions->types[ - typedefinitions->getTypeQName( - t.getUri(),t.getName())] = (TypeDefinitionImpl&)(*t.getTypeDefinition()); - } - - TypeDefinitionsImpl& TypeDefinitions::getTypeDefinitions() - { - if (typedefinitions == 0) - { - typedefinitions = new TypeDefinitionsImpl(); - } - return *typedefinitions; - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitions.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitions.h deleted file mode 100644 index 4b95fe8b94..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitions.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _TYPEDefinitions_H_ -#define _TYPEDefinitions_H_ - - -#include "commonj/sdo/TypeDefinition.h" -#include "map" - -namespace commonj -{ - namespace sdo - { - - class TypeDefinitionsImpl; - -/** - * TypeDefinitionsImpl holds a list information gathered from parsing the - * XSD and used for creating Types - */ - class SDO_API TypeDefinitions - { - - public: - /*SDO_API*/ TypeDefinitions(); - TypeDefinitions(const TypeDefinitions& tds); - TypeDefinitions& operator=(const TypeDefinitions& tds); - - /*SDO_API*/ virtual ~TypeDefinitions(); - - /*SDO_API*/ void addTypeDefinition(TypeDefinition& t); - - TypeDefinitionsImpl& getTypeDefinitions(); - - private: - TypeDefinitionsImpl* typedefinitions; - void copy(const TypeDefinitions& tds); - - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_TYPEDefinitions_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionsImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionsImpl.cpp deleted file mode 100644 index 82fd8ac11b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionsImpl.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#include "commonj/sdo/TypeDefinitionsImpl.h" -namespace commonj -{ - namespace sdo - { - TypeDefinitionsImpl::TypeDefinitionsImpl() - { - } - - TypeDefinitionsImpl::~TypeDefinitionsImpl() - { - } - - SDOXMLString TypeDefinitionsImpl::getTypeQName(const SDOXMLString& typeUri, const SDOXMLString& typeName) - { - return typeUri + "#" + typeName; - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionsImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionsImpl.h deleted file mode 100644 index b523a3316a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeDefinitionsImpl.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date$ */ - -#ifndef _TYPEDefinitionsImpl_H_ -#define _TYPEDefinitionsImpl_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/TypeDefinitionImpl.h" -#include "map" - -namespace commonj -{ - namespace sdo - { - typedef std::map<SDOXMLString, TypeDefinitionImpl> XMLDAS_TypeDefs; - -/** - * TypeDefinitionsImpl holds a list information gathered from parsing the - * XSD and used for creating Types - */ - class TypeDefinitionsImpl - { - - public: - TypeDefinitionsImpl(); - virtual ~TypeDefinitionsImpl(); - static SDOXMLString getTypeQName(const SDOXMLString& typeUri, const SDOXMLString& typeName); - - - XMLDAS_TypeDefs types; - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_TYPEDefinitionsImpl_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeImpl.cpp deleted file mode 100644 index 041f492a55..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeImpl.cpp +++ /dev/null @@ -1,3719 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 13:47:39 $ */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "commonj/sdo/Logger.h" - -#include "commonj/sdo/PropertyImpl.h" -#include "commonj/sdo/TypeImpl.h" - -#include <iostream> -#include <wchar.h> -#include <stdio.h> -using namespace std; - -#include <list> -#include <vector> -using namespace std; - -#include "commonj/sdo/SDORuntimeException.h" - -namespace commonj{ -namespace sdo{ - - - - char* TypeImpl::types[num_types] = { - "Other Types", - "BigDecimal", - "BigInteger", - "Boolean" , - "Byte", - "Bytes", - "Character", - "Date" , - "Double" , - "Float" , - "Integer" , - "Long" , - "Short" , - "String" , - "URI" , - "DataObject", - "ChangeSummary", - "Text", - "OpenDataObject" - }; - - - /////////////////////////////////////////////////////////////////////////// - // - /////////////////////////////////////////////////////////////////////////// - - void TypeImpl::addChangeSummary(void) - { - changeSummaryType = true; - } - - bool TypeImpl::isChangeSummaryType() const - { - return changeSummaryType; - } - - - /////////////////////////////////////////////////////////////////////////// - // - /////////////////////////////////////////////////////////////////////////// - - bool TypeImpl::isFromList() const - { - return bFromList; - } - /////////////////////////////////////////////////////////////////////////// - // - /////////////////////////////////////////////////////////////////////////// - - bool TypeImpl::isDataType(void) const - { - return isPrimitive; - } - - /////////////////////////////////////////////////////////////////////////// - // - /////////////////////////////////////////////////////////////////////////// - - TypeImpl::TypeImpl(const TypeImpl& t) - { - isResolving = false; - isResolved = false; - brestriction = t.brestriction; - bFromList = t.bFromList; - } - - TypeImpl::TypeImpl(const Type* base, const char* uri, - const char* inname, - bool isSeq, - bool isOp, - bool isAbs, - bool isData, - bool isRestriction) - { - init(uri,inname,isSeq,isOp, isAbs, isData); - baseType = (TypeImpl*)base; - brestriction = isRestriction; - bFromList = false; - } - - TypeImpl::TypeImpl(const char* uri, const char* inname, - bool isSeq, - bool isOp, - bool isAbs, - bool isData, - bool isFromList) - - { - init(uri,inname,isSeq,isOp,isAbs, isData); - baseType = 0; - brestriction = false; - bFromList= false; - bFromList = isFromList; - } - - void TypeImpl::init(const char* uri, const char* inname, - bool isSeq, - bool isOp, - bool isAbs, - bool isData) - { - isResolving = false; - isResolved = false; - localPropsSize = 0; - changeSummaryType = false; - isSequenced = isSeq; - isOpen = isOp; - isAbstract = isAbs; - isPrimitive = isData; - name = new char[strlen(inname)+1]; - strcpy(name,inname); - - if (uri == 0) - { - typeURI = new char[1]; - typeURI[0] = 0; - typeEnum = DataObjectType; - return; - } - - typeURI = new char[strlen(uri)+1]; - strcpy(typeURI,uri); - - if (!strcmp(uri,Type::SDOTypeNamespaceURI.c_str())) { - for (int i = 0; i < num_types ; i++) { - if (!strcmp(inname,types[i])) { - typeEnum = (Types)i; - if (i <= UriType) isPrimitive = true; - // Note - you could create Text, but it would - // not be recognised as primitive. - return; - } - } - } - - // All other types are data object types - for now - typeEnum = DataObjectType; - } - - - /////////////////////////////////////////////////////////////////////////// - // - /////////////////////////////////////////////////////////////////////////// - TypeImpl::TypeImpl() - { - } - - /////////////////////////////////////////////////////////////////////////// - // - /////////////////////////////////////////////////////////////////////////// - - TypeImpl::~TypeImpl() - { - // Types free their corresponding properties, but not the types - // of those properties - // Need to free only those we allocated - unsigned int count = 0, start = props.size() - localPropsSize; - std::list<PropertyImpl*>::iterator i; - for (i= props.begin(); i != props.end() ; ++i) - { - if (count >= start) { - delete(*i); - } - count++; - } - if (name != 0)delete name; - if (typeURI != 0) delete typeURI; - for (unsigned int j = 0; j < aliases.size();j++) - { - delete aliases[j]; - } - } - - /////////////////////////////////////////////////////////////////////////// - // Sets a data type as sequenced. - /////////////////////////////////////////////////////////////////////////// - - void TypeImpl::setSequenced(bool set) - { - isSequenced = set; - } - - /////////////////////////////////////////////////////////////////////////// - // Sets a data type as open. - /////////////////////////////////////////////////////////////////////////// - - void TypeImpl::setOpen(bool set) - { - isOpen = set; - } - - /////////////////////////////////////////////////////////////////////////// - // Sets a data type as open. - /////////////////////////////////////////////////////////////////////////// - - void TypeImpl::setBaseType(const Type* bt, bool isRestriction) - { - baseType = (TypeImpl*)bt; - brestriction = isRestriction; - - // DataType and Sequenced must be the same as the base Type - isPrimitive = baseType->isPrimitive; - if (isPrimitive) - { - typeEnum = baseType->typeEnum; - } - - if (isSequenced && !baseType->isSequenced) - { - // Its an error to be sequenced and inherit from a - // non-sequenced type - string msg("Cannot be sequenced and inherit from a non-sequenced base type:"); - msg += getURI(); - msg += " "; - msg += getName(); - SDO_THROW_EXCEPTION("setBaseType", - SDOUnsupportedOperationException, - msg.c_str()); - } - - isSequenced = baseType->isSequenced; - // if the base is open then this type must be open too. - - if (baseType->isOpenType()) - { - isOpen = true; - } - } - - bool TypeImpl::equals(const Type& tother) const - { - if (strcmp(typeURI,tother.getURI())) return false; - // TODO - aliases - if (strcmp(name, tother.getName())) return false; - return true; - } - - - const Type* TypeImpl::getBaseType() const - { - return (Type*)baseType; - } - - /////////////////////////////////////////////////////////////////////////// - // Returns the name of the type. - /////////////////////////////////////////////////////////////////////////// - - const char* TypeImpl::getName() const - { - return name; - } - - void TypeImpl::setAlias(const char* alias) - { - char* tmp = new char[strlen(alias)+1]; - strcpy(tmp,alias); - aliases.push_back(tmp); - } - - - - - const char* TypeImpl::getAlias(unsigned int index) const - { - if (index < aliases.size()) - { - return aliases[index]; - } - return name; - } - - unsigned int TypeImpl::getAliasCount() const - { - return aliases.size(); - } - /////////////////////////////////////////////////////////////////////////// - // Returns the namespace URI of the type. - /////////////////////////////////////////////////////////////////////////// - const char* TypeImpl::getURI() const - { - return typeURI; - } - - void TypeImpl::throwIfNestedChangeSummary() const - { - PROPERTY_LIST::const_iterator i; - for (i = props.begin(); i != props.end(); ++i) - { - - const TypeImpl *t = ((*i)->getTypeImpl()); - if (t != 0) - { - if (t->isDataObjectType()) - { - if (t->isChangeSummaryType()) - { - string msg(" Nested change summary type:"); - msg += t->getURI(); - msg += " "; - msg += t->getName(); - SDO_THROW_EXCEPTION("resolve", - SDOUnsupportedOperationException, - msg.c_str()); - } - t->throwIfNestedChangeSummary(); - } - } - } - } - - void TypeImpl::validateChangeSummary() - { - if (!isChangeSummaryType()) return; - throwIfNestedChangeSummary(); - } - - PROPERTY_LIST TypeImpl::getCompoundProperties() - { - return props; - } - - void TypeImpl::initCompoundProperties() - { - // We have already met this type in the resolution heirarchy - if (isResolving) - { - string msg(" circular type dependency on:"); - msg += getURI(); - msg += " "; - msg += getName(); - - SDO_THROW_EXCEPTION("initCompoundProperties", - SDOUnsupportedOperationException, - msg.c_str()); - } - - if (isResolved) - { - return; - } - - isResolving = true; - - - if (baseType != 0) - { - baseType->initCompoundProperties(); - PROPERTY_LIST pl = baseType->getCompoundProperties(); - localPropsSize = props.size(); - - // spec says the properties which are common are taken from - // the superclass. I imagine this will change , and only the - // ones taken from the subclass will be used. - - if (brestriction) - { - // restrict the properties to only those which - // appear in the parent - std::list<PropertyImpl*>::iterator p1,p; - for (p=pl.begin();p!=pl.end();++p) - { - for (p1=props.begin();p1!=props.end();++p1) - { - if (!strcmp((*p1)->getName(), - (*p)->getName())) - { - props.erase(p1); - localPropsSize = props.size(); - break; - } - } - } - - } - - props.insert(props.begin(),pl.begin(), pl.end()); - - isPrimitive = !(baseType->isDataObjectType()); - } - if (isPrimitive && (props.size() > 0)) - { - string msg("Add property to data type:"); - msg += getURI(); - msg += " "; - msg += getName(); - SDO_THROW_EXCEPTION("initCompoundProperties", - SDOUnsupportedOperationException, - msg.c_str()); - } - isResolved = true; - isResolving = false; - return; - } - - - /////////////////////////////////////////////////////////////////////////// - // Returns the list of the properties of this type. - /////////////////////////////////////////////////////////////////////////// - PropertyList TypeImpl::getProperties() const - { - return props; - } - - unsigned int TypeImpl::getPropertiesSize() const - { - return props.size(); - } - - /////////////////////////////////////////////////////////////////////////// - // Returns the property with the specified name. - /////////////////////////////////////////////////////////////////////////// - const Property& TypeImpl::getProperty(const char* propertyName) const - { - PropertyImpl* pi = getPropertyImpl(propertyName); - if (pi == 0) - { - string msg("Property not found:"); - msg += propertyName; - SDO_THROW_EXCEPTION("getProperty", - SDOPropertyNotFoundException, msg.c_str()); - } - return (Property&)*pi; - } - const Property& TypeImpl::getProperty(const SDOString& propertyName) const - { - PropertyImpl* pi = getPropertyImpl(propertyName); // ??? GMW - if (pi == 0) - { - string msg("Property not found:"); - msg += propertyName; - SDO_THROW_EXCEPTION("getProperty", - SDOPropertyNotFoundException, msg.c_str()); - } - return (Property&)*pi; - } - - - /////////////////////////////////////////////////////////////////////////// - // Substitute Support - get the real underlying type - /////////////////////////////////////////////////////////////////////////// - - const Type& TypeImpl::getRealPropertyType(const char* propertyName) const - { - const TypeImpl* ti = getRealPropertyTypeImpl(propertyName); - if (ti != 0)return (Type&)*ti; - - string msg("Property not found:"); - msg += propertyName; - SDO_THROW_EXCEPTION("getProperty", - SDOPropertyNotFoundException, msg.c_str()); - - } - - - const TypeImpl* TypeImpl::getRealPropertyTypeImpl(const char* propertyName) const - { - - std::list<PropertyImpl*>::const_iterator i; - for (i = props.begin(); i != props.end(); ++i) - { - if (!strcmp(propertyName,(*i)->getName())) - { - return ((*i)->getTypeImpl()); - } - for (unsigned int k=0;k < (*i)->getAliasCount(); k++) - { - if (!strcmp(propertyName,(*i)->getAlias(k))) - { - return ((*i)->getTypeImpl()); - } - } - for (unsigned int j=0;j < (*i)->getSubstitutionCount(); j++) - { - if (!strcmp(propertyName,(*i)->getSubstitutionName(j))) - { - return (TypeImpl*)(*i)->getSubstitutionType(j); - } - } - } - return 0; - } - - /////////////////////////////////////////////////////////////////////////// - // Returns the property with the specified name. - /////////////////////////////////////////////////////////////////////////// - PropertyImpl* TypeImpl::getPropertyImpl(const char* propertyName) const - { - - // Extension - find the property from an xpath - // not very elegant, but it will do. - // you should not be able to have "." and "[" before a "/" - this is assumed. - - if (propertyName == 0 || strlen(propertyName) == 0) return 0; - - char* tokenend = (char*) strchr(propertyName,'/'); - char * bracket = (char*) strchr(propertyName,'['); - char* dot = (char*) strchr(propertyName,'.'); - char* copy; - - - int len = strlen(propertyName); - if (tokenend != 0) - { - len = tokenend - propertyName; - if (bracket != 0 && bracket < tokenend) len = bracket - propertyName; - if (dot != 0 && dot < tokenend) len = dot - propertyName; - } - else - { - if (bracket != 0) len = bracket - propertyName; - if (dot != 0) len = dot - propertyName; - } - if (len != 0) - { - copy = new char[len+1]; - strncpy(copy, propertyName,len); - copy[len] = 0; - } - else - { - copy = new char[strlen(propertyName)+1]; - strcpy(copy,propertyName); - } - - std::list<PropertyImpl*>::const_iterator i; - for (i = props.begin(); i != props.end(); ++i) - { - if (!strcmp(copy,(*i)->getName())) - { - delete copy; - if (tokenend && strlen(tokenend) > 1) - { - const TypeImpl* ti = (*i)->getTypeImpl(); - if (ti != 0) - { - PropertyImpl* p = ti-> - getPropertyImpl((const char *)(tokenend+1)); - return p; - } - else - { - return (PropertyImpl*)(*i); - } - } - else { - return (PropertyImpl*)(*i); - } - } - for (unsigned int j=0;j < (*i)->getSubstitutionCount(); j++) - { - if (!strcmp(copy,(*i)->getSubstitutionName(j))) - { - delete copy; - if (tokenend && strlen(tokenend) > 1) - { - const TypeImpl* ti = (*i)->getTypeImpl(); - if (ti != 0) - { - PropertyImpl* p = ti-> - getPropertyImpl((const char *)(tokenend+1)); - return p; - } - else - { - return (PropertyImpl*)(*i); - } - } - else { - return (PropertyImpl*)(*i); - } - } - } - for (unsigned int k=0;k < (*i)->getAliasCount(); k++) - { - if (!strcmp(copy,(*i)->getAlias(k))) - { - delete copy; - if (tokenend && strlen(tokenend) > 1) - { - const TypeImpl* ti = (*i)->getTypeImpl(); - if (ti != 0) - { - PropertyImpl* p = ti-> - getPropertyImpl((const char *)(tokenend+1)); - return p; - } - else - { - return (PropertyImpl*)(*i); - } - } - else { - return (PropertyImpl*)(*i); - } - } - } - } - return 0; - } - // +++ - PropertyImpl* TypeImpl::getPropertyImpl(const SDOString& propertyName) const - { - - // Extension - find the property from an xpath - // you should not be able to have both "." and "[" before a "/" - this is assumed. - - if (propertyName.length() == 0) return 0; - - // strchr returns NULL if target not found - // find_first_of returns string::npos in that case - // find_first_of returns the subscript of the character found eg 0 if it is the first - size_t tokenend = propertyName.find_first_of('/'); - size_t bracket = propertyName.find_first_of('['); - size_t dot = propertyName.find_first_of('.'); - size_t dotOrBracketOrSlash = propertyName.find_first_of(".[/"); - SDOString copy; - // char* copy; - - int len = propertyName.length(); - if (dotOrBracketOrSlash != string::npos) - { - len = dotOrBracketOrSlash; - } - - if (len != 0) - { - copy.assign(propertyName, 0, len); - } - else - { - copy = propertyName; - } - - std::list<PropertyImpl*>::const_iterator i; - for (i = props.begin(); i != props.end(); ++i) - { - if (!strcmp(copy.c_str(),(*i)->getName())) // ie the two strings are the same - { - // delete copy; - if ((tokenend != string::npos) && (propertyName.length() - tokenend) > 1) - { - // There is someting to the right of the "/" - const TypeImpl* ti = (*i)->getTypeImpl(); - if (ti != 0) - { - PropertyImpl* p = ti->getPropertyImpl(SDOString(propertyName, tokenend + 1)); - return p; - } - else - { - return (PropertyImpl*)(*i); - } - } - else { - return (PropertyImpl*)(*i); - } - } - - for (unsigned int j = 0; j < (*i)->getSubstitutionCount(); j++) - { - if (!strcmp(copy.c_str(), (*i)->getSubstitutionName(j))) // ie the two strings are the same - { - // delete copy; - if ((tokenend != string::npos) && (propertyName.length() - tokenend) > 1) - { - // There is someting to the right of the "/" - const TypeImpl* ti = (*i)->getTypeImpl(); - if (ti != 0) - { - // PropertyImpl* p = ti->getPropertyImpl((const char *)(tokenend+1)); - PropertyImpl* p = ti->getPropertyImpl(SDOString(propertyName, tokenend + 1)); - return p; - } - else - { - return (PropertyImpl*)(*i); - } - } - else { - return (PropertyImpl*)(*i); - } - } - } - for (unsigned int k = 0; k < (*i)->getAliasCount(); k++) - { - if (!strcmp(copy.c_str(), (*i)->getAlias(k))) // ie the two strings are the same - { - // delete copy; - if ((tokenend != string::npos) && (propertyName.length() - tokenend) > 1) - { - const TypeImpl* ti = (*i)->getTypeImpl(); - if (ti != 0) - { - // PropertyImpl* p = ti->getPropertyImpl((const char *)(tokenend+1)); - PropertyImpl* p = ti->getPropertyImpl(SDOString(propertyName, tokenend + 1)); - return p; - } - else - { - return (PropertyImpl*)(*i); - } - } - else { - return (PropertyImpl*)(*i); - } - } - } - } - return 0; - } - - // --- - - /////////////////////////////////////////////////////////////////////////// - // Returns the property with the specified name. - /////////////////////////////////////////////////////////////////////////// - PropertyImpl* TypeImpl::getPropertyImplPure(const char* propertyName) const - { - - - std::list<PropertyImpl*>::const_iterator i; - for (i = props.begin(); i != props.end(); ++i) - { - if (!strcmp(propertyName,(*i)->getName())) - { - return (PropertyImpl*)(*i); - } - for (unsigned int k=0;k < (*i)->getAliasCount(); k++) - { - if (!strcmp(propertyName,(*i)->getAlias(k))) - { - return (PropertyImpl*)(*i); - } - } - } - return 0; - } - - - /////////////////////////////////////////////////////////////////////////// - // Returns the property index with the specified name. - /////////////////////////////////////////////////////////////////////////// - unsigned int TypeImpl::getPropertyIndex(const char* propertyName) const - { - std::list<PropertyImpl*>::const_iterator i; - int j = 0; - for (i = props.begin(); i != props.end(); ++i) - { - if (!strcmp(propertyName,(*i)->getName())) - { - return j; - } - j++; - } - string msg("Property not found:"); - msg += propertyName; - SDO_THROW_EXCEPTION("getPropertyIndex", - SDOPropertyNotFoundException, msg.c_str()); - } - unsigned int TypeImpl::getPropertyIndex(const SDOString& propertyName) const - { - std::list<PropertyImpl*>::const_iterator i; - int j = 0; - for (i = props.begin(); i != props.end(); ++i) - { - if (!strcmp(propertyName.c_str(), (*i)->getName())) - { - return j; - } - j++; - } - string msg("Property not found:"); - msg += propertyName; - SDO_THROW_EXCEPTION("getPropertyIndex", - SDOPropertyNotFoundException, msg.c_str()); - } - /////////////////////////////////////////////////////////////////////////// - // Returns the property with the specified name. - /////////////////////////////////////////////////////////////////////////// - const Property& TypeImpl::getProperty(unsigned int index) const - { - PropertyImpl* pi = getPropertyImpl(index); - if (pi == 0) - { - string msg("Property not found for index:"); - msg += index; - SDO_THROW_EXCEPTION("getProperty" , - SDOPropertyNotFoundException, msg.c_str()); - } - return (Property&)*pi; - } - - /////////////////////////////////////////////////////////////////////////// - // Returns the property with the specified index. - /////////////////////////////////////////////////////////////////////////// - PropertyImpl* TypeImpl::getPropertyImpl(unsigned int index) const - { - std::list<PropertyImpl*>::const_iterator i; - int count = 0; - for (i = props.begin() ; i != props.end() ; ++i) - { - if (count == index)return (PropertyImpl*)(*i); - count++; - } - return 0; - } - - - /////////////////////////////////////////////////////////////////////////// - // Returns the property with the specified name. - /////////////////////////////////////////////////////////////////////////// - void TypeImpl::addProperty(const char* propname, - const TypeImpl& t, - bool many, bool rdonly, bool cont) - { - - props.insert(props.end(),new PropertyImpl(*this, - propname, t, many,rdonly, cont)); - localPropsSize++; - - } - - /////////////////////////////////////////////////////////////////////////// - // Indicates if this Type specifies DataObjects.. - /////////////////////////////////////////////////////////////////////////// - bool TypeImpl::isDataObjectType() const - { - return !isPrimitive; - } - - /////////////////////////////////////////////////////////////////////////// - // Indicates if this Type specifies Sequenced DataObjects. - /////////////////////////////////////////////////////////////////////////// - bool TypeImpl::isSequencedType() const - { - return isSequenced; - } - - /////////////////////////////////////////////////////////////////////////// - // Indicates if this Type allows any form of open content. - /////////////////////////////////////////////////////////////////////////// - bool TypeImpl::isOpenType() const - { - /* TODO - handle open types */ - return isOpen; - } - - /////////////////////////////////////////////////////////////////////////// - // Indicates if this type may not be instantiated. - /////////////////////////////////////////////////////////////////////////// - bool TypeImpl::isAbstractType() const - { - return isAbstract; - } - - void TypeImpl::setAbstract(bool set) - { - isAbstract = set; - } - - /////////////////////////////////////////////////////////////////////////// - // TODO - override ==. - /////////////////////////////////////////////////////////////////////////// - bool TypeImpl::equals(const Type& t) - { - return ( strcmp(getName(),t.getName()) == 0 - && strcmp(getURI (),t.getURI ()) == 0 ); - } - - /////////////////////////////////////////////////////////////////////////// - // getTypeEnum. - /////////////////////////////////////////////////////////////////////////// - Type::Types TypeImpl::getTypeEnum(void) const - { - return typeEnum; - } - - - /////////////////////////////////////////////////////////////////////////// - // Conversions. - // convert is used in the process of setting a value. The input is the - // result of a setXXX, so in the first case setBoolean. The typeEnum is the - // type of the value being set and governs the expected final result in - // the value* buffer. - /////////////////////////////////////////////////////////////////////////// - - unsigned int TypeImpl::convert(void** value,const bool b) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (*value != 0)delete (char*)(*value); - *value = new char[sizeof(long)]; - *(long*)*value = (long)b; - return sizeof(long); - - case LongType: - if (*value != 0)delete (char*)(*value); - *value = new char[sizeof(int64_t)]; - *(int64_t*)*value = (int64_t)b; - return sizeof(int64_t); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - if (*value != 0)delete (char*)(*value); - // spec change - types - *value = new wchar_t[6]; - if (b) - { - ((wchar_t*)(*value))[0] = (wchar_t)'t'; - ((wchar_t*)(*value))[1] = (wchar_t)'r'; - ((wchar_t*)(*value))[2] = (wchar_t)'u'; - ((wchar_t*)(*value))[3] = (wchar_t)'e'; - ((wchar_t*)(*value))[4] = 0; - return 4; - } - else - { - ((wchar_t*)(*value))[0] = (wchar_t)'f'; - ((wchar_t*)(*value))[1] = (wchar_t)'a'; - ((wchar_t*)(*value))[2] = (wchar_t)'l'; - ((wchar_t*)(*value))[3] = (wchar_t)'s'; - ((wchar_t*)(*value))[4] = (wchar_t)'e'; - ((wchar_t*)(*value))[5] = 0; - return 5; - } - break; - - - case BytesType: - { - if (*value != 0)delete (char*)(*value); - // spec change - types - *value = new char[6]; - if (b) - { - strcpy((char*)*value, "true"); - return 4; - } - else - { - strcpy((char*)*value, "false"); - return 5; - } - break; - - } - - case DoubleType: - case FloatType: - case DateType: - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set Boolean on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setBoolean" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - return 0; - } - - unsigned int TypeImpl::convert(void** value,const char c) const - { -#if __WORDSIZE ==64 - return convert(value,(int64_t)c); -#else - return convert(value,(long)c); -#endif - } - - unsigned int TypeImpl::convert(void** value,const wchar_t c) const - { -#if __WORDSIZE ==64 - return convert(value,(int64_t)c); -#else - return convert(value,(long)c); -#endif - } - - // This is set CString... - unsigned int TypeImpl::convert(void** value,const char* c) const - { - - switch (typeEnum) - { - case BooleanType: - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - if ((c == 0) || strcmp(c,"true")) - { - *(long*)*value = 0; - } - else - { - *(long*)*value = 1; - } - return sizeof(long); - - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long)]; - *(long*)*value = atoi(c); - return sizeof(long); - - case DoubleType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long double)]; - // TODO - atof not suitable here - *(long double*)*value = (long double)atof(c); - return sizeof(long double); - - case FloatType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(float)]; - *(float*)*value = (float)atof(c); - return sizeof(float); - - case LongType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(int64_t)]; -#if defined(WIN32) || defined (_WINDOWS) - *(int64_t*)*value = (int64_t)_atoi64(c); -#else - *(int64_t*)*value = (int64_t)strtoll(c, NULL, 0); -#endif - return sizeof(int64_t); - - case DateType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(time_t)]; - *(time_t*)*value = (time_t)atoi(c); - return sizeof(time_t); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (*value != 0) delete ((wchar_t*)*value); - wchar_t* vw = new wchar_t[strlen(c)+1]; - for (unsigned int i=0;i< strlen(c);i++) - { - vw[i] = (wchar_t)c[i]; - } - vw[strlen(c)] = 0; - *value = (void*)vw; - return strlen(c); - } - break; - case BytesType: - { - if (*value != 0) delete ((char*)*value); - char* vc = new char[strlen(c)+1]; - for (unsigned int i=0;i< strlen(c);i++) - { - vc[i] = (char)c[i]; - } - vc[strlen(c)] = 0; - *value = (void*)vc; - return strlen(c); - } - break; - - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set CString on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setString" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - return 0; - } - - // +++ - - // This is set CString... - // The value supplied in s is converted and written to value. - unsigned int TypeImpl::convert(void** value, const SDOString& c) const - { - switch (typeEnum) - { - case BooleanType: - if (*value != 0) delete ((char*) *value); - *value = new char[sizeof(long)]; - - if (c == "true") - { - *(long*)*value = 0; - } - else - { - *(long*)*value = 1; - } - return sizeof(long); - - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (*value != 0) delete ((char*)*value); - - *value = new char[sizeof(long)]; - *(long*)*value = atoi(c.c_str()); - return sizeof(long); - - case DoubleType: - if (*value != 0) delete ((char*)*value); - - *value = new char[sizeof(long double)]; - // TODO - atof not suitable here - *(long double*)*value = (long double)atof(c.c_str()); - return sizeof(long double); - - case FloatType: - if (*value != 0) delete ((char*)*value); - - *value = new char[sizeof(float)]; - *(float*)*value = (float)atof(c.c_str()); - return sizeof(float); - - case LongType: - if (*value != 0) delete ((char*)*value); - - *value = new char[sizeof(int64_t)]; -#if defined(WIN32) || defined (_WINDOWS) - *(int64_t*)*value = (int64_t)_atoi64(c.c_str()); -#else - *(int64_t*)*value = (int64_t)strtoll(c.c_str(), NULL, 0); -#endif - return sizeof(int64_t); - - case DateType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(time_t)]; - *(time_t*)*value = (time_t)atoi(c.c_str()); - return sizeof(time_t); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (*value != 0) delete ((wchar_t*)*value); - wchar_t* vw = new wchar_t[c.length() + 1]; - for (unsigned int i = 0; i < c.length(); i++) - { - vw[i] = (wchar_t)c[i]; - } - vw[c.length()] = 0; - *value = (void*)vw; - return c.length(); - } - break; - case BytesType: - { - if (*value != 0) delete ((char*)*value); - char* vc = new char[c.length() + 1]; - for (unsigned int i = 0; i < c.length(); i++) - { - vc[i] = (char)c[i]; - } - vc[c.length()] = 0; - *value = (void*)vc; - return c.length(); - } - break; - - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set CString on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setString" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - return 0; - } - - - // --- - - // setString - unsigned int TypeImpl::convert(void** value,const wchar_t* b, unsigned int len) const - { - unsigned int i; - switch (typeEnum) - { - case BigDecimalType: - case BigIntegerType: - case UriType: - case StringType: - { - if (*value != 0) delete ((wchar_t*)*value); - wchar_t* vw = new wchar_t[len+1]; - for (i=0;i<len;i++) - { - vw[i] = b[i]; - } - vw[len] = 0; - *value = (void*)vw; - return len; - } - break; - - case BytesType: - { - if (*value != 0) delete ((char*)*value); - char* vc = new char[len+1]; - for (i=0;i<len;i++) - { - vc[i] = (char)b[i]; - } - vc[len] = 0; - *value = (void*)vc; - return len; - } - break; - - case BooleanType: - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - if (len > 4) - { - *(long*)*value = 0; - } - else - { - if (b[0] == (wchar_t)'t' && - b[1] == (wchar_t)'r' && - b[2] == (wchar_t)'u' && - b[3] == (wchar_t)'e' ) - *(long*)*value = 1; - else *(long*)*value = 0; - } - return sizeof(long); - - case CharacterType: - case ByteType: - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - if (len > 0) - { - *(long*)*value = (long)b[0]; - } - else - { - *(long*)*value = (long)0; - } - return sizeof(long); - - case ShortType: - case IntegerType: - { - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - int val = 0; - for (unsigned int j=0;j<len;j++) - { - val += (1+ (10*j)) * ((char)b[len-1-j] - (char)'0'); - } - *(long*)*value = (long)val; - return sizeof(long); - } - - case LongType: - { - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(int64_t)]; - int64_t val = 0; - for (unsigned int j=0;j<len;j++) - { - val += (int64_t)(1+ (10*j)) * ((char)b[len-1-j] - (char)'0'); - } - *(int64_t*)*value = (int64_t)val; - return sizeof(long); - } - case DoubleType: - case FloatType: - case DateType: - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set String on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setString" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - return 0; - } - - // setBytes - unsigned int TypeImpl::convert(void** value,const char* b, unsigned int len) const - { - unsigned int i; - switch (typeEnum) - { - case BytesType: - { - if (*value != 0) delete ((char*)*value); - char* vc = new char[len+1]; - for (i=0;i<len;i++) - { - vc[i] = (char)b[i]; - } - vc[len] = 0; - *value = (void*)vc; - return len; - } - - case BigDecimalType: - case BigIntegerType: - case UriType: - case StringType: - { - if (*value != 0) delete ((wchar_t*)*value); - wchar_t* vw = new wchar_t[len+1]; - for (i=0;i<len;i++) - { - vw[i] = b[i]; - } - vw[len] = 0; - *value = (void*)vw; - return len; - } - - case BooleanType: - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - if (len > 4) - { - *(long*)*value = 0; - } - else - { - if (b[0] == (char)'t' && - b[1] == (char)'r' && - b[2] == (char)'u' && - b[3] == (char)'e' ) - *(long*)*value = 1; - else *(long*)*value = 0; - } - return sizeof(long); - - case ByteType: - case CharacterType: - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - if (len > 0) - { - *(long*)*value = (long)b[0]; - } - else - { - *(long*)*value = (long)0; - } - return sizeof(long); - - case IntegerType: - case ShortType: - { - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - int val = 0; - for (unsigned int j=0;j<len;j++) - { - val += (1+ (10*j)) * ((char)b[len-1-j] - (char)'0'); - } - *(long*)*value = (long)val; - return sizeof(long); - } - - case LongType: - { - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(int64_t)]; - int64_t val = 0; - for (unsigned int j=0;j<len;j++) - { - val += (int64_t)(1+ (10*j)) * ((char)b[len-1-j] - (char)'0'); - } - *(int64_t*)*value = (int64_t)val; - return sizeof(long); - } - - case DoubleType: - case FloatType: - case DateType: - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set Bytes on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setBytes" , - SDOInvalidConversionException, msg.c_str()); - return 0; - } - } - return 0; - } - - // +++ - - unsigned int TypeImpl::convert(void** value, const SDOString& b, unsigned int len) const - { - unsigned int i; - switch (typeEnum) - { - case BytesType: - { - if (*value != 0) delete ((char*)*value); - - char* vc = new char[len + 1]; - b.copy(vc, len); - vc[len] = 0; - - *value = (void*)vc; - return len; - } - - case BigDecimalType: - case BigIntegerType: - case UriType: - case StringType: - { - if (*value != 0) delete ((wchar_t*)*value); - - wchar_t* vw = new wchar_t[len+1]; - // Can't use std::string.copy() because we are copying into wchar_t elements. - for (i=0;i<len;i++) - { - vw[i] = b[i]; - } - vw[len] = 0; - *value = (void*)vw; - return len; - } - - case BooleanType: - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - if (len > 4) - { - *(long*)*value = 0; - } - else - { - if (b == "true") - *(long*)*value = 1; - else *(long*)*value = 0; - } - return sizeof(long); - - case ByteType: - case CharacterType: - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - if (len > 0) - { - *(long*)*value = (long)b[0]; - } - else - { - *(long*)*value = (long)0; - } - return sizeof(long); - - case IntegerType: - case ShortType: - { - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(long)]; - int val = 0; - for (unsigned int j=0;j<len;j++) - { - val += (1+ (10*j)) * ((char)b[len-1-j] - (char)'0'); - } - *(long*)*value = (long)val; - return sizeof(long); - } - - case LongType: - { - if (*value != 0)delete ((char*)*value); - *value = new char[sizeof(int64_t)]; - int64_t val = 0; - for (unsigned int j=0;j<len;j++) - { - val += (int64_t)(1+ (10*j)) * ((char)b[len-1-j] - (char)'0'); - } - *(int64_t*)*value = (int64_t)val; - return sizeof(long); - } - - case DoubleType: - case FloatType: - case DateType: - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set Bytes on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setBytes" , - SDOInvalidConversionException, msg.c_str()); - return 0; - } - } - return 0; - } - - // --- - - unsigned int TypeImpl::convert(void** value,const short s) const - { -#if __WORDSIZE ==64 - return convert(value,(int64_t)s); -#else - return convert(value,(long)s); -#endif - } - -/* unsigned int TypeImpl::convert(void** value,const int i) const - { - return convert(value,(long)i); - } -*/ - unsigned int TypeImpl::convertDate(void** value, const SDODate i) const - { - switch (typeEnum) - { - case BooleanType: - { - string msg("Cannot set Date on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setDate" , - SDOInvalidConversionException, msg.c_str()); - break; - } - default: -#if __WORDSIZE ==64 - return convert(value, (int64_t)(i.getTime())); -#else - return convert(value, (long)(i.getTime())); -#endif - } - } - -#if __WORDSIZE !=64 - // setInteger - unsigned int TypeImpl::convert(void** value,const long i) const - { -#if ! defined(WIN32) && ! defined (_WINDOWS) - char *tmp = new char[MAX_LONG_SIZE]; - int j = 0; -#endif - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long)]; - *(long*)*value = (long)i; - return sizeof(long); - - case DoubleType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long double)]; - *(long double*)*value = (long double)i; - return sizeof(long double); - - case FloatType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(float)]; - *(float*)*value = (float)i; - return sizeof(float); - - case LongType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(int64_t)]; - *(int64_t*)*value = (int64_t)i; - return sizeof(int64_t); - - case DateType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(time_t)]; - *(time_t*)*value = (time_t)i; - return sizeof(time_t); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (*value != 0) delete ((wchar_t*)*value); - *value = new wchar_t[MAX_LONG_SIZE]; - // TODO - whats the equivalent of _ltow on linux? -#if defined(WIN32) || defined (_WINDOWS) - _ltow(i,(wchar_t*)*value,10); - return wcslen((wchar_t*)(*value)); -#else - sprintf(tmp,"%d", i); - for (j=0; j< strlen(tmp); j++) - { - ((wchar_t*)(*value))[j] = (wchar_t)tmp[j]; - } - ((wchar_t*)(*value))[strlen(tmp)] = 0; - delete tmp; - return j; -#endif - - } - - case BytesType: - { - if (*value != 0) delete ((wchar_t*)*value); - *value = new char[MAX_LONG_SIZE]; - // TODO - whats the equivalent of _ltow on linux? - sprintf((char*)*value,"%d", i); - return strlen((char*)(*value)); - - } - - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set Integer on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setInteger" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - -#endif - - // setLongLong - - unsigned int TypeImpl::convert(void** value,const int64_t l) const - { -#if ! defined(WIN32) && ! defined (_WINDOWS) - char *tmp = new char[MAX_LONG_SIZE]; - int j = 0; -#endif - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long)]; - *(long*)*value = (long)l; - return sizeof(long); - - case DoubleType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long double)]; - *(long double*)*value = (long double)l; - return sizeof(long double); - - case FloatType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(float)]; - *(float*)*value = (float)l; - return sizeof(float); - - case LongType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(int64_t)]; - *(int64_t*)*value = (int64_t)l; - return sizeof(int64_t); - - case DateType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(time_t)]; - *(time_t*)*value = (time_t)l; - return sizeof(time_t); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (*value != 0) delete ((wchar_t*)*value); - *value = new wchar_t[MAX_LONG_SIZE]; - // TODO - whats the equivalent of _ltow on linux? -#if defined(WIN32) || defined (_WINDOWS) - _i64tow(l,(wchar_t*)*value,10); - return wcslen((wchar_t*)(*value)); -#else - sprintf(tmp, "%lld", l); - for (j=0; j< strlen(tmp); j++) - { - ((wchar_t*)(*value))[j] = (wchar_t)tmp[j]; - } - ((wchar_t*)(*value))[strlen(tmp)] = 0; - delete tmp; - return j; -#endif - - } - - case BytesType: - { - if (*value != 0) delete ((char*)*value); - *value = new char[MAX_LONG_SIZE]; -#if defined(WIN32) || defined (_WINDOWS) - _i64toa(l,(char*)*value,10); -#else - sprintf((char*)*value, "%lld", l); -#endif - return strlen((char*)(*value)); - - } - - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set LongLong on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setLongLong" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - - // setFloat - unsigned int TypeImpl::convert(void** value,const float f) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long)]; - *(long*)*value = (long)f; - return sizeof(long); - - case DoubleType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long double)]; - *(long double*)*value = (long double)f; - return sizeof(long double); - - case FloatType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(float)]; - *(float*)*value = (float)f; - return sizeof(float); - - case LongType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(int64_t)]; - *(int64_t*)*value = (int64_t)f; - return sizeof(int64_t); - - case DateType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(time_t)]; - *(time_t*)*value = (time_t)f; - return sizeof(time_t); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - case BytesType: - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set Float on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setFloat" , - SDOInvalidConversionException, msg.c_str()); - break; - } - break; - } - } - - // TODO - storing the double as a long double - perhaps I need - // a new type? -/* unsigned int TypeImpl::convert(void** value,const double d) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long)]; - *(long*)*value = (long)d; - return sizeof(long); - - case DoubleType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long double)]; - *(long double*)*value = (long double)d; - return sizeof(long double); - - case FloatType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(float)]; - *(float*)*value = (float)d; - return sizeof(float); - - case LongType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(int64_t)]; - *(int64_t*)*value = (int64_t)d; - return sizeof(int64_t); - - case DateType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(time_t)]; - *(time_t*)*value = (time_t)d; - return sizeof(time_t); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - case BytesType: - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set Double on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setDouble" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } -*/ - unsigned int TypeImpl::convert(void** value,const long double d) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long)]; - *(long*)*value = (long)d; - return sizeof(long); - - case DoubleType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(long double)]; - *(long double*)*value = (long double)d; - return sizeof(long double); - - case FloatType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(float)]; - *(float*)*value = (float)d; - return sizeof(float); - - case LongType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(int64_t)]; - *(int64_t*)*value = (int64_t)d; - return sizeof(int64_t); - - case DateType: - if (*value != 0) delete ((char*)*value); - *value = new char[sizeof(time_t)]; - *(time_t*)*value = (time_t)d; - return sizeof(time_t); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - case BytesType: - case OtherTypes: - case DataObjectType: - case ChangeSummaryType: - default: - { - string msg("Cannot set Long Double on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setLongDouble" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - - unsigned int TypeImpl::convert(void** value,DataObject* dob) const - { - switch (typeEnum) - { - - case OtherTypes: - case DataObjectType: - *(DataObject**)value = dob; - return sizeof (void*); - - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - case DoubleType: - case FloatType: - case LongType: - case DateType: - case BigDecimalType: - case BigIntegerType: - case StringType: - case BytesType: - case UriType: - default: - { - string msg("Cannot set Data Object on object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("setDataObject" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - return 0; - } - - unsigned int TypeImpl::convertToString(void* value, wchar_t* outval, unsigned int len, - unsigned int max) const - { -#if ! defined(WIN32) && ! defined (_WINDOWS) - char* tmpstr = new char[MAX_LONG_SIZE]; - int j = 0; -#endif - unsigned int i; - switch (typeEnum) - { - - case BigDecimalType: - case BigIntegerType: - case UriType: - case StringType: - { - if (value == 0) return 0; - wchar_t* tmp = (wchar_t*)value; - for (i=0;(i < len) && (i < max);i++) - { - outval[i] = tmp[i]; - } - return len>max?max:len; - } - case BytesType: - { - if (value == 0) return 0; - char* tmp = (char*)value; - for (i=0;(i < len) && (i < max);i++) - { - outval[i] = (wchar_t)(tmp[i]); - } - return len>max?max:len; - } - - case BooleanType: - { - if (max < 4) return 0; - if (value == 0 || *(long*)value == 0) { - if (max < 5) return 0; - outval[0] = (wchar_t)'f'; - outval[1] = (wchar_t)'a'; - outval[2] = (wchar_t)'l'; - outval[3] = (wchar_t)'s'; - outval[4] = (wchar_t)'e'; - return 5; - } - else - { - outval[0] = (wchar_t)'t'; - outval[1] = (wchar_t)'r'; - outval[2] = (wchar_t)'u'; - outval[3] = (wchar_t)'e'; - return 4; - } - } - - case ByteType: - { - if (value == 0) return 0; - long tmp = *(long*)value; - outval[0] = (wchar_t)(tmp&0xFF); - return 1; - } - - case CharacterType: - { - if (value == 0) return 0; - long tmp = *(long*)value; - outval[0] = (wchar_t)(tmp & 0xFFFF); - return 1; - } - - case ShortType: - case IntegerType: - { - if (value == 0) return 0; - long tmp = *(long*)value; -#if defined(WIN32) || defined (_WINDOWS) - wchar_t* tmpstr = new wchar_t[MAX_LONG_SIZE]; - _ltow(tmp,tmpstr,10); - if (wcslen(tmpstr) > max) return 0; - _ltow(tmp,outval,10); - return wcslen(outval); -#else - sprintf(tmpstr, "%ld", tmp); - if (strlen(tmpstr) > max) return 0; - for (j=0; j< strlen(tmpstr); j++) - { - outval[j] = (wchar_t)tmpstr[j]; - } - delete tmpstr; - return j; -#endif - } - - - case LongType: - { - if (value == 0) return 0; - int64_t tmp = *(int64_t*)value; -#if defined(WIN32) || defined (_WINDOWS) - wchar_t* tmpstr = new wchar_t[MAX_LONG_SIZE]; - _i64tow(tmp,tmpstr,10); - if (wcslen(tmpstr) > max) - { - delete tmpstr; - return 0; - } - _i64tow(tmp,outval,10); - return wcslen(outval); -#else - sprintf(tmpstr, "%lld", tmp); - if (strlen(tmpstr) > max) return 0; - for (j=0; j< strlen(tmpstr); j++) - { - outval[j] = (wchar_t)tmpstr[j]; - } - delete tmpstr; - return j; -#endif - } - - case DateType: - { - - if (value == 0) return 0; - string msg("Conversion to string not implemented from type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getString" , - SDOInvalidConversionException, msg.c_str()); - break; - } - - case DoubleType: - { - if (value == 0) return 0; - if (max < MAX_DOUBLE_SIZE) return 0; - wchar_t* fmt = new wchar_t[5]; - fmt[0] = (wchar_t)'%'; - fmt[1] = (wchar_t)'.'; - fmt[2] = (wchar_t)'3'; - fmt[3] = (wchar_t)'e'; - fmt[4] = (wchar_t)0; -#if defined(WIN32) || defined (_WINDOWS) - swprintf((wchar_t*)outval,fmt,*(long double*)value); -#else -#if defined(NO_SWPRINTF) - { - int k; - char *tmpbuf = new char[50]; - wchar_t *tmpw = (wchar_t*)outval; - sprintf(tmpbuf,"%.3Le",*(long double*)value); - for (k=0;k<strlen(tmpbuf);k++) - { - *(tmpw++) = (wchar_t)(tmpbuf[k]); - } - *tmpw = 0; - delete tmpbuf; - } - -#else - swprintf((wchar_t*)outval, wcslen((wchar_t*)outval), fmt, *(long double*)value); -#endif -#endif - delete fmt; - - return wcslen(outval); - } - case FloatType: - { - if (value == 0) return 0; - if (max < MAX_FLOAT_SIZE) return 0; - wchar_t* fmt = new wchar_t[5]; - fmt[0] = (wchar_t)'%'; - fmt[1] = (wchar_t)'.'; - fmt[2] = (wchar_t)'3'; - fmt[3] = (wchar_t)'e'; - fmt[4] = (wchar_t)0; -#if defined(WIN32) || defined (_WINDOWS) - swprintf(outval,fmt,*(float*)value); -#else -#if defined(NO_SWPRINTF) - { - int k; - char *tmpbuf = new char[50]; - wchar_t *tmpw = (wchar_t*)outval; - sprintf(tmpbuf,"%.3e",*(float*)value); - for (k=0;k<strlen(tmpbuf);k++) - { - *(tmpw++) = (wchar_t)(tmpbuf[k]); - } - *tmpw = 0; - delete tmpbuf; - } -#else - swprintf(outval, wcslen(outval), fmt, *(float*)value); -#endif -#endif - delete fmt; - - return wcslen(outval); - } - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get String from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getString" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - return 0; - } - - unsigned int TypeImpl::convertToBytes(void* value, char* outval, unsigned int len, - unsigned int max) const - { - unsigned int i; - switch (typeEnum) - { - case BytesType: - { - if (value == 0) return 0; - char* tmp = (char*)value; - for (i=0;(i < max) && (i < len);i++) - { - outval[i] = tmp[i]; - } - return len>max?max:len; - } - - case BigDecimalType: - case BigIntegerType: - case UriType: - case StringType: - { - if (value == 0) return 0; - wchar_t* tmp = (wchar_t*)value; - for (i=0;(i < max) && (i < len);i++) - { - outval[i] = (char)(tmp[i]); - } - return len>max?max:len; - } - - case BooleanType: - { - if (value == 0 || *(long*)value == 0) { - if (max < 5) return 0; - outval[0] = 'f'; - outval[1] = 'a'; - outval[2] = 'l'; - outval[3] = 's'; - outval[4] = 'e'; - return 5; - } - else { - if (max < 4) return 0; - outval[0] = 't'; - outval[1] = 'r'; - outval[2] = 'u'; - outval[3] = 'e'; - return 4; - } - return 0; - } - - case CharacterType: - case ByteType: - { - if (value == 0) return 0; - long tmp = *(long*)value; - outval[0] = (char)(tmp&0xFF); - return 1; - } - - case ShortType: - case IntegerType: - { - if (value == 0) return 0; - long tmp = *(long*)value; - char* tmpstr = new char[MAX_LONG_SIZE]; - sprintf(tmpstr, "%ld", tmp); - if (strlen(tmpstr) > max) - { - delete tmpstr; - return 0; - } - delete tmpstr; - sprintf(outval, "%ld", tmp); - return strlen(outval); - } - - - case LongType: - { - if (value == 0) return 0; - int64_t tmp = *(int64_t*)value; - char * tmpstr = new char[MAX_LONG_SIZE]; - sprintf(tmpstr, "%lld", tmp); - if (strlen(tmpstr) > max) - { - delete tmpstr; - return 0; - } - delete tmpstr; - sprintf(outval, "%lld", tmp); - return strlen(outval); - } - case DateType: - { - if (value == 0) return 0; - string msg("Conversion to string not implemented from type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getBytes" , - SDOInvalidConversionException, msg.c_str()); - break; - } - - case DoubleType: - if (value == 0) return 0; - if (max < MAX_DOUBLE_SIZE) return 0; - sprintf(outval,"%.3Le",*(long double*)value); - return strlen(outval); - - case FloatType: - if (value == 0) return 0; - if (max < MAX_FLOAT_SIZE) return 0; - sprintf(outval,"%.3e",*(float*)value); - return strlen(outval); - - case OtherTypes: - case DataObjectType: - default: - { - if (max < 9) return 0; - sprintf(outval,"%08x",value); - //string msg("Cannot get Bytes from object of type:"); - //msg += getName(); - //SDO_THROW_EXCEPTION("getBytes" , - // SDOInvalidConversionException, msg.c_str()); - return strlen(outval); - } - } - return 0; - } - - // +++ - - // value is a pointer to the byte stream that is the value to convert - // outval is the resulting string representation of value - // len is the length of the input byte stream, it is used only when the length cannot be inferred from other information. - // max is the maximum size allowed for the output byte stream. (Not strictly needed when the output is an std::string but we maintain the behaviour from the earlier method. - - // Questions - // 1. Why isn't value const? - // - unsigned int TypeImpl::convertToBytes(const void* value, - SDOString& outval, - unsigned int len, - unsigned int max) const - { - unsigned int i; - switch (typeEnum) - { - case BytesType: - { - if (value == 0) return 0; - - const char* tempPtr = (const char*) value; - unsigned int count = (len > max) ? max : len; - outval.assign(tempPtr, count); - - return count; - } - - case BigDecimalType: - case BigIntegerType: - case UriType: - case StringType: - { - if (value == 0) return 0; - - const wchar_t* tempPtr = (const wchar_t*) value; - unsigned int count = (len > max) ? max : len; - - // The following loop copies the low byte from each 2 byte wchar_t - // into one byte of the target array eg H_E_L_P -> HELP - for (i = 0; (i < count); i++) - { - outval[i] = (char)(tempPtr[i]); - } - return count; - } - - case BooleanType: - { - if (value == 0 || *(const long*)value == 0) { - if (max < 5) return 0; - outval = "false"; - return 5; - } - else { - if (max < 4) return 0; - outval = "true"; - return 4; - } - return 0; - } - - case CharacterType: - case ByteType: - { - if (value == 0) return 0; - - const long tmp = *(const long*)value; - outval[0] = (char)(tmp&0xFF); - return 1; - } - - case ShortType: - case IntegerType: - { - if (value == 0) return 0; - - const long tmp = *(const long*) value; - char* tmpstr = new char[MAX_LONG_SIZE + 1]; - sprintf(tmpstr, "%ld", tmp); - if (strlen(tmpstr) > max) - { - delete tmpstr; - return 0; - } - outval = tmpstr; - delete tmpstr; - return outval.length(); - } - - case LongType: - { - if (value == 0) return 0; - - const int64_t tmp = *(const int64_t*)value; - char* tmpstr = new char[MAX_LONG_SIZE + 1]; - sprintf(tmpstr, "%lld", tmp); - if (strlen(tmpstr) > max) - { - delete tmpstr; - return 0; - } - outval = tmpstr; - delete tmpstr; - return outval.length(); - } - case DateType: - { - if (value == 0) return 0; - - string msg("Conversion to string not implemented from type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getBytes" , - SDOInvalidConversionException, msg.c_str()); - break; - } - - case DoubleType: - { - if (value == 0) return 0; - - if (max < MAX_DOUBLE_SIZE) return 0; - - char* tmpstr = new char[MAX_DOUBLE_SIZE + 1]; - sprintf(tmpstr, "%.3Le", *(const long double*)value); - outval = tmpstr; - delete tmpstr; - return outval.length(); - } - - case FloatType: - { - if (value == 0) return 0; - - if (max < MAX_FLOAT_SIZE) return 0; - - char* tmpstr = new char[MAX_FLOAT_SIZE + 1]; - sprintf(tmpstr, "%.3Le", *(const float*)value); - outval = tmpstr; - delete tmpstr; - return outval.length(); - } - - case OtherTypes: - case DataObjectType: - default: - { - if (max < 9) return 0; - - char tmpstr[9]; - sprintf(tmpstr, "%08x", value); - outval = tmpstr; - //string msg("Cannot get Bytes from object of type:"); - //msg += getName(); - //SDO_THROW_EXCEPTION("getBytes" , - // SDOInvalidConversionException, msg.c_str()); - return outval.length(); - } - } - return 0; - } - - // --- - - const char* TypeImpl::convertToCString(void* value, char** asstringbuf, unsigned int len) const - { - unsigned int i; - - switch (typeEnum) - { - case BooleanType: - if (value == 0 || *(long*)value == 0) { - *asstringbuf = new char[6]; - strcpy(*asstringbuf,"false"); - } - else { - *asstringbuf = new char[5]; - strcpy(*asstringbuf,"true"); - } - return *asstringbuf; - - case ByteType: - *asstringbuf = new char[MAX_LONG_SIZE]; - if (value == 0){ - sprintf(*asstringbuf,"%ld",0); - } - else { - sprintf(*asstringbuf,"%ld",*(long*)value); - } - return *asstringbuf; - - case CharacterType: - *asstringbuf = new char[MAX_LONG_SIZE]; - if (value == 0){ - sprintf(*asstringbuf,"%ld",0); - } - else { - sprintf(*asstringbuf,"%ld", *(long*)value); - } - return *asstringbuf; - - case IntegerType: - *asstringbuf = new char[MAX_LONG_SIZE]; - if (value == 0){ - sprintf(*asstringbuf,"%ld",0); - } - else { - sprintf(*asstringbuf,"%ld", *(long*)value); - } - return *asstringbuf; - - case ShortType: - *asstringbuf = new char[MAX_LONG_SIZE]; - if (value == 0){ - sprintf(*asstringbuf,"%ld",0); - } - else { - sprintf(*asstringbuf,"%ld", *(long*)value); - } - return *asstringbuf; - - case DoubleType: - *asstringbuf = new char[MAX_DOUBLE_SIZE]; - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - (*asstringbuf)[0] = 0; - return *asstringbuf; - } - sprintf(*asstringbuf,"%.3Le",*(long double*)value); - return *asstringbuf; - - case FloatType: - *asstringbuf = new char[MAX_FLOAT_SIZE]; - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - (*asstringbuf)[0] = 0; - return *asstringbuf; - } - sprintf(*asstringbuf,"%.3e", *(float*)value); - return *asstringbuf; - - case LongType: - { - *asstringbuf = new char[MAX_LONG_SIZE]; - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - (*asstringbuf)[0] = 0; - return *asstringbuf; - } - int64_t temp = *(int64_t*)value; -#if defined(WIN32) || defined (_WINDOWS) - sprintf(*asstringbuf,"%I64d", temp); -#else - sprintf(*asstringbuf,"%lld", temp); -#endif - return *asstringbuf; - } - case DateType: - *asstringbuf = new char[MAX_LONG_SIZE]; - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - (*asstringbuf)[0] = 0; - return *asstringbuf; - } - sprintf(*asstringbuf,"%ld", *(time_t*)value); - return *asstringbuf; - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (value == 0 || len == 0) - { - *asstringbuf = new char[1]; - (*asstringbuf)[0] = 0; - return *asstringbuf; - } - *asstringbuf = new char[len + 1]; - wchar_t* tmp = (wchar_t*)value; - for (i=0;i< len;i++) - { - (*asstringbuf)[i] = tmp[i] & 0xFF; - } - (*asstringbuf)[i] = 0; - return *asstringbuf; - } - - case BytesType: - { - if (value == 0 || len == 0) - { - *asstringbuf = new char[1]; - (*asstringbuf)[0] = 0; - return *asstringbuf; - } - *asstringbuf = new char[len + 1]; - char* tmp = (char*)value; - for (i=0;i< len ;i++) - { - (*asstringbuf)[i] = (char)(tmp[i]); - } - (*asstringbuf)[i] = 0; - return *asstringbuf; - } - - - case OtherTypes: - case DataObjectType: - default: - { - *asstringbuf = new char[9]; - sprintf(*asstringbuf,"%08x",value); - //string msg("Cannot get CString from object of type:"); - //msg += getName(); - //SDO_THROW_EXCEPTION("getCString" , - // SDOInvalidConversionException, msg.c_str()); - return *asstringbuf; - } - } - return 0; - } - - const bool TypeImpl::convertToBoolean(void* value, unsigned int len) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return false; - if (*(long*)value != 0) return true; - return false; - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return false; - } - if (*(long double*)value != 0.0) return true; - return false; - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return false; - } - if (*(float*)value != 0.0) return true; - return false; - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return false; - } - if (*(int64_t*)value != 0)return true; - return false; - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return false; - } - if (*(time_t*)value != 0)return true; - return false; - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - if (value == 0 || len < 4) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return false; - } - if ( ((wchar_t*)value)[0] == (wchar_t)'t' && - ((wchar_t*)value)[1] == (wchar_t)'r' && - ((wchar_t*)value)[2] == (wchar_t)'u' && - ((wchar_t*)value)[3] == (wchar_t)'e' ) - return true; - - return false; - - case BytesType: - if (value == 0 || len < 4) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return false; - } - if (!strncmp((char*)value,"true", 4)) return true; - return false; - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Boolean from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getBoolean" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - - } - - const char TypeImpl::convertToByte(void* value , unsigned int len) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (char)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (char)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (char)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (char)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - - return (char)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (value == 0) return 0; - return (char)*(wchar_t*)value; - } - - case BytesType: - { - if (value == 0) return 0; - return (char)*(char*)value; - } - - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Byte from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getByte" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - - const wchar_t TypeImpl::convertToCharacter(void* value, unsigned int len) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (wchar_t)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (wchar_t)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (wchar_t)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (wchar_t)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (wchar_t)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (value == 0) return 0; - return *(wchar_t*)value; - } - - case BytesType: - { - if (value == 0) return 0; - return (wchar_t)*(char*)value; - } - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Character from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getCharacter" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - const short TypeImpl::convertToShort(void* value, unsigned int len) const - { -#if ! defined(WIN32) && !defined (_WINDOWS) - char* tmpstr = new char[len+1]; - short s = 0; -#endif - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (short)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (short)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (short)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (short)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (short)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - if (value == 0 || len == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } -#if defined(WIN32) || defined (_WINDOWS) - return (short)_wtoi((wchar_t*)value); -#else - for (int j=0;j< len;j++) - { - tmpstr[j] = (char)((char *)value)[j]; - } - tmpstr[len] = 0; - s = (short) atoi(tmpstr); - delete tmpstr; - return s; -#endif - - - case BytesType: - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Short from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getShort" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - - -/* const int TypeImpl::convertToInt(void* value, unsigned int len) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (int)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } -#if defined(WIN32) || defined (_WINDOWS) - return (int)_wtoi((wchar_t*)value); -#else - char* tmp = new char[len+1]; - int j = 0;; - for (j=0;j<len;j++) - { - tmp[j] = (char)(wchar_t*)value[j]; - } - tmp[j] = 0; - j = atoi(tmp); - delete tmp; - return j; -#endif - - case BytesType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int)atoi((char*)value); - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Int from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getInt" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - - */ - const long TypeImpl::convertToInteger(void* value, unsigned int len) const - { -#if ! defined(WIN32) && ! defined (_WINDOWS) - char* tmp = new char[len+1]; - int j = 0; - long l = 0; -#endif - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (long)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (long)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (long)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (long)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (long)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } -#if defined(WIN32) || defined (_WINDOWS) - return (long)_wtol((wchar_t*)value); -#else - for (j=0;j<len;j++) - { - tmp[j] = (char)((wchar_t*)value)[j]; - } - tmp[j] = 0; - l = atol(tmp); - delete tmp; - return l; -#endif - - case BytesType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int)atol((char*)value); - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Long from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getLong" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - const int64_t TypeImpl::convertToLong(void* value, unsigned int len) const - { -#if ! defined(WIN32) && ! defined (_WINDOWS) - char* tmp = new char[len+1]; - int j = 0; - int64_t l = 0; -#endif - switch (typeEnum) - { - case BooleanType: - case CharacterType: - case ByteType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (int64_t)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int64_t)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int64_t)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int64_t)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (int64_t)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } -#if defined(WIN32) || defined (_WINDOWS) - return (long)_wtol((wchar_t*)value); -#else - for (j=0;j<len;j++) - { - tmp[j] = (char)((wchar_t*)value)[j]; - } - tmp[j] = 0; - l = strtoll(tmp, NULL, 0); - delete tmp; - return l; -#endif - - - case BytesType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } -#if defined(WIN32) || defined (_WINDOWS) - return _atoi64((char*)value); -#else - return strtoll((char*)value, NULL, 0); -#endif - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Long Long from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getLongLong" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - const float TypeImpl::convertToFloat(void* value, unsigned int len) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (float)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (float)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (float)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (float)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (float)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - char* tmp = new char[len+1]; - for (unsigned int j=0;j<len;j++) - { - tmp[j] = (char)((wchar_t*)value)[j]; - } - tmp[len] = 0; - float f = atof(tmp); - delete tmp; - return f; - } - - case BytesType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (float)atof((char*)value); - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Float from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getFloat" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - - /*const double TypeImpl::convertToDouble(void* value, unsigned int len) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (double)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (double)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (double)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (double)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (double)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - char* tmp = new char[len+1]; - int j = 0; - for (j=0;j<len;j++) - { - tmp[j] = (char)((wchar_t*)value)[j]; - } - tmp[len] = 0; - float f = atof(tmp); - delete tmp; - return (double)f; - } - case BytesType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (double)atof((char*)value); - - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get LongDouble from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getLongDouble" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } -*/ - const long double TypeImpl::convertToDouble(void* value, unsigned int len) const - { - switch (typeEnum) - { - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (long double)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (long double)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (long double)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (long double)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (long double)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - { - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - char* tmp = new char[len+1]; - for (unsigned int j=0;j<len;j++) - { - tmp[j] = (char)((wchar_t*)value)[j]; - } - tmp[len] = 0; - float f = atof(tmp); - delete tmp; - return (long double)f; - } - - case BytesType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0.0; - } - return (long double)atof((char*)value); - - case OtherTypes: - case DataObjectType: - SDO_THROW_EXCEPTION("getLongDouble" , - SDOInvalidConversionException, "Not implemented on data object"); - break; - - default: - { - string msg("Cannot get LongDouble from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getLongDouble" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - const SDODate TypeImpl::convertToDate(void* value, unsigned int len) const - { - switch (typeEnum) - { - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - if (value == 0) return 0; - return (time_t)(*(long*)value); - - case DoubleType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (time_t)(*(long double*)value); - - case FloatType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (time_t)(*(float*)value); - - case LongType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (time_t)(*(int64_t*)value); - - case DateType: - if (value == 0) - { - // Conversions might set from a zero value, as they are used - // by the default Setting code as well - return 0; - } - return (time_t)(*(time_t*)value); - - case BigDecimalType: - case BigIntegerType: - case StringType: - case UriType: - case BooleanType: - case BytesType: - case OtherTypes: - case DataObjectType: - default: - { - string msg("Cannot get Date from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getDate" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } - - DataObject* TypeImpl::convertToDataObject(void* value, unsigned int len) const - { - switch (typeEnum) - { - case OtherTypes: - case DataObjectType: - return (DataObject*)value; - - case BooleanType: - case ByteType: - case CharacterType: - case IntegerType: - case ShortType: - case DoubleType: - case FloatType: - case LongType: - case DateType: - case BigDecimalType: - case BigIntegerType: - case StringType: - case BytesType: - case UriType: - default: - { - string msg("Cannot get Data Object from object of type:"); - msg += getName(); - SDO_THROW_EXCEPTION("getDataObject" , - SDOInvalidConversionException, msg.c_str()); - break; - } - } - } -}; - -}; diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeImpl.h deleted file mode 100644 index 5a8bcec2e7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeImpl.h +++ /dev/null @@ -1,325 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/13 08:35:04 $ */ - -#ifndef _TYPEIMPL_H_ -#define _TYPEIMPL_H_ - -#include "commonj/sdo/disable_warn.h" - -#include <list> -#include <map> -#include <vector> -#include "commonj/sdo/DASType.h" -#include "commonj/sdo/PropertyImpl.h" -#include "commonj/sdo/SDODate.h" - - -#define MAX_LONG_SIZE 20 -#define MAX_FLOAT_SIZE 32 -#define MAX_DOUBLE_SIZE 32 -#define BOOL_SIZE 5 -#define CHAR_SIZE 1 -#define BYTE_SIZE 1 - - - -namespace commonj{ -namespace sdo{ - -class DataObject; -class PropertyList; -class MetadataGraph; - - -#ifndef PROPERTY_LIST - typedef std::list<PropertyImpl*> PROPERTY_LIST; -#endif - -/** - * TypeImpl implements the abstract class Type. - * A representation of the type of property of a data object. - */ - - -class TypeImpl : public DASType -{ - -public: - - - virtual ~TypeImpl(); - - /** convert - converts between types - * - * When a DataObject is queried for the value of one of its - * properties, the method to call varies according to the - * type of the property. - * If the wrong API is called (E.g getBoolean() called on - * an Integer value), then a conversion is attempted. - * Many conversions will succeed and return the value, - * others will throw an InvalidConversionException - */ - - unsigned int convertDate( void ** value, const SDODate i) const; - unsigned int convert( void ** value,const char* s) const; - unsigned int convert(void ** value, const SDOString& s) const; - unsigned int convert( void ** value,const wchar_t* s, unsigned int len) const; - unsigned int convert( void ** value,const char* s, unsigned int len) const; - unsigned int convert(void ** value, const SDOString& s, unsigned int len) const; - unsigned int convert( void ** value,const bool b) const; - unsigned int convert( void ** value,const char c) const; - unsigned int convert( void ** value,const wchar_t c) const; - unsigned int convert( void ** value,const short s) const; -#if __WORDSIZE !=64 - unsigned int convert( void ** value,const long i) const; -#endif - unsigned int convert( void ** value,const int64_t l) const; - unsigned int convert( void ** value,const float f) const; - unsigned int convert( void ** value,const long double d) const; - unsigned int convert( void ** value,DataObject* dob) const; - - const char* convertToCString( void* value , char** inbuf, unsigned int len) const; - const bool convertToBoolean( void* value, unsigned int len) const; - const char convertToByte( void* value,unsigned int len ) const; - unsigned int convertToString( void* value , wchar_t* val, unsigned int len, - unsigned int max) const; - unsigned int convertToBytes( void* value , char* val, unsigned int len, - unsigned int max) const; - unsigned int convertToBytes( const void* value , SDOString& val, unsigned int len, - unsigned int max) const; - const wchar_t convertToCharacter( void* value ,unsigned int len) const; - const short convertToShort( void* value ,unsigned int len) const; - const long convertToInteger( void* value ,unsigned int len) const; - const int64_t convertToLong( void* value ,unsigned int len) const; - const float convertToFloat( void* value ,unsigned int len) const; - const long double convertToDouble(void* value ,unsigned int len) const; - DataObject* convertToDataObject(void* value ,unsigned int len) const; - const SDODate convertToDate (void* value ,unsigned int len) const; - - /** equals - compares - * - * equals returns true if the name and uri are the same - */ - - bool equals(const Type& t); - - /////////////////////////////////////////////////////////////////////////// - // Returns the name of the type. - /////////////////////////////////////////////////////////////////////////// - const char* getName() const; - - /////////////////////////////////////////////////////////////////////////// - // Alias support. - // @return nth alias - /////////////////////////////////////////////////////////////////////////// - virtual const char* getAlias(unsigned int index = 0) const ; - virtual unsigned int getAliasCount() const ; - virtual void setAlias(const char* alias); - - - - /////////////////////////////////////////////////////////////////////////// - // Returns the namespace URI of the type. - /////////////////////////////////////////////////////////////////////////// - const char* getURI() const; - - /////////////////////////////////////////////////////////////////////////// - // Returns the list of the properties of this type. - /////////////////////////////////////////////////////////////////////////// - PropertyList getProperties() const; - - /////////////////////////////////////////////////////////////////////////// - // add a property to a Type whilst building - this is for DAS - /////////////////////////////////////////////////////////////////////////// - void addProperty(const char* name, - const TypeImpl& t, bool many, bool rdonly, bool cont); - - /////////////////////////////////////////////////////////////////////////// - // Returns the property with the specified name. - /////////////////////////////////////////////////////////////////////////// - const Property& getProperty(const char* propertyName) const ; - const Property& getProperty(const SDOString& propertyName) const ; - const Property& getProperty(unsigned int index) const ; - - PropertyImpl* getPropertyImpl(const char* propertyName) const ; - PropertyImpl* getPropertyImpl(const SDOString& propertyName) const ; - PropertyImpl* getPropertyImpl(unsigned int index) const ; - - - /////////////////////////////////////////////////////////////////////////// - // Substitute support - /////////////////////////////////////////////////////////////////////////// - // get the property with no substitute possible. - PropertyImpl* getPropertyImplPure(const char* propertyName) const ; - - // get the type of the property even if its a substitute - const Type& getRealPropertyType(const char* propertyName) const ; - const TypeImpl* getRealPropertyTypeImpl(const char* propertyName) const ; - - - - unsigned int getPropertyIndex(const char* propertyName) const ; - unsigned int getPropertyIndex(const SDOString& propertyName) const ; - - unsigned int getPropertiesSize() const; - /////////////////////////////////////////////////////////////////////////// - // Indicates if this Type specifies DataObjects. - /////////////////////////////////////////////////////////////////////////// - bool isDataObjectType() const; - - /////////////////////////////////////////////////////////////////////////// - // Indicates if this Type specifies Sequenced DataObjects. - /////////////////////////////////////////////////////////////////////////// - bool isSequencedType() const; - void setSequenced(bool set); - - /////////////////////////////////////////////////////////////////////////// - // Indicates if this Type allows any form of open content. If false, - // dataObject.getInstanceProperties() must be the same as - // DataObject.getType().getProperties(). - /////////////////////////////////////////////////////////////////////////// - bool isOpenType() const; - void setOpen(bool set); - - /////////////////////////////////////////////////////////////////////////// - // Indicates if this type may not be instantiated. - /////////////////////////////////////////////////////////////////////////// - bool isAbstractType() const; - void setAbstract(bool set); - - /////////////////////////////////////////////////////////////////////////// - // Set the base type for inherited types - /////////////////////////////////////////////////////////////////////////// - void setBaseType(const Type* tb, bool isRestriction = false); - const Type* getBaseType() const; - - - /////////////////////////////////////////////////////////////////////////// - // Indicates a non-object type - /////////////////////////////////////////////////////////////////////////// - bool isDataType() const; - - /////////////////////////////////////////////////////////////////////////// - // Indicates a non-object type - /////////////////////////////////////////////////////////////////////////// - Type::Types getTypeEnum() const; - - /////////////////////////////////////////////////////////////////////////// - // set this type as a change summary holder - /////////////////////////////////////////////////////////////////////////// - void addChangeSummary(); - - /////////////////////////////////////////////////////////////////////////// - // Say if this type is allowed to have a summary - /////////////////////////////////////////////////////////////////////////// - bool isChangeSummaryType() const; - - /////////////////////////////////////////////////////////////////////////// - // Used by the DAS to resolve the base type properties list - /////////////////////////////////////////////////////////////////////////// - void initCompoundProperties(); - - /////////////////////////////////////////////////////////////////////////// - // Used by the DAS to chack for nested change summaries - /////////////////////////////////////////////////////////////////////////// - void validateChangeSummary(); - - virtual bool equals(const Type& tother) const; - - virtual bool isFromList() const; - - -private: - friend class DataFactoryImpl; - - bool changeSummaryType; - - bool bFromList; - - void* newValue(void* v, int size) const; - - PROPERTY_LIST getCompoundProperties(); - - void throwIfNestedChangeSummary() const; - - TypeImpl(const char* uri,const char* name, - bool isSeq= false, - bool isOp = false, - bool isAbs = false, - bool isData = false, - bool isFromList = false); - - TypeImpl(const Type* base, const char* uri,const char* name, - bool isSeq = false, - bool isOp = false, - bool isAbs = false, - bool isData = false, - bool isRest = false); - - void init(const char* uri, const char* inname, - bool isSeq, - bool isOp, - bool isAbs, - bool isData); - - - - TypeImpl(); - TypeImpl(const TypeImpl& t); - - - char* name; - char* typeURI; - - - bool isPrimitive; - bool isSequenced; - bool isOpen; - bool isAbstract; - - // baseType properties included - bool isResolved; - // check for circular dependency - bool isResolving; - - Types typeEnum; - - static char* types[num_types]; - - // alias support - - std::vector<char*> aliases; - - - PROPERTY_LIST props; - - - // type inheritance - TypeImpl* baseType; - bool brestriction; /* if this is a restriction of the base type - rather than an extension.*/ - // says how many of the props are really in this data object type. - unsigned int localPropsSize; - -}; - -}; -}; - -#endif //_TYPEIMPL_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeList.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeList.cpp deleted file mode 100644 index ec86a95eb2..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeList.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/01/16 15:41:28 $ */ - -#ifndef SDO_EXPORTS - #define SDO_EXPORTS -#endif - -#include "commonj/sdo/export.h" -#include <iostream> -#include "commonj/sdo/Property.h" -#include "commonj/sdo/Type.h" -#include "commonj/sdo/TypeList.h" -#include "commonj/sdo/Logger.h" - -using namespace std; - -namespace commonj{ -namespace sdo { - - -/** TypeList provides access to a list of Types. - * - * The data factory can return a list of types available. This - * class wraps that list and provides access to Types by - * iteration - */ - -SDO_API TypeList::TypeList(std::vector<const Type*> p) : plist (p) -{ -} - -SDO_API TypeList::TypeList(const TypeList &pin) -{ - plist = std::vector<const Type*>(pin.getVec()); -} - -SDO_API TypeList::TypeList() -{ -} - -SDO_API TypeList::~TypeList() -{ -} - - -SDO_API const Type& TypeList::operator[] (int pos) const -{ - return *plist[pos]; -} - -SDO_API int TypeList::size () const -{ - return plist.size(); -} - -std::vector<const Type*> TypeList::getVec() const -{ - return plist; -} - -SDO_API void TypeList::insert (const Type* t) -{ - plist.insert(plist.end(),t); -} - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeList.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeList.h deleted file mode 100644 index bdc20cbfe3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/TypeList.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _TYPELIST_H_ -#define _TYPELIST_H_ -#include "commonj/sdo/export.h" - -#include <vector> -#include "commonj/sdo/Type.h" - -namespace commonj{ -namespace sdo -{ -class Type; - -/** TypeList - provides access to a list of Types - * - * The data factory can return a list of types available. This - * class wraps that list and provides access to Types by - * iteration - */ - -class TypeList -{ -private: - std::vector<const Type*> plist; - std::vector<const Type*> getVec() const; -public: - SDO_API TypeList(const TypeList &pin); - SDO_API TypeList(std::vector<const Type*> p); - SDO_API TypeList(); - virtual SDO_API ~TypeList(); - SDO_API const Type& operator[] (int pos) const; - SDO_API int size () const; - SDO_API void insert (const Type* t); -}; -}; -}; - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocument.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocument.cpp deleted file mode 100644 index b16b2eedff..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocument.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/XMLDocument.h" -namespace commonj -{ - namespace sdo - { - - XMLDocument::~XMLDocument() - { - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocument.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocument.h deleted file mode 100644 index 4737fa9d03..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocument.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _XMLDOCUMENT_H_ -#define _XMLDOCUMENT_H_ - - -#include "commonj/sdo/export.h" - -#include "commonj/sdo/DataObject.h" - -namespace commonj -{ - namespace sdo - { - /** XMLDocument - place for holding a graph - * - * The XMLDocument class provides a place to hold a loaded - * graph of data. The root element name is maintained here so that - * the graph can be serialized to the same name later. - */ - - - class XMLDocument : public RefCountingObject - { - - public: - - SDO_API virtual ~XMLDocument(); - - /** getRootDataObject- return the topmost data object - * - * When XML data is loaded, there is one base element which becomes - * the root data object. As this data object is not a property of any - * other data object, it has no name - * The XMLDocument stores the name which was in the XML file. - * This root data object has a URI and a Name only within this - * XMLDocument - */ - - SDO_API virtual DataObjectPtr getRootDataObject() const = 0; - - /** getRootElementName- return the topmost data objects name - * - * When XML data is loaded, there is one base element which becomes - * the root data object. As this data object is not a property of any - * other data object, it has no name - * The XMLDocument stores the name/uri which was in the XML file. - */ - SDO_API virtual const char* getRootElementURI() const = 0; - - /** getRootElementURI- return the topmost data objects uri - * - * When XML data is loaded, there is one base element which becomes - * the root data object. As this data object is not a property of any - * other data object, it has no name - * The XMLDocument stores the name/uri which was in the XML file. - */ - SDO_API virtual const char* getRootElementName() const = 0; - - /** getEncoding- return the encoding for this document - * - * NOT IMPLEMENTED - * This returns the encoding specified in the original XML. - */ - SDO_API virtual const char* getEncoding() const = 0; - - /** setEncoding- set the encoding to save this document - * - * This sets the encoding to save this data to XML. - */ - SDO_API virtual void setEncoding(const char* encoding) = 0; - - /** getXMLDeclaration - * - * NOT IMPLEMENTED - */ - SDO_API virtual bool getXMLDeclaration() const = 0; - - /** setXMLDeclaration - * - * Sets the XMLDeclaration - */ - SDO_API virtual void setXMLDeclaration(bool xmlDeclaration) = 0; - - /** getXMLVersion- return the xml version for this document - * - * NOT IMPLEMENTED - */ - SDO_API virtual const char* getXMLVersion() const = 0; - - /** setXMLVersion- sets the version for this document - * - * NOT IMPLEMENTED - */ - SDO_API virtual void setXMLVersion(const char* xmlVersion) = 0; - - /** getSchemaLocation- return the schema location - * - * NOT IMPLEMENTED - */ - SDO_API virtual const char* getSchemaLocation() const = 0; - - /** setSchemaLocation - * - * Sets the XML Schema location. - */ - SDO_API virtual void setSchemaLocation(const char* schemaLocation) = 0; - - /** getNoNamespaceSchemaLocation - * - * NOT IMPLEMENTED - */ - SDO_API virtual const char* getNoNamespaceSchemaLocation() const = 0; - - /** setNoNamespaceSchemaLocation - * - * Sets the nonamespace schema location - */ - SDO_API virtual void setNoNamespaceSchemaLocation(const char* noNamespaceSchemaLocation) = 0; - - SDO_API friend std::istream& operator>>(std::istream& input, XMLDocument& doc); - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_XMLDOCUMENT_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocumentImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocumentImpl.cpp deleted file mode 100644 index 88e93ad480..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocumentImpl.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/XMLDocumentImpl.h" - -namespace commonj -{ - namespace sdo - { - XMLDocumentImpl::XMLDocumentImpl( - DataObjectPtr dob, - const char* rootURI, - const char* rootName) - : dataObject(dob), - rootElementURI(rootURI), - rootElementName(rootName), - xmlDeclaration(true), - encoding("UTF-8"), - xmlVersion("1.0") - { - } - - XMLDocumentImpl::~XMLDocumentImpl() - { - } - - void XMLDocumentImpl::setEncoding(const char* enc) - { - encoding = enc; - } - - void XMLDocumentImpl::setXMLDeclaration(bool xmlDecl) - { - xmlDeclaration = xmlDecl; - } - - void XMLDocumentImpl::setXMLVersion(const char* xmlVer) - { - xmlVersion = xmlVer; - } - - void XMLDocumentImpl::setSchemaLocation(const char* schemaLoc) - { - schemaLocation = schemaLoc; - } - - void XMLDocumentImpl::setNoNamespaceSchemaLocation(const char* noNamespaceSchemaLoc) - { - noNamespaceSchemaLocation = noNamespaceSchemaLoc; - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocumentImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocumentImpl.h deleted file mode 100644 index a799ba90f2..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLDocumentImpl.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _XMLDocumentImpl_H_ -#define _XMLDocumentImpl_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/XMLDocument.h" -#include "commonj/sdo/DataObject.h" -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/SDOString.h" - - -namespace commonj -{ - namespace sdo - { - -/** XMLDocumentImpl place for holding a graph - * - * The XMLDocumentImpl class implements the abstract XMLDocument. - * Provides a place to hold a loaded - * graph of data. The root element name is maintained here so that - * the graph can be serialized to the same name later. - */ - - class XMLDocumentImpl : public XMLDocument - { - - public: - XMLDocumentImpl(); - - XMLDocumentImpl( - DataObjectPtr dataObject); - - XMLDocumentImpl( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName); - - virtual ~XMLDocumentImpl(); - - virtual DataObjectPtr getRootDataObject() const {return dataObject;} - virtual const char* getRootElementURI() const {return rootElementURI;} - virtual const char* getRootElementName() const {return rootElementName;} - virtual const char* getEncoding() const {return encoding;} - virtual void setEncoding(const char* enc); - - virtual bool getXMLDeclaration() const {return xmlDeclaration;} - virtual void setXMLDeclaration(bool xmlDecl); - - virtual const char* getXMLVersion() const {return xmlVersion;} - virtual void setXMLVersion(const char* xmlVer); - - virtual const char* getSchemaLocation() const {return schemaLocation;} - virtual void setSchemaLocation(const char* schemaLoc); - - virtual const char* getNoNamespaceSchemaLocation() const { return noNamespaceSchemaLocation;} - virtual void setNoNamespaceSchemaLocation(const char* noNamespaceSchemaLoc); - - - friend std::istream& operator>>(std::istream& input, XMLDocumentImpl& doc); - private: - DataObjectPtr dataObject; - SDOXMLString rootElementURI; - SDOXMLString rootElementName; - SDOXMLString encoding; - bool xmlDeclaration; - SDOXMLString xmlVersion; - SDOXMLString schemaLocation; - SDOXMLString noNamespaceSchemaLocation; - - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_XMLDocumentImpl_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelper.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelper.cpp deleted file mode 100644 index 3b0648ce10..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelper.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/01/16 15:41:28 $ */ - - -#include "commonj/sdo/XMLHelper.h" -namespace commonj -{ - namespace sdo - { - ////////////////////////////////////////////////////////////////////// - // Construction/Destruction - ////////////////////////////////////////////////////////////////////// - XMLHelper::~XMLHelper() - { - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelper.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelper.h deleted file mode 100644 index f9e280583e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelper.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#ifndef _XMLHELPER_H_ -#define _XMLHELPER_H_ - - -#include "commonj/sdo/export.h" -#include "commonj/sdo/XMLDocument.h" -#include "commonj/sdo/RefCountingObject.h" - -namespace commonj -{ - namespace sdo - { - /** - * - * XMLHelper provides the ability to load XML data into - * a data object graph, according to a schema - */ - - class XMLHelper : public RefCountingObject - { - public: - - /** load/loadFile - loads xml data - * - * De-serializes the specified XML file building a graph of DataObjects. - * Returns a pointer to the root data object - */ - - SDO_API virtual XMLDocumentPtr createDocument( - const char* elementname = 0, - const char* rootElementURI=0) = 0; - - SDO_API virtual XMLDocumentPtr loadFile( - const char* xmlFile, - const char* targetNamespaceURI=0) = 0; - SDO_API virtual XMLDocumentPtr load( - std::istream& inXml, - const char* targetNamespaceURI=0) = 0; - SDO_API virtual XMLDocumentPtr load( - const char* inXml, - const char* targetNamespaceURI=0) = 0; - - /** save saves the graph to XML - * - * save - Serializes the datagraph to the XML file - */ - - SDO_API virtual void save(XMLDocumentPtr doc, const char* xmlFile, - int indent = -1) = 0; - SDO_API virtual void save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - const char* xmlFile, - int indent = -1) = 0; - - - /** save saves the graph to XML - * - * save - Serializes the datagraph to the XML stream - */ - - SDO_API virtual void save(XMLDocumentPtr doc, std::ostream& outXml, - int indent = -1) = 0; - SDO_API virtual void save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - std::ostream& outXml, - int indent = -1) = 0; - - /** save saves the graph to XML - * - * save - Serializes the datagraph to a string - */ - - SDO_API virtual char* save(XMLDocumentPtr doc, int indent = -1) = 0; - SDO_API virtual char* save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - int indent = -1) = 0; - - /** createDocument creates an XMLDocument - * - * An XMLDocument holds a root data object and all its - * tree of children. This provides the means of storing the - * name to be applied to the root element when serializing - */ - - SDO_API virtual XMLDocumentPtr createDocument( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName) = 0; - - /***********************************/ - /* Destructor */ - /***********************************/ - SDO_API virtual ~XMLHelper(); - - /** getErrorCount gets number of parse errors - * - * Parser error count - the parse may have - * succeeded or partially succeeded or failed. There - * may be errors to report or handle. - */ - - virtual int getErrorCount() const = 0; - - /** getErrorMessage gets the nth error message - * - * Each error has a message, usually giving the line and file - * in which the parser error occurred. - */ - - virtual const char* getErrorMessage(int errnum) const = 0; - - - }; - } // End - namespace sdo -} // End - namespace commonj - -#endif //_XMLHELPER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelperImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelperImpl.cpp deleted file mode 100644 index b2889ac195..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelperImpl.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#include "commonj/sdo/SDOXMLFileWriter.h" // Include first to avoid libxml compile problems! -#include "commonj/sdo/SDOXMLStreamWriter.h" // Include first to avoid libxml compile problems! -#include "commonj/sdo/SDOXMLBufferWriter.h" // Include first to avoid libxml compile problems! -#include "commonj/sdo/XMLHelperImpl.h" -#include "commonj/sdo/XMLDocumentImpl.h" -#include <iostream> -#include <fstream> -#include <sstream> -#include "commonj/sdo/SDOSAX2Parser.h" -#include "commonj/sdo/XSDPropertyInfo.h" -#include "commonj/sdo/XSDTypeInfo.h" -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/DataFactoryImpl.h" - - -namespace commonj -{ - namespace sdo - { - - - ////////////////////////////////////////////////////////////////////// - // Construction/Destruction - ////////////////////////////////////////////////////////////////////// - - XMLHelperImpl::XMLHelperImpl(DataFactoryPtr df) - { - dataFactory = (DataFactory*)df; - if (!dataFactory) - { - dataFactory = DataFactory::getDataFactory(); - } - } - - XMLHelperImpl::~XMLHelperImpl() - { - clearErrors(); - } - - DataFactoryPtr XMLHelperImpl::getDataFactory() - { - if (!dataFactory) - { - dataFactory = DataFactory::getDataFactory(); - } - return dataFactory; - } - - XMLDocumentPtr XMLHelperImpl::createDocument(DataObjectPtr dataObject) - { - - SDOXMLString rootElementName = ""; - SDOXMLString rootElementURI = ""; - if (dataObject) - { - // Set the root element name to the name of the containment property - // or null if there is no container - try - { - DataObjectPtr cont = dataObject->getContainer(); - if (cont != 0) - { - const Property& containmentProp = dataObject->getContainmentProperty(); - rootElementName = containmentProp.getName(); - rootElementURI = cont->getType().getURI(); - } - else - { - DataFactory* df = dataFactory; - rootElementURI = dataObject->getType().getURI(); - rootElementName = ((DataFactoryImpl*)df)->getRootElementName().c_str(); - } - } - catch (SDOPropertyNotFoundException&) - {} - } - - return new XMLDocumentImpl(dataObject, rootElementURI, rootElementName); - } - - - const TypeImpl* XMLHelperImpl::findRoot(DataFactory* df, - const char* rootElementURI) - { - if (rootElementURI != 0) - { - return ((DataFactoryImpl*)df)->findTypeImpl - (rootElementURI, "RootType"); - } - - const TypeList& tl = df->getTypes(); - for (int i=0;i<tl.size();i++) - { - if (!strcmp("RootType",tl[i].getName())) - { - return ((DataFactoryImpl*)df)->findTypeImpl - (tl[i].getURI(), "RootType"); - } - } - return 0; - } - - XMLDocumentPtr XMLHelperImpl::createDocument(const char* elementname, - const char* rootElementURI) - { - DataFactory* dp = (DataFactory*)getDataFactory(); - if (dp == 0) return 0; - - const TypeImpl* rType = findRoot(dp,rootElementURI); - if (rType == 0) - { - std::string msg("createDocument - cannot find element "); - if (elementname != 0) msg += elementname; - SDO_THROW_EXCEPTION("createDocument", SDOUnsupportedOperationException, - msg.c_str()); - } - - if ((elementname != 0) && (strlen(elementname) != 0)) - { - PropertyImpl* pl = rType->getPropertyImpl(elementname); - if (pl == 0) - { - std::string msg("createDocument - cannot find element "); - msg += elementname; - SDO_THROW_EXCEPTION("createDocument", SDOUnsupportedOperationException, - msg.c_str()); - } - - const Type& tp = pl->getType(); - DataObjectPtr dob = dp->create(tp); - return new XMLDocumentImpl(dob, - tp.getURI(), /*tp.getName()*/ elementname); - } - else - { - const Property& pl = rType->getProperty((unsigned int)0); - const Type& tp = pl.getType(); - DataObjectPtr dob = dp->create(tp); - return new XMLDocumentImpl(dob, - tp.getURI(), /*tp.getName()*/ pl.getName()); - } - - std::string msg("createDocument - unable to find root type in namespace "); - if (rootElementURI != 0) - msg += rootElementURI; - else - msg += " NULL"; - SDO_THROW_EXCEPTION("createDocument", SDOUnsupportedOperationException, - msg.c_str()); - } - - XMLDocumentPtr XMLHelperImpl::createDocument( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName) - { - return new XMLDocumentImpl(dataObject, rootElementURI, rootElementName); - } - - XMLDocumentPtr XMLHelperImpl::loadFile( - const char* xmlFile, - const char* targetNamespaceURI) - { - DataObjectPtr rootDataObject; - clearErrors(); - SDOSAX2Parser sdoParser(getDataFactory(), targetNamespaceURI, rootDataObject, - this); - if (sdoParser.parse(xmlFile) == 0) - { - return createDocument(rootDataObject); - } - return 0; - } - - - XMLDocumentPtr XMLHelperImpl::load( - std::istream& inXml, - const char* targetNamespaceURI) - { - DataObjectPtr rootDataObject; - SDOSAX2Parser sdoParser(getDataFactory(), targetNamespaceURI, rootDataObject, - this); - clearErrors(); - inXml>>sdoParser; - return createDocument(rootDataObject); - } - - XMLDocumentPtr XMLHelperImpl::load( - const char* inXml, - const char* targetNamespaceURI) - { - std::istringstream str(inXml); - return load(str, targetNamespaceURI); - } - - void XMLHelperImpl::save(XMLDocumentPtr doc, const char* xmlFile, int indent) - { - SDOXMLFileWriter writer(xmlFile, dataFactory); - writer.write(doc, indent); - } - - void XMLHelperImpl::save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - const char* xmlFile, - int indent) - { - save(createDocument(dataObject,rootElementURI, rootElementName), xmlFile, - indent); - } - - - // Serializes the datagraph to a stream - void XMLHelperImpl::save(XMLDocumentPtr doc, std::ostream& outXml, - int indent) - { - SDOXMLStreamWriter writer(outXml, dataFactory); - writer.write(doc, indent); - } - void XMLHelperImpl::save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - std::ostream& outXml, - int indent ) - { - save(createDocument(dataObject,rootElementURI, rootElementName), outXml, indent); - } - - // Serializes the datagraph to a std::string - char* XMLHelperImpl::save(XMLDocumentPtr doc, - int indent) - { - SDOXMLBufferWriter writer(dataFactory); - writer.write(doc, indent); - SDOXMLString ret = writer.getBuffer(); - char* retString = new char[strlen(ret) +1]; - strcpy(retString, ret); - return retString; - } - char* XMLHelperImpl::save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - int indent) - { - return save(createDocument(dataObject,rootElementURI, rootElementName), - indent); - } - - int XMLHelperImpl::getErrorCount() const - { - return parseErrors.size(); - } - - - const char* XMLHelperImpl::getErrorMessage(int errnum) const - { - if (errnum >= 0 && errnum < parseErrors.size()) - { - return parseErrors[errnum]; - } - return 0; - } - - void XMLHelperImpl::setError(const char* message) - { - if (message == 0) return; - char * m = new char[strlen(message) + 1]; - strcpy(m,message); - m[strlen(message)] = 0; - parseErrors.push_back(m); - } - - void XMLHelperImpl::clearErrors() - { - while (!parseErrors.empty()) - { - if (*parseErrors.begin() != 0) - { - delete (char*)(*parseErrors.begin()); - } - parseErrors.erase(parseErrors.begin()); - } - } - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelperImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelperImpl.h deleted file mode 100644 index 302a9e5072..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLHelperImpl.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#ifndef _XMLHELPERIMPL_H_ -#define _XMLHELPERIMPL_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/XMLHelper.h" -#include "commonj/sdo/export.h" -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/SAX2Namespaces.h" -#include "commonj/sdo/SchemaInfo.h" -#include "commonj/sdo/TypeDefinitionsImpl.h" -#include "commonj/sdo/ParserErrorSetter.h" - -namespace commonj -{ - namespace sdo - { - - /** - * - * XMLHelperImpl is the implementation of the abstract class - * XMLHelper. - * Provides the ability to load XML data into - * a data object graph, according to a schema - */ - - class XMLHelperImpl : public XMLHelper, ParserErrorSetter - { - public: - // Constructor - XMLHelperImpl(DataFactoryPtr dataFactory); - - // Destructor - virtual ~XMLHelperImpl(); - - virtual int getErrorCount() const; - virtual const char* getErrorMessage(int errnum) const; - virtual void setError(const char* error); - - - /** load/loadFile - loads xml data - * - * De-serializes the specified XML file building a graph of DataObjects. - * Returns a pointer to the root data object - */ - - virtual XMLDocumentPtr createDocument( - const char* elementname= 0, - const char* rootElementURI=0); - - virtual XMLDocumentPtr loadFile( - const char* xmlFile, - const char* targetNamespaceURI = 0); - virtual XMLDocumentPtr load( - std::istream& inXml, - const char* targetNamespaceURI = 0); - virtual XMLDocumentPtr load( - const char* inXml, - const char* targetNamespaceURI = 0); - - virtual XMLDocumentPtr createDocument( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName); - - /** save saves the graph to XML - * - * save - Serializes the datagraph to the XML file - */ - - void save(XMLDocumentPtr doc, const char* xmlFile, int indent = -1); - void save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - const char* xmlFile, int indent = -1); - - /** save saves the graph to XML - * - * save - Serializes the datagraph to a stream - */ - - void save(XMLDocumentPtr doc, std::ostream& outXml, - int indent = -1); - void save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - std::ostream& outXml, - int indent = -1); - - /** save saves the graph to XML - * - * save - Serializes the datagraph to a string - */ - char* save(XMLDocumentPtr doc,int indent = -1); - char* save( - DataObjectPtr dataObject, - const char* rootElementURI, - const char* rootElementName, - int indent = -1); - - private: - int parse(const char* source); - void clearErrors(); - - std::vector<char*> parseErrors; - - // Instance variables - DataFactoryPtr dataFactory; - SDOXMLString targetNamespaceURI; - - XMLDocumentPtr createDocument(DataObjectPtr dataObject); - - const TypeImpl* findRoot(DataFactory* df, - const char* rootElementURI); - - DataFactoryPtr getDataFactory(); - }; - - } // End - namespace sdo -} // End - namespace commonj - -#endif // _XMLHELPERIMPL_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLQName.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLQName.cpp deleted file mode 100644 index de03d3affb..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLQName.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/XMLQName.h" -namespace commonj -{ - namespace sdo - { - - - XMLQName::XMLQName() - { - } - - XMLQName::XMLQName(const SDOXMLString& sdouri) - { - int index = sdouri.lastIndexOf('#'); - if (index < 0) - { - localName = sdouri; - } - else - { - uri = sdouri.substring(0, index); - localName = sdouri.substring(index+1); - } - } - - XMLQName::XMLQName( - const SDOXMLString& qname, - const SAX2Namespaces& globalNamespaces, - const SAX2Namespaces& localNamespaces) - { - SDOXMLString prefix; - - int index = qname.firstIndexOf(':'); - if (index < 0) - { - localName = qname; - } - else - { - prefix = qname.substring(0, index); - localName = qname.substring(index+1); - } - - const SDOXMLString* namespaceURI = localNamespaces.find(prefix); - if (namespaceURI == 0) - { - namespaceURI = globalNamespaces.find(prefix); - } - if (namespaceURI != 0) - { - uri = *namespaceURI; - } - - } - - XMLQName::~XMLQName() - { - } - - SDOXMLString XMLQName::getSDOName() const - { - return uri + "#" + localName; - } - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLQName.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLQName.h deleted file mode 100644 index 9548a737d0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XMLQName.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _XMLQName_H_ -#define _XMLQName_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/SAX2Namespaces.h" -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/DataObject.h" - -namespace commonj -{ - namespace sdo - { - -/** XMLQname wraps a qualified name - * - * This class holds a QName and provides access to its - * members - */ - - class XMLQName - { - - public: - XMLQName(); - XMLQName(const SDOXMLString& sdoUri); - XMLQName( - const SDOXMLString& qname, - const SAX2Namespaces& globalNamespaces, - const SAX2Namespaces& localNamespaces = SAX2Namespaces()); - - SDOXMLString getSDOName() const ; - const SDOXMLString& getURI() const {return uri;} - const SDOXMLString& getLocalName() const {return localName;} - virtual ~XMLQName(); - - private: - SDOXMLString uri; - SDOXMLString localName; - - - }; - } // End - namespace sdo -} // End - namespace commonj - - -#endif //_XMLQName_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelper.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelper.cpp deleted file mode 100644 index 6c9ce98127..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelper.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/XSDHelper.h" - -namespace commonj -{ - namespace sdo - { - - - XSDHelper::~XSDHelper() - { - } - - - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelper.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelper.h deleted file mode 100644 index 9457176e89..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelper.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#ifndef _XSDHELPER_H_ -#define _XSDHELPER_H_ - - -#include "commonj/sdo/export.h" -#include "commonj/sdo/RefCountingObject.h" -#include "commonj/sdo/DataFactory.h" -#include "commonj/sdo/TypeDefinitions.h" - -namespace commonj -{ - namespace sdo - { - - /** - * - * XSDHelper provides the means of loading and saving XSD information - * from/to the metadata (Types and properties) - */ - - class XSDHelper : public RefCountingObject - { - public: - - /** define builds types/properties from file or stream - * - * define/defineFile - * - * Populates the data factory with Types and Properties from the schema - * Loads from file, stream or char* buffer. - * The return value is the URI of the root Type - * - */ - - SDO_API virtual const char* defineFile(const char* schemaFile) = 0; - SDO_API virtual const char* define(std::istream& schema) = 0; - SDO_API virtual const char* define(const char* schema) = 0; - - - /** generate buildsXSD from types/properties - * - * generate/generateFile - * - * Saves the types/properties to an XSD stream or file - * - */ - - SDO_API virtual char* generate( - const TypeList& types, - const char* targetNamespaceURI = "", - int indent = -1) = 0; - SDO_API virtual void generate( - const TypeList& types, - std::ostream& outXsd, - const char* targetNamespaceURI = "", - int indent = -1) = 0; - SDO_API virtual void generateFile( - const TypeList& types, - const char* fileName, - const char* targetNamespaceURI = "", - int indent = -1) = 0; - - /***********************************/ - /* Destructor */ - /***********************************/ - SDO_API virtual ~XSDHelper(); - - /** getDataFactory() - * - * Return the DataFactory - */ - - SDO_API virtual DataFactoryPtr getDataFactory() = 0; - - /** getRootTypeURI - * - * Return the URI for the root Type - */ - - SDO_API virtual const char* getRootTypeURI() = 0; - - /** getErrorCount gets number of parse errors - * - * Parser error count - the parse may have - * succeeded or partially succeeded or failed. There - * may be errors to report or handle. - */ - - virtual int getErrorCount() const = 0; - - /** getErrorMessage gets the nth error message - * - * Each error has a message, usually giving the line and file - * in which the parser error occurred. - */ - - virtual const char* getErrorMessage(int errnum) const = 0; - - /** - * - * used for defining types from type definitions - */ - - SDO_API virtual void defineTypes(TypeDefinitions& types) = 0; - - - }; - }//End - namespace sdo -} // End - namespace commonj - -#endif //_XSDHELPER_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelperImpl.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelperImpl.cpp deleted file mode 100644 index 7b918c576e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelperImpl.cpp +++ /dev/null @@ -1,589 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/04/18 12:33:33 $ */ - -#include "commonj/sdo/SDOXMLFileWriter.h" // Include first to avoid libxml compile problems! -#include "commonj/sdo/SDOXMLStreamWriter.h" // Include first to avoid libxml compile problems! -#include "commonj/sdo/SDOXMLBufferWriter.h" // Include first to avoid libxml compile problems! -#include "commonj/sdo/SDOXSDFileWriter.h" -#include "commonj/sdo/SDOXSDStreamWriter.h" -#include "commonj/sdo/SDOXSDBufferWriter.h" -#include "commonj/sdo/XSDHelperImpl.h" -#include "commonj/sdo/XMLDocumentImpl.h" -#include <iostream> -#include <fstream> -#include <sstream> -#include "commonj/sdo/SDOSchemaSAX2Parser.h" -#include "commonj/sdo/SDOSAX2Parser.h" -#include "commonj/sdo/XSDPropertyInfo.h" -#include "commonj/sdo/XSDTypeInfo.h" - -#include "commonj/sdo/SDORuntimeException.h" -#include "commonj/sdo/DASProperty.h" -#include "commonj/sdo/Logging.h" -#include "commonj/sdo/Type.h" - -namespace commonj -{ - namespace sdo - { - - /** XSDHelperImpl - * - * XSDHelperImpl is the implementation of the abstract class - * XSDHelper. - * Provides the means of loading and saving XSD information - * from/to the metadata (Types and properties) - */ - - XSDHelperImpl::XSDHelperImpl(DataFactoryPtr df) - { - dataFactory = (DataFactory*)df; - if (!dataFactory) - { - dataFactory = DataFactory::getDataFactory(); - } - } - - XSDHelperImpl::~XSDHelperImpl() - { - clearErrors(); - } - - /** define builds types/properties from file or stream - * - * define/defineFile - * - * Populates the data factory with Types and Properties from the schema - * Loads from file, stream or char* buffer. - * The return value is the URI of the root Type - * - */ - - const char* XSDHelperImpl::defineFile(const char* schema) - { - - SDOSchemaSAX2Parser schemaParser(schemaInfo, this); - clearErrors(); - if (schemaParser.parse(schema) == 0) - { - defineTypes(schemaParser.getTypeDefinitions()); - return schemaInfo.getTargetNamespaceURI(); - } - return 0; - } - - const char* XSDHelperImpl::define(std::istream& schema) - { - SDOSchemaSAX2Parser schemaParser(schemaInfo, this); - clearErrors(); - schema >> schemaParser; - defineTypes(schemaParser.getTypeDefinitions()); - return schemaInfo.getTargetNamespaceURI(); - } - - const char* XSDHelperImpl::define(const char* schema) - { - std::istringstream str(schema); - SDOSchemaSAX2Parser schemaParser(schemaInfo, this); - clearErrors(); - str >> schemaParser; - defineTypes(schemaParser.getTypeDefinitions()); - return schemaInfo.getTargetNamespaceURI(); - return define(str); - } - - void XSDHelperImpl::newSubstitute(const char* entryName, - PropertyDefinitionImpl& prop) - { - try - { - const char* typeUri = prop.substituteUri.isNull() ? - prop.typeUri : prop.substituteUri; - const Type& rootType = dataFactory->getType(typeUri, entryName); - PropertyList pl = rootType.getProperties(); - for (int j = 0; j < pl.size(); j++) - { - if (!pl[j].getType().isDataType() - && strcmp(pl[j].getType().getURI(),Type::SDOTypeNamespaceURI.c_str())) - { - // recurse the tree.. - newSubstitute(pl[j].getType().getName(), - prop); - - if (!strcmp(pl[j].getName(),prop.substituteName)) - { - dataFactory->setPropertySubstitute(rootType.getURI(), - rootType.getName(), - pl[j].getName(), - prop.name, - typeUri, - prop.typeName); - XSDPropertyInfo* pi = (XSDPropertyInfo*) - ((DASProperty*)&pl[j])->getDASValue("XMLDAS::PropertyInfo"); - if (pi) - { - PropertyDefinitionImpl& propdef = (PropertyDefinitionImpl&)pi->getPropertyDefinition(); - propdef.substituteNames.push_back(prop.name); - propdef.substituteLocalNames.push_back(prop.localname); - } - - } - - } - } - } - catch (const SDORuntimeException&) - { - } - } - - void XSDHelperImpl::addSubstitutes(PropertyDefinitionImpl& prop, - TypeDefinitionImpl& ty) - { - try - { - const char* typeUri = prop.substituteUri.isNull() ? - ty.uri : prop.substituteUri; - DataFactoryImpl* df = (DataFactoryImpl*)(DataFactory*)dataFactory; - const Type* rootType = df->findType(typeUri,"RootType"); - if (rootType == 0) return; - PropertyList pl = rootType->getProperties(); - for (int j = 0; j < pl.size(); j++) - { - XSDPropertyInfo* pi = (XSDPropertyInfo*) - ((DASProperty*)&pl[j])->getDASValue("XMLDAS::PropertyInfo"); - if (pi) - { - PropertyDefinitionImpl& propdef = (PropertyDefinitionImpl&)pi->getPropertyDefinition(); - if (propdef.isSubstitute && propdef.substituteName.equals(prop.name)) - { - - LOGINFO_1(INFO,"XSDHelper adding substitute for property %s", (const char*)prop.name); - - dataFactory->setPropertySubstitute(typeUri,ty.name, - prop.name, propdef.name, - pl[j].getType().getURI(), - pl[j].getType().getName()); - prop.substituteNames.push_back(propdef.name); - prop.substituteLocalNames.push_back(propdef.localname); - } - } - } - } - catch (const SDORuntimeException&) - { - } - } - - - /** defineTypes - * - * This method works through all the data gathered during parsing - * and defines all the types using the data factory. - */ - - void XSDHelperImpl::defineTypes(TypeDefinitions& types) - { - defineTypes(types.getTypeDefinitions()); - } - - - /** defineTypes - * - * This method works through all the data gathered during parsing - * and defines all the types using the data factory. - */ - - void XSDHelperImpl::defineTypes(TypeDefinitionsImpl& typedefs) - { - DataFactoryImpl* df = (DataFactoryImpl*)(DataFactory*)dataFactory; - - XMLDAS_TypeDefs types = typedefs.types; - XMLDAS_TypeDefs::iterator iter; - - - for (iter=types.begin(); iter != types.end(); iter++) - { - TypeDefinitionImpl& ty = iter->second; - try - { - /* - string isSeqCode = "false"; - if (ty.isSequenced) - isSeqCode = "true"; - string isOpenCode = "false"; - if (ty.isOpen) - isOpenCode = "true"; - string isAbstractCode = "false"; - if (ty.isAbstract) - isAbstractCode = "true"; - string uriCode = "0"; - if (!ty.uri.isNull()) - { - uriCode = "\"" + string(ty.uri) + "\""; - } - - string addTypeCode = "dataFactory->addType(\n" - + uriCode + ", \"" + string(ty.name) + "\", \n" - + isSeqCode + ", " + isOpenCode + ", " + isAbstractCode +");"; - cout << addTypeCode.c_str() <<endl; - */ - - df->addType(ty.uri, ty.name, ty.isSequenced, - ty.isOpen, ty.isAbstract, ty.dataType, ty.isFromList); - df->setDASValue( - ty.uri, ty.name, - "XMLDAS::TypeInfo", - new XSDTypeInfo(ty)); - - // add aliases - if (!ty.aliases.isNull()) - { - SDOXMLString al = ty.aliases; - SDOXMLString al1 = ""; - int index; - while (!al.isNull() && !al.equals("")) - { - index = al.lastIndexOf(' '); - if (index < 0) - { - al1 = al; - al = ""; - } - else - { - al1 = al.substring(index + 1); - al = al.substring(0,index); - } - if (!al1.isNull() && !al1.equals("")) - { - df->setAlias( - ty.uri, - ty.name, - (const char*)al1); - } - } - } - - } - catch (SDORuntimeException& e) - { - SDO_RETHROW_EXCEPTION("defineTypes", e); - } - } - for (iter=types.begin(); iter != types.end(); iter++) - { - TypeDefinitionImpl& ty = iter->second; - if (!ty.parentTypeName.isNull()) - { - try - { - /* - string uriCode = "0"; - if (!ty.uri.isNull()) - { - uriCode = "\"" + string(ty.uri) + "\""; - } - string parentUriCode = "0"; - if (!ty.uri.isNull()) - { - parentUriCode = "\"" + string(ty.parentTypeUri) + "\""; - } - - string addTypeCode = "dataFactory->setBaseType(\n" - + uriCode + ", \"" + string(ty.name) + "\", \n" - + parentUriCode + ", \"" + string(ty.parentTypeName) + "\");"; - - cout << addTypeCode.c_str() <<endl; - */ - - df->setBaseType( - ty.uri, - ty.name, - ty.parentTypeUri, - ty.parentTypeName, - ty.isRestriction); - } - catch (SDORuntimeException& e) - { - SDO_RETHROW_EXCEPTION("defineTypes", e); - } - } - - XmlDasPropertyDefs::iterator propsIter; - for (propsIter = ty.properties.begin(); propsIter != ty.properties.end(); propsIter++) - { - PropertyDefinitionImpl& prop = *propsIter; - - // For a refence we need to determine the type from the - // global element declaration - if(prop.isReference) - { - - bool refFound = false; - - if (prop.name.isNull()) - prop.name = prop.typeName; - - - XMLDAS_TypeDefs::iterator refTypeIter = - types.find(TypeDefinitionsImpl::getTypeQName(prop.typeUri, "RootType")); - if(refTypeIter != types.end()) - { - - TypeDefinitionImpl rootTy = refTypeIter->second; - - // find the property on the root type - XmlDasPropertyDefs::iterator refPropsIter; - for (refPropsIter = rootTy.properties.begin(); refPropsIter != rootTy.properties.end(); refPropsIter++) - { - - if (refPropsIter->localname.equals(prop.typeName)) - { - prop.typeUri = refPropsIter->typeUri; - prop.typeName = refPropsIter->typeName; - refFound = true; - } - } - } - if (!refFound) - { - - // Check if this type is already defined to the data factory - try - { - const Type& rootType = dataFactory->getType(prop.typeUri, "RootType"); - PropertyList pl = rootType.getProperties(); - - for (int j = 0; j < pl.size(); j++) - { - - XSDPropertyInfo* pi = (XSDPropertyInfo*) - ((DASProperty*)&pl[j])->getDASValue("XMLDAS::PropertyInfo"); - - - - if (prop.typeName.equals(pl[j].getName()) - || (pi && prop.typeName.equals(pi->getPropertyDefinition().localname))) - { - prop.typeUri = pl[j].getType().getURI(); - prop.typeName = pl[j].getType().getName(); - refFound = true; - break; - } - } - } - catch (const SDORuntimeException&) - { - } - } - // If we haven't been able to resolve this reference we should ignore it - if (!refFound) - { - LOGINFO_1(INFO,"XsdHelper:no matching reference for %s", - (const char *)prop.name); - continue; - } - } - - if (prop.name.isNull()) - { - continue; - } - XMLDAS_TypeDefs::iterator propTypeIter = - types.find(TypeDefinitionsImpl::getTypeQName(prop.typeUri, prop.typeName)); - if(propTypeIter != types.end()) - { - prop.typeName = propTypeIter->second.name; - } - - try - { - - df->addPropertyToType(ty.uri, ty.name, - prop.name, - prop.typeUri, - prop.typeName, - prop.isMany, - prop.isReadOnly, - prop.isContainment); - - LOGINFO_1(INFO,"XSDHelper adds property %s",(const char*)(prop.name)); - - if (!prop.aliases.isNull()) - { - SDOXMLString al = prop.aliases; - SDOXMLString al1 = ""; - int index; - while (!al.isNull() && !al.equals("")) - { - index = al.lastIndexOf(' '); - if (index < 0) - { - al1 = al; - al = ""; - } - else - { - al1 = al.substring(index + 1); - al = al.substring(0,index); - } - if (!al1.isNull() && !al1.equals("")) - { - df->setAlias( - (const char*)ty.uri, - (const char*)ty.name, - (const char*)prop.name, - (const char*)al1); - } - } - } - if (prop.isSubstitute) - { - // we have a new substitute - so will check the existing graph for - // substitutions to insert - - LOGINFO_1(INFO,"XSDHelper: Found new substitute %s",(const char*)(prop.name)); - - newSubstitute( "RootType",prop); - } - else - { - addSubstitutes(prop,ty); - } - - // Do not add DASValue to ChangeSummary - if (!(prop.typeUri.equals(Type::SDOTypeNamespaceURI.c_str()) - && prop.typeName.equals("ChangeSummary"))) - { - df->setDASValue( - ty.uri, ty.name, - prop.name, - "XMLDAS::PropertyInfo", - new XSDPropertyInfo(prop)); - } - } - catch (SDORuntimeException& e) - { - SDO_RETHROW_EXCEPTION("defineTypes", e); - } - } - - } - } // End - defineTypes - - /** getDataFactory returns the factory - * - */ - - DataFactoryPtr XSDHelperImpl::getDataFactory() - { - return dataFactory; - } - - - /** generate buildsXSD from types/properties - * - * generate/generateFile - * - * Saves the types/properties to an XSD stream or file - * - */ - - void XSDHelperImpl::generateFile( - const TypeList& types, - const char* fileName, - const char* targetNamespaceURI, - int indent - ) - { - SDOXSDFileWriter writer(fileName); - DataFactory* fac = dataFactory; - writer.write(types, targetNamespaceURI, - ((DataFactoryImpl*)fac)->getOpenProperties(), indent); - } - - void XSDHelperImpl::generate( - const TypeList& types, - std::ostream& outXml, - const char* targetNamespaceURI, - int indent - ) - { - SDOXSDStreamWriter writer(outXml); - DataFactory* fac = dataFactory; - writer.write(types, targetNamespaceURI, - ((DataFactoryImpl*)fac)->getOpenProperties(), indent); - } - - char* XSDHelperImpl::generate( - const TypeList& types, - const char* targetNamespaceURI, - int indent - ) - { - SDOXSDBufferWriter writer; - DataFactory* fac = dataFactory; - writer.write(types, targetNamespaceURI, - ((DataFactoryImpl*)fac)->getOpenProperties(), indent); - SDOXMLString ret = writer.getBuffer(); - char* retString = new char[strlen(ret) +1]; - strcpy(retString, ret); - return retString; - } - - int XSDHelperImpl::getErrorCount() const - { - return parseErrors.size(); - } - - - const char* XSDHelperImpl::getErrorMessage(int errnum) const - { - if (errnum >= 0 && errnum < parseErrors.size()) - { - return parseErrors[errnum]; - } - return 0; - } - - void XSDHelperImpl::setError(const char* message) - { - if (message == 0) return; - char * m = new char[strlen(message) + 1]; - strcpy(m,message); - m[strlen(message)] = 0; - parseErrors.push_back(m); - } - - void XSDHelperImpl::clearErrors() - { - while (!parseErrors.empty()) - { - if (*parseErrors.begin() != 0) - { - delete (char*)(*parseErrors.begin()); - } - parseErrors.erase(parseErrors.begin()); - } - } - - - } // End - namespace sdo -} // End - namespace commonj diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelperImpl.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelperImpl.h deleted file mode 100644 index 791d1229ce..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDHelperImpl.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2006/02/01 16:24:13 $ */ - -#ifndef _XSDHELPERIMPL_H_ -#define _XSDHELPERIMPL_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/XSDHelper.h" -#include "commonj/sdo/export.h" -#include "commonj/sdo/SDOXMLString.h" -#include "commonj/sdo/SAX2Namespaces.h" -#include "commonj/sdo/SchemaInfo.h" -#include "commonj/sdo/TypeDefinitionsImpl.h" -#include "commonj/sdo/ParserErrorSetter.h" - -namespace commonj -{ - namespace sdo - { - - /** - * - * XSDHelperImpl is the implementation of the abstract class - * XSDHelper. - * Provides the means of loading and saving XSD information - * from/to the metadata (Types and properties) - */ - - class XSDHelperImpl : public XSDHelper, ParserErrorSetter - { - public: - - // Constructor - XSDHelperImpl(DataFactoryPtr dataFactory); - - // Destructor - virtual ~XSDHelperImpl(); - - /** define builds types/properties from file or stream - * - * define/defineFile - * - * Populates the data factory with Types and Properties from the schema - * Loads from file, stream or char* buffer. - * The return value is the URI of the root Type - * - */ - virtual const char* defineFile(const char* schemaFile); - virtual const char* define(std::istream& schema); - virtual const char* define(const char* schema); - - /** getErrorCount gets number of parse errors - * - * Parser error count - the parse may have - * succeeded or partially succeeded or failed. There - * may be errors to report or handle. - */ - - virtual int getErrorCount() const; - - /** getErrorMessage gets the nth error message - * - * Each error has a message, usually giving the line and file - * in which the parser error occurred. - */ - - virtual const char* getErrorMessage(int errnum) const; - virtual void setError(const char* error); - - /** generate buildsXSD from types/properties - * - * generate/generateFile - * - * Saves the types/properties to an XSD stream or file - * - */ - - virtual char* generate( - const TypeList& types, - const char* targetNamespaceURI = "", - int indent = -1 - ); - void generate( - const TypeList& types, - std::ostream& outXsd, - const char* targetNamespaceURI = "", - int indent = -1 - ); - virtual void generateFile( - const TypeList& types, - const char* fileName, - const char* targetNamespaceURI = "", - int indent = -1); - - virtual DataFactoryPtr getDataFactory(); - - // Return the URI for the root Type - virtual const char* getRootTypeURI() - { - return schemaInfo.getTargetNamespaceURI(); - } - - virtual void defineTypes(TypeDefinitions& types); - - private: - virtual void clearErrors(); - - void newSubstitute(const char* entryName, - PropertyDefinitionImpl& prop); - - void addSubstitutes(PropertyDefinitionImpl& prop, - TypeDefinitionImpl& ty); - - void defineTypes(TypeDefinitionsImpl& types); - int parse(const char* source); - - // Instance variables - DataFactoryPtr dataFactory; // metadata - SchemaInfo schemaInfo; - - std::vector<char*> parseErrors; - - }; - - } // End - namespace sdo -} // End - namespace commonj - -#endif // _XSDHELPERIMPL_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDPropertyInfo.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDPropertyInfo.cpp deleted file mode 100644 index 9d001232cb..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDPropertyInfo.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/XSDPropertyInfo.h" - -namespace commonj -{ - namespace sdo - { - - /** - * - * This holds a property definition during the parsing process - * when all properties need to be read and stored prior to creation - * within the data facttory. - */ - - XSDPropertyInfo::XSDPropertyInfo() - { - } - - XSDPropertyInfo::XSDPropertyInfo(const PropertyDefinitionImpl& prop) - : property(prop) - { - } - - - XSDPropertyInfo::~XSDPropertyInfo() - { - } - - - } -} -// end - namespace sdo - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDPropertyInfo.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDPropertyInfo.h deleted file mode 100644 index 26307411a0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDPropertyInfo.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _XSDPropertyInfo_H_ -#define _XSDPropertyInfo_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/DASValue.h" -#include "commonj/sdo/PropertyDefinitionImpl.h" -#include "commonj/sdo/SDOXMLString.h" - -namespace commonj -{ - namespace sdo - { - - /** - * - * This holds a property definition during the parsing process. - * This holds a property definition during the parsing process - * when all properties need to be read and stored prior to creation - * within the data facttory. - */ - - class XSDPropertyInfo : public DASValue - { - public: - - XSDPropertyInfo(); - XSDPropertyInfo(const PropertyDefinitionImpl& prop); - - virtual ~XSDPropertyInfo(); - - const PropertyDefinitionImpl& getPropertyDefinition() {return property;} - - - private: - PropertyDefinitionImpl property; - }; - } -} -#endif //_XSDPropertyInfo_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDTypeInfo.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDTypeInfo.cpp deleted file mode 100644 index f0ae973195..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDTypeInfo.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/XSDTypeInfo.h" - -namespace commonj -{ - namespace sdo - { - - /** XSDTypeInfo - * - * This holds a type definition during the parsing process - * when all types need to be read and stored prior to creation - * within the data facttory. - */ - - XSDTypeInfo::XSDTypeInfo() - { - } - - XSDTypeInfo::XSDTypeInfo(const TypeDefinitionImpl& typeDef) - : typeDefinition(typeDef) - { - } - - - XSDTypeInfo::~XSDTypeInfo() - { - - } - } -} -// end - namespace sdo - - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDTypeInfo.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDTypeInfo.h deleted file mode 100644 index 596766368c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XSDTypeInfo.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _XSDTypeInfo_H_ -#define _XSDTypeInfo_H_ - -#include "commonj/sdo/disable_warn.h" - -#include "commonj/sdo/DASValue.h" -#include "commonj/sdo/TypeDefinitionImpl.h" - -namespace commonj -{ - namespace sdo - { - /** - * - * This holds a type definition during the parsing process - * when all types need to be read and stored prior to creation - * within the data factory. - */ - - class XSDTypeInfo : public DASValue - { - public: - XSDTypeInfo(); - XSDTypeInfo(const TypeDefinitionImpl& typeDef); - virtual ~XSDTypeInfo(); - const TypeDefinitionImpl& getTypeDefinition() {return typeDefinition;} - - private: - TypeDefinitionImpl typeDefinition; - }; - } -} -#endif //_XSDTypeInfo_H_ diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XpathHelper.cpp b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XpathHelper.cpp deleted file mode 100644 index c53c577c2d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XpathHelper.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#include "commonj/sdo/XpathHelper.h" - -#include <string.h> - -namespace commonj{ -namespace sdo{ - -/** - * - * will provide utilities to help with xpath parsing - */ - -/** isIndexed - true if [] or . - * - * Returns true if the path has an index, indicating a many valued - * property at the end of the path. - */ - - -const bool XpathHelper::isIndexed(const char* path) -{ - const char * c = strrchr(path,'/'); - if (c == 0)c = path; - if (strchr(c,'[')) return true; - if (strchr(c,'.')) return true; - return false; -} - -}; -}; - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XpathHelper.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XpathHelper.h deleted file mode 100644 index 862c89d307..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/XpathHelper.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef XPATH_HELPER_H -#define XPATH_HELPER_H - -#include "commonj/sdo/export.h" - -namespace commonj{ -namespace sdo{ - -/** - * - * XpathHelper provides utilities to help with xpath parsing - */ - -class XpathHelper -{ - public: - - virtual ~XpathHelper(); - - /** isIndexed - true if [] or . - * - * Returns true if the path has an index, indicating a many valued - * property at the end of the path. - */ - - static SDO_API const bool isIndexed(const char * path); - -}; -}; -}; - - -#endif - diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/disable_warn.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/disable_warn.h deleted file mode 100644 index 7743ab55de..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/disable_warn.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#ifndef _DISABLE_WARN_H_ -#define _DISABLE_WARN_H_ - -#if defined(WIN32) || defined (_WINDOWS) -#pragma warning(disable: 4786) -#endif - -#endif diff --git a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/export.h b/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/export.h deleted file mode 100644 index 51470a585b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/export.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * - * Copyright 2005 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. - */ - -/* $Rev$ $Date: 2005/12/22 16:54:15 $ */ - -#define SDO4CPP_VERSION 20051202 - -#if defined(WIN32) || defined (_WINDOWS) - -#define int64_t __int64 - -#ifdef SDO_EXPORTS -#include "commonj/sdo/disable_warn.h" -# define SDO_API __declspec(dllexport) -# define SDO_SPI __declspec(dllexport) -# define EXPIMP -#else -# define SDO_API __declspec(dllimport) -# define SDO_SPI __declspec(dllimport) -# define EXPIMP extern -#endif - -#else -#include <sys/time.h> -#include <inttypes.h> -#include <stdlib.h> -#include <string.h> -#include <wchar.h> -# define SDO_API -# define SDO_SPI -# define EXPIMP -#endif - diff --git a/branches/cpp-M1/sdo/runtime/core/test/.cdtbuild b/branches/cpp-M1/sdo/runtime/core/test/.cdtbuild deleted file mode 100644 index 17ebd43324..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/.cdtbuild +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?fileVersion 3.0.0?> - -<ManagedProjectBuildInfo> -<project id="tuscany_sdo_test.cdt.managedbuild.target.gnu.exe.841259234" name="Executable (Gnu)" projectType="cdt.managedbuild.target.gnu.exe"> -<configuration artifactName="tuscany_sdo_test" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="cdt.managedbuild.config.gnu.exe.debug.1698024418" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug"> -<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.953243590" name="GCC Tool Chain" superClass="cdt.managedbuild.toolchain.gnu.exe.debug"> -<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.907958268" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug"/> -<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.829396762" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug"> -<option id="gnu.cpp.compiler.option.preprocessor.def.1484983546" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols"> -<listOptionValue builtIn="false" value="_DEBUG"/> -</option> -<option id="gnu.cpp.compiler.option.include.paths.1537573101" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> -<listOptionValue builtIn="false" value="${project_loc}"/> -<listOptionValue builtIn="false" value="${project_loc}/../src"/> -</option> -</tool> -<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1017750405" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/> -<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.655773583" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"> -<option id="gnu.cpp.link.option.libs.684950781" superClass="gnu.cpp.link.option.libs" valueType="libs"> -<listOptionValue builtIn="false" value="tuscany_sdo"/> -<listOptionValue builtIn="false" value="xml2"/> -</option> -<option id="gnu.cpp.link.option.paths.507838253" superClass="gnu.cpp.link.option.paths" valueType="stringList"> -<listOptionValue builtIn="false" value="${project_loc}/../src/Debug"/> -<listOptionValue builtIn="false" value="${LIBXML2_LIB}"/> -</option> -</tool> -<tool command="as" id="cdt.managedbuild.tool.gnu.assembler.exe.debug.680127870" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"/> -<macros/> -</toolChain> -</configuration> -<configuration artifactName="tuscany_sdo_test" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser" id="cdt.managedbuild.config.gnu.exe.release.1720042110" name="Release" parent="cdt.managedbuild.config.gnu.exe.release"> -<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.1008721532" name="GCC Tool Chain" superClass="cdt.managedbuild.toolchain.gnu.exe.release"> -<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.1386443308" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release"/> -<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.666703052" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release"> -<option id="gnu.cpp.compiler.option.include.paths.1488475926" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> -<listOptionValue builtIn="false" value="${project_loc}/../src"/> -<listOptionValue builtIn="false" value="${project_loc}"/> -</option> -</tool> -<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.linker.exe.release.87016949" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/> -<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.4247100" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release"> -<option id="gnu.cpp.link.option.libs.73989122" superClass="gnu.cpp.link.option.libs" valueType="libs"> -<listOptionValue builtIn="false" value="xml2"/> -<listOptionValue builtIn="false" value="tuscany_sdo"/> -</option> -<option id="gnu.cpp.link.option.paths.984022714" superClass="gnu.cpp.link.option.paths" valueType="stringList"> -<listOptionValue builtIn="false" value="${project_loc}/../src/Debug"/> -<listOptionValue builtIn="false" value="${LIBXML2_LIB}"/> -</option> -</tool> -<tool command="as" id="cdt.managedbuild.tool.gnu.assembler.exe.release.937369355" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release"/> -<macros/> -</toolChain> -</configuration> -<macros/> -</project> -</ManagedProjectBuildInfo> diff --git a/branches/cpp-M1/sdo/runtime/core/test/.cdtproject b/branches/cpp-M1/sdo/runtime/core/test/.cdtproject deleted file mode 100644 index 48a12e6664..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/.cdtproject +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse-cdt version="2.0"?>
-
-<cdtproject id="org.eclipse.cdt.managedbuilder.core.managedMake">
-<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
-<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-<extension id="org.eclipse.cdt.core.domsourceindexer" point="org.eclipse.cdt.core.CIndexer"/>
-<data>
-<item id="org.eclipse.cdt.core.pathentry">
-<pathentry kind="src" path=""/>
-<pathentry kind="out" path=""/>
-<pathentry kind="con" path="org.eclipse.cdt.managedbuilder.MANAGED_CONTAINER"/>
-</item>
-</data>
-</cdtproject>
diff --git a/branches/cpp-M1/sdo/runtime/core/test/.project b/branches/cpp-M1/sdo/runtime/core/test/.project deleted file mode 100644 index 32920ef4cf..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/.project +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>tuscany_sdo_test</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.cdt.core.cnature</nature> - <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> - <nature>org.eclipse.cdt.core.ccnature</nature> - </natures> -</projectDescription> diff --git a/branches/cpp-M1/sdo/runtime/core/test/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/branches/cpp-M1/sdo/runtime/core/test/.settings/org.eclipse.cdt.managedbuilder.core.prefs deleted file mode 100644 index 0c77f0af0f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ /dev/null @@ -1,9 +0,0 @@ -#Wed Feb 15 16:37:24 GMT 2006 -eclipse.preferences.version=1 -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1698024418=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="CPLUS_INCLUDE_PATH" operation\="remove"/>\n</environment>\n -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.release.1720042110=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="CPLUS_INCLUDE_PATH" operation\="remove"/>\n</environment>\n -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1698024418=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.release.1720042110=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n -environment/project=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment/>\n -environment/project/cdt.managedbuild.config.gnu.exe.debug.1698024418=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable delimiter\="" name\="LIBXML2_LIB" operation\="replace" value\="/usr/lib"/>\n</environment>\n -environment/project/cdt.managedbuild.config.gnu.exe.release.1720042110=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable delimiter\="" name\="LIBXML2_LIB" operation\="replace" value\="/usr/lib"/>\n</environment>\n diff --git a/branches/cpp-M1/sdo/runtime/core/test/47293Catalog-out.xsd b/branches/cpp-M1/sdo/runtime/core/test/47293Catalog-out.xsd deleted file mode 100644 index c56a4c341e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/47293Catalog-out.xsd +++ /dev/null @@ -1,70 +0,0 @@ -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns1="customerNS" xmlns:tns2="orderNS" xmlns:tns="catalogNS" targetNamespace="catalogNS"> -<xsd:element name="catalogType" type="CatalogType"/> -<xsd:complexType name="CatalogType"> -<xsd:sequence> -<xsd:element name="item" type="tns2:item" minOccurs="0" maxOccurs="unbounded"/> -</xsd:sequence> -</xsd:complexType> -<xsd:element name="addressType" type="tns1:AddressType"/> -<xsd:complexType name="tns1:AddressType"> -<xsd:sequence> -<xsd:element name="street" type="xsd:String" minOccurs="0"/> -<xsd:element name="city" type="xsd:String" minOccurs="0"/> -<xsd:element name="state" type="xsd:String" minOccurs="0"/> -<xsd:element name="zip" type="xsd:String" minOccurs="0"/> -</xsd:sequence> -</xsd:complexType> -<xsd:element name="customerType" type="tns1:CustomerType"/> -<xsd:complexType name="tns1:CustomerType"> -<xsd:sequence> -<xsd:element name="customerId" type="xsd:String" minOccurs="0"/> -<xsd:element name="name" type="xsd:String" minOccurs="0"/> -<xsd:element name="shipping" type="tns1:AddressType" minOccurs="0"/> -<xsd:element name="payment" type="tns1:PaymentType" minOccurs="0"/> -</xsd:sequence> -</xsd:complexType> -<xsd:element name="paymentType" type="tns1:PaymentType"/> -<xsd:complexType name="tns1:PaymentType"> -<xsd:sequence> -<xsd:element name="accountNo" type="xsd:String" minOccurs="0"/> -<xsd:element name="bank" type="xsd:String" minOccurs="0"/> -<xsd:element name="securityCode" type="xsd:String" minOccurs="0"/> -<xsd:element name="amount" type="xsd:float" minOccurs="0"/> -</xsd:sequence> -</xsd:complexType> -<xsd:element name="rootType" type="tns1:RootType"/> -<xsd:complexType name="tns1:RootType"> -<xsd:sequence> -<xsd:element name="customer" type="tns1:CustomerType" minOccurs="0"/> -</xsd:sequence> -</xsd:complexType> -<xsd:simpleType name="tns2:OrderStatus"> -<xsd:restriction base="xsd:String"/> -</xsd:simpleType> -<xsd:element name="orderType" type="tns2:OrderType"/> -<xsd:complexType name="tns2:OrderType"> -<xsd:sequence> -<xsd:element name="orderId" type="xsd:String" minOccurs="0"/> -<xsd:element name="status" type="tns2:OrderStatus" minOccurs="0"/> -<xsd:element name="item" type="tns2:item" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="customer" type="tns1:CustomerType" minOccurs="0"/> -</xsd:sequence> -</xsd:complexType> -<xsd:element name="rootType" type="tns2:RootType"/> -<xsd:complexType name="tns2:RootType"> -<xsd:sequence> -<xsd:element name="order" type="tns2:OrderType" minOccurs="0"/> -<xsd:element name="item" type="tns2:item" minOccurs="0"/> -</xsd:sequence> -</xsd:complexType> -<xsd:element name="item" type="tns2:item"/> -<xsd:complexType name="tns2:item"> -<xsd:sequence> -<xsd:element name="itemId" type="xsd:integer" minOccurs="0"/> -<xsd:element name="description" type="xsd:String" minOccurs="0"/> -<xsd:element name="price" type="xsd:String" minOccurs="0"/> -<xsd:element name="quantity" type="xsd:integer" minOccurs="0"/> -<xsd:element name="warehouseId" type="xsd:integer" minOccurs="0"/> -</xsd:sequence> -</xsd:complexType> -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/47293Catalog.xml b/branches/cpp-M1/sdo/runtime/core/test/47293Catalog.xml deleted file mode 100644 index 809aced5a0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/47293Catalog.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<catalog xmlns="catalogNS" xsi:type="CatalogType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><item xmlns="orderNS"><itemId>1</itemId><description>A Partridge in a Pear Tree</description><price>1.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>2</itemId><description>Turtle Doves</description><price>2.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>3</itemId><description>French Hens</description><price>3.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>4</itemId><description>Calling Birds</description><price>4.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>5</itemId><description>Golden Rings</description><price>5.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>6</itemId><description>Geese a-laying</description><price>6.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>7</itemId><description>Swans a-swimming</description><price>7.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>8</itemId><description>Maids a-milking</description><price>8.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>9</itemId><description>Ladies dancing</description><price>9.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>10</itemId><description>Lords a-leaping</description><price>10.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>11</itemId><description>Pipers piping</description><price>11.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item><item><itemId>12</itemId><description>Drummers drumming</description><price>12.99</price><quantity>0</quantity><warehouseId>1</warehouseId></item></catalog> diff --git a/branches/cpp-M1/sdo/runtime/core/test/47293Catalog.xsd b/branches/cpp-M1/sdo/runtime/core/test/47293Catalog.xsd deleted file mode 100644 index 28fd9d2f31..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/47293Catalog.xsd +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - 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. - --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:cat="catalogNS" xmlns:ord="orderNS" targetNamespace="catalogNS"> - - <include schemaLocation="Order.xsd"/> - - <element name="catalog" type="cat:CatalogType"/> - - <complexType name="CatalogType"> - <sequence> - <element maxOccurs="unbounded" ref="ord:item"/> - </sequence> - </complexType> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/47293Customer.xsd b/branches/cpp-M1/sdo/runtime/core/test/47293Customer.xsd deleted file mode 100644 index 8471db253b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/47293Customer.xsd +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - 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. - --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:cust="customerNS" targetNamespace="customerNS"> - <element name="customer" type="cust:CustomerType"> - <complexType name="CustomerType"> - <sequence> - <element name="customerId" type="ID"/> - <element name="name" type="string"/> - <element name="shipping" type="cust:AddressType"> - <complexType name="AddressType"> - <element name="street" type="string"/> - <element name="city" type="string"/> - <element name="state" type="string"/> - <element name="zip" type="string"/> - </complexType> - </element> - <element name="payment" ref="cust:payment"/> - </sequence> - </complexType> - </element> - - <element name="payment" type="cust:PaymentType"> - <complexType name="PaymentType"> - <element name="paymentId" type="ID"/> - <element name="accountNo" type="string"/> - <element name="bank" type="string"/> - <element name="securityCode" type="string"/> - <element name="amount" type="string"/> - </complexType> - </element> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/47293Order.xsd b/branches/cpp-M1/sdo/runtime/core/test/47293Order.xsd deleted file mode 100644 index 00036ae870..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/47293Order.xsd +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" -xmlns:ord="orderNS" xmlns:cust="customerNS" targetNamespace="orderNS"> - - <include schemaLocation="./Customer.xsd"/> - - <element name="orders" type="ord:OrdersType"> - <complexType name="OrdersType"> - <sequence> - <element name="order" maxOccurs="unbounded" type="ord:OrderType"/> - </sequence> - </complexType> - </element> - - <element name="order" type="ord:OrderType"> - <complexType name="OrderType"> - <sequence> - <element name="orderId" type="ID"/> - <element name="status" type="ord:OrderStatus"/> - <element name="item" maxOccurs="unbounded" ref="ord:item"/> - <element ref="cust:customer"/> - </sequence> - </complexType> - </element> - - <element name="item"> - <complexType> - <element name="itemId" type="integer"/> - <element name="description" type="string"/> - <element name="price" type="string"/> - <element name="quantity" type="integer"/> - <element name="warehouseId" type="integer"/> - </complexType> - </element> - - <simpleType name="OrderStatus"> - <restriction base="string"> - <enumeration value="NONE"/> - <enumeration value="RECEIVED"/> - <enumeration value="INVOICED"/> - <enumeration value="DISPATCHED"/> - <enumeration value="COMPLETED"/> - <enumeration value="CANCELLED"/> - </restriction> - </simpleType> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/48601.xsd b/branches/cpp-M1/sdo/runtime/core/test/48601.xsd deleted file mode 100644 index a5ef35ed7c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/48601.xsd +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> - -<xs:complexType name="product"> - <xs:sequence> - <xs:element name="brand" type="xs:string"/> - <xs:element name="size" type="available_sizes"/> - </xs:sequence> -</xs:complexType> - -<xs:simpleType name='available_sizes'> - <xs:union> - <xs:simpleType> - <xs:restriction base='nonNegativeInteger'/> - </xs:simpleType> - <xs:simpleType> - <xs:restriction base='string'> - <xs:enumeration value='large'/> - <xs:enumeration value='small'/> - </xs:restriction> - </xs:simpleType> - </xs:union> -</xs:simpleType> - -</xs:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/48686.xml b/branches/cpp-M1/sdo/runtime/core/test/48686.xml deleted file mode 100644 index 19e3ea93fe..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/48686.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<name - xmlns="http://www.wrox.com/name" - xmlns:xsi="http://www.w3.org/2001/XMLSchem-Instance" - xsi:schemaLocation="http://www.wrox.com/name name.xsd"> - <first>John</first> - <middle>Fitzgerald</middle> - <last>Doe</last> - <ages>1 2 3</ages> -</name> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/48686.xsd b/branches/cpp-M1/sdo/runtime/core/test/48686.xsd deleted file mode 100644 index c06650bba6..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/48686.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.wrox.com/name" - xmlns:tns="http://www.wrox.com/name"> - - <element name="name"> - <complexType> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - <element name="ages"> - <simpleType> - <list itemType="positiveInteger"/> - </simpleType> - </element> - </sequence> - </complexType> - </element> - - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/48736.xml b/branches/cpp-M1/sdo/runtime/core/test/48736.xml deleted file mode 100644 index 9fe7208345..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/48736.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<formalname - xmlns="TNS" - xmlns:xsi="http://www.w3.org/2001/XMLSchem-Instance" - xsi:schemaLocation="http://www.wrox.com/name name.xsd" - title="Mr."> - <last>Doe</last> -</formalname> - - - diff --git a/branches/cpp-M1/sdo/runtime/core/test/48736.xsd b/branches/cpp-M1/sdo/runtime/core/test/48736.xsd deleted file mode 100644 index 1d531f9d11..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/48736.xsd +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="TNS" - xmlns:tns="TNS"> - - <complexType name="FormalNameType"> - <complexContent> - <restriction base="tns:NameType"> - <sequence> - <element ref="tns:last"/> - </sequence> - </restriction> - </complexContent> - </complexType> - - - <complexType name="NameType"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - </sequence> - <attribute name="title" type="string"/> - </complexType> - - <element name="formalname" type="tns:FormalNameType"/> - <element name="last" type="string"/> - -</schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/48736_xml.txt b/branches/cpp-M1/sdo/runtime/core/test/48736_xml.txt deleted file mode 100644 index d7b9d4b8d4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/48736_xml.txt +++ /dev/null @@ -1,42 +0,0 @@ -***** TYPES AFTER RESOLVE********************************* -Type:TNS#FormalNameType -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -Type:TNS#NameType -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -Type:TNS#RootType -Property:formalname of type FormalNameType -Property:last of type String -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -*******************************END TYPES****************** -===== DataObject contents ===== -first:string: - -middle:string: - -last:string:Doe - -title:string:Mr. - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/48736_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/48736_xsd.txt deleted file mode 100644 index 822a05ec7f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/48736_xsd.txt +++ /dev/null @@ -1,29 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:TNS#FormalNameType -Property:last of type String -Type:TNS#NameType -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -Type:TNS#RootType -Property:formalname of type FormalNameType -Property:last of type String -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/Atom1.0.xsd b/branches/cpp-M1/sdo/runtime/core/test/Atom1.0.xsd deleted file mode 100644 index 67942de547..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Atom1.0.xsd +++ /dev/null @@ -1,202 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - 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. - --> - -<xs:schema targetNamespace="http://www.w3.org/2005/Atom" - xmlns="http://www.w3.org/2005/Atom" xmlns:xs="http://www.w3.org/2001/XMLSchema"> - - <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd" /> - <xs:import namespace="http://www.w3.org/1999/xhtml" schemaLocation="xhtml1.xsd" /> - - <xs:element name="feed" type="feedType"/> - <xs:element name="entry" type="entryType"/> - - <xs:complexType name="feedType"> - <xs:complexContent> - <xs:extension base="sourceType"> - <xs:sequence> - <xs:element name="entry" type="entryType" minOccurs="0" maxOccurs="unbounded" /> - </xs:sequence> - <xs:attributeGroup ref="commonAttributes" /> - </xs:extension> - </xs:complexContent> - </xs:complexType> - - <xs:complexType name="entryType"> - <xs:choice maxOccurs="unbounded"> - <xs:element name="author" type="personConstruct" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="category" type="categoryType" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="content" type="contentType" minOccurs="0" /> - <xs:element name="contributor" type="personConstruct" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="id" type="idType" /> - <xs:element name="link" type="linkType" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="published" type="dateConstruct" minOccurs="0" /> - <xs:element name="rights" type="textConstruct" minOccurs="0" /> - <xs:element name="source" type="sourceType" minOccurs="0" /> - <xs:element name="summary" type="textConstruct" maxOccurs="0" /> - <xs:element name="title" type="textConstruct" /> - <xs:element name="updated" type="dateConstruct" /> - <xs:element name="extension" type="extensionType" minOccurs="0" maxOccurs="unbounded" /> - </xs:choice> - <xs:attributeGroup ref="commonAttributes"/> - </xs:complexType> - - <xs:complexType name="sourceType"> - <xs:choice maxOccurs="unbounded"> - <xs:element name="author" type="personConstruct" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="category" type="categoryType" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="contributor" type="personConstruct" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="generator" type="generatorType" minOccurs="0" /> - <xs:element name="icon" type="iconType" minOccurs="0" /> - <xs:element name="id" type="idType" /> - <xs:element name="link" type="linkType" minOccurs="0" maxOccurs="unbounded" /> - <xs:element name="logo" type="logoType" minOccurs="0" /> - <xs:element name="rights" type="textConstruct" minOccurs="0" /> - <xs:element name="subtitle" type="textConstruct" minOccurs="0" /> - <xs:element name="title" type="textConstruct" /> - <xs:element name="updated" type="dateConstruct" /> - <xs:element name="extension" type="extensionType" minOccurs="0" maxOccurs="unbounded" /> - </xs:choice> - </xs:complexType> - - <xs:complexType name="personConstruct"> - <xs:choice maxOccurs="unbounded"> - <xs:element name="name" type="xs:string" /> - <xs:element name="uri" type="uriType" minOccurs="0" /> - <xs:element name="email" type="emailType" minOccurs="0" /> - <xs:element name="extension" type="extensionType" minOccurs="0" maxOccurs="unbounded" /> - </xs:choice> - </xs:complexType> - - <xs:complexType name="categoryType"> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="term" type="xs:string" use="required" /> - <xs:attribute name="scheme" type="uriType" /> - <xs:attribute name="label" type="xs:string" /> - <xs:attributeGroup ref="commonAttributes"/> - </xs:extension> - </xs:simpleContent> - <!-- TODO: undefinedContent - beyond string? --> - </xs:complexType> - - <xs:complexType name="generatorType"> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="uri" type="uriType" /> - <xs:attribute name="version" type="xs:string" /> - <xs:attributeGroup ref="commonAttributes"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - <xs:complexType name="iconType"> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attributeGroup ref="commonAttributes"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - <xs:complexType name="idType"> - <xs:simpleContent> - <xs:extension base="uriType"> - <xs:attributeGroup ref="commonAttributes"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - <xs:complexType name="logoType"> - <xs:simpleContent> - <xs:extension base="uriType"> - <xs:attributeGroup ref="commonAttributes"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - <xs:complexType name="contentType" mixed="true"> - <xs:sequence> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> - </xs:sequence> - <xs:attribute name="type" type="xs:string" /> - <xs:attribute name="src" type="uriType" minOccurs="0" /> - <xs:attributeGroup ref="commonAttributes"/> - </xs:complexType> - - <xs:complexType name="linkType"> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="href" type="uriType" use="required" /> - <xs:attribute name="rel" type="uriType" /> <!-- { atomNCName | atomUri }? --> - <xs:attribute name="type" type="mediaType" /> - <xs:attribute name="hreflang" type="languageTagType" /> - <xs:attribute name="title" type="xs:string" /> - <xs:attribute name="length" type="xs:string" /> - <xs:attributeGroup ref="commonAttributes"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - <xs:simpleType name="languageTagType"> - <xs:restriction base="xs:string"> - <xs:pattern value="[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*" /> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="mediaType"> - <xs:restriction base="xs:string"> - <xs:pattern value=".+/.+" /> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="emailType"> - <xs:restriction base="xs:string"> - <xs:pattern value=".+@.+" /> - </xs:restriction> - </xs:simpleType> - - <xs:complexType name="textConstruct" mixed="true"> - <xs:sequence> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> - </xs:sequence> - <xs:attribute name="type" type="xs:string" /> - <xs:attributeGroup ref="commonAttributes"/> - </xs:complexType> - - <xs:complexType name="dateConstruct"> - <xs:simpleContent> - <xs:extension base="xs:dateTime"> - <xs:attributeGroup ref="commonAttributes"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - - <xs:simpleType name="uriType" type="xs:string" /> - - <xs:complexType name="extensionType" mixed="true"> - <xs:sequence> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> - </xs:sequence> - <xs:anyAttribute /> - </xs:complexType> - - <xs:attributeGroup name="commonAttributes"> - <xs:attribute ref="xml:base" /> - <xs:attribute ref="xml:lang" /> - <xs:anyAttribute/> - </xs:attributeGroup> - -</xs:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/BadElement.xml b/branches/cpp-M1/sdo/runtime/core/test/BadElement.xml deleted file mode 100644 index 981287237a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/BadElement.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<Holiday xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="TravelBookingSchema.xsd"> - <Flight flightNo="BA243"> - <Departure>NCE</Departure> - <Arrival>PAR</Arrival> - <ThisJustAintPartOfTheSchema>DATA</ThisJustAintPartOfTheSchema> - </Flight> -</Holiday> diff --git a/branches/cpp-M1/sdo/runtime/core/test/BadElement.xsd b/branches/cpp-M1/sdo/runtime/core/test/BadElement.xsd deleted file mode 100644 index 84af953576..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/BadElement.xsd +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - - <xsd:element name="Holiday"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Flight" maxOccurs="unbounded" minOccurs="1"/> - <xsd:element ref="Hotel" maxOccurs="unbounded" minOccurs="1"/> - <xsd:element ref="Excursion"/> - <xsd:element ref="Client"/> - <xsd:element ref="Party"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Flight"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="Departure" type="xsd:string"/> - <xsd:element name="Arrival" type="xsd:string"/> - </xsd:sequence> - <xsd:attribute name="flightNo" type="xsd:string" use="required"/> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Hotel"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - <xsd:element name="Phone" type="xsd:string"/> - <xsd:element ref="Room"/> - </xsd:sequence> - <xsd:attribute name="cardsAccepted" default="false" type="xsd:boolean"/> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Room"> - <xsd:complexType> - <xsd:simpleContent> - <xsd:extension base="xsd:string"> - <xsd:attribute name="booked" use="required" type="xsd:boolean"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Party"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Person" maxOccurs="unbounded" minOccurs="1"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Person"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Client"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - <xsd:element name="Address" type="xsd:string"/> - <xsd:element name="CreditCard" type="xsd:string"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Excursion"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="Title" type="xsd:string"/> - <xsd:element name="Cost" type="xsd:string"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Name" type="xsd:string"/> -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/Catalog.xsd b/branches/cpp-M1/sdo/runtime/core/test/Catalog.xsd deleted file mode 100644 index 23f3363394..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Catalog.xsd +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:cat="catalogNS" targetNamespace="catalogNS"> - - <include schemaLocation="./Order.xsd"/> - - <element name="catalog" type="cat:CatalogType"/> - - <complexType name="CatalogType"> - <sequence> - <element maxOccurs="unbounded" ref="ord:item"/> - </sequence> - </complexType> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/Customer.xsd b/branches/cpp-M1/sdo/runtime/core/test/Customer.xsd deleted file mode 100644 index 670a804109..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Customer.xsd +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:cust="customerNS" targetNamespace="customerNS"> - <element name="customer" type="cust:CustomerType"> - <complexType name="CustomerType"> - <sequence> - <element name="customerId" type="ID"/> - <element name="name" type="string"/> - <element name="shipping" type="cust:AddressType"> - <complexType name="AddressType"> - <element name="street" type="string"/> - <element name="city" type="string"/> - <element name="state" type="string"/> - <element name="zip" type="string"/> - </complexType> - </element> - <element name="payment" type="cust:PaymentType"> - <complexType name="PaymentType"> - <element name="accountNo" type="string"/> - <element name="bank" type="string"/> - <element name="securityCode" type="string"/> - <element name="amount" type="float"/> - </complexType> - </element> - </sequence> - </complexType> - </element> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/Makefile.am b/branches/cpp-M1/sdo/runtime/core/test/Makefile.am deleted file mode 100644 index 09c11205d7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -prgbindir=$(prefix)/bin/test -prgbin_PROGRAMS = tuscany_sdo_test -SUBDIRS = -AM_CPPFLAGS = $(CPPFLAGS) -tuscany_sdo_test_SOURCES = sdotest.cpp sdotest2.cpp utils.cpp main.cpp - -EXTRA_DIST = *.xsd *.xml *.txt *.wsdl test/*.* test2/*.* t2/*.* g/*.* bugs/1/*.* -noinst_HEADERS=sdotest.h - -tuscany_sdo_test_LDADD = \ - -L$(top_builddir)/runtime/core/src/commonj/sdo -ltuscany_sdo \ - -L${LIBXML2_LIB} -lxml2 - - -INCLUDES = -I$(top_builddir)/runtime/core/test \ - -I$(top_builddir)/runtime/core/src diff --git a/branches/cpp-M1/sdo/runtime/core/test/OddChars.xml b/branches/cpp-M1/sdo/runtime/core/test/OddChars.xml deleted file mode 100644 index 920ef3c8bb..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/OddChars.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<Holiday xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="TravelBookingSchema.xsd"> - <Flight flightNo="BA243"> - <Departure>ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╔╩╦╠═╬¤ðÐÊËÈıÍÎÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ </Departure> - <Arrival>Pound:£ Dollar:$ Euro:Ç or █</Arrival> - </Flight> -</Holiday> diff --git a/branches/cpp-M1/sdo/runtime/core/test/OddChars.xsd b/branches/cpp-M1/sdo/runtime/core/test/OddChars.xsd deleted file mode 100644 index 84af953576..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/OddChars.xsd +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - - <xsd:element name="Holiday"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Flight" maxOccurs="unbounded" minOccurs="1"/> - <xsd:element ref="Hotel" maxOccurs="unbounded" minOccurs="1"/> - <xsd:element ref="Excursion"/> - <xsd:element ref="Client"/> - <xsd:element ref="Party"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Flight"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="Departure" type="xsd:string"/> - <xsd:element name="Arrival" type="xsd:string"/> - </xsd:sequence> - <xsd:attribute name="flightNo" type="xsd:string" use="required"/> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Hotel"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - <xsd:element name="Phone" type="xsd:string"/> - <xsd:element ref="Room"/> - </xsd:sequence> - <xsd:attribute name="cardsAccepted" default="false" type="xsd:boolean"/> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Room"> - <xsd:complexType> - <xsd:simpleContent> - <xsd:extension base="xsd:string"> - <xsd:attribute name="booked" use="required" type="xsd:boolean"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Party"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Person" maxOccurs="unbounded" minOccurs="1"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Person"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Client"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - <xsd:element name="Address" type="xsd:string"/> - <xsd:element name="CreditCard" type="xsd:string"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Excursion"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="Title" type="xsd:string"/> - <xsd:element name="Cost" type="xsd:string"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Name" type="xsd:string"/> -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/Order.xsd b/branches/cpp-M1/sdo/runtime/core/test/Order.xsd deleted file mode 100644 index 4dbbad9507..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Order.xsd +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" -xmlns:ord="orderNS" xmlns:cust="customerNS" targetNamespace="orderNS"> - -<include schemaLocation="./Customer.xsd"/> - -<element name="order" type="ord:OrderType"> - <complexType name="OrderType"> - <sequence> - <element name="orderId" type="ID"/> - <element name="status" type="ord:OrderStatus"/> - <element name="item" maxOccurs="unbounded" ref="ord:item"/> - <element ref="cust:customer"/> - </sequence> - </complexType> - </element> - - <element name="item"> - <complexType> - <element name="itemId" type="integer"/> - <element name="description" type="string"/> - <element name="price" type="string"/> - <element name="quantity" type="integer"/> - <element name="warehouseId" type="integer"/> - </complexType> - </element> - - <simpleType name="OrderStatus"> - <restriction base="string"> - <enumeration value="NONE"/> - <enumeration value="RECEIVED"/> - <enumeration value="INVOICED"/> - <enumeration value="DISPATCHED"/> - <enumeration value="COMPLETED"/> - <enumeration value="CANCELLED"/> - </restriction> - </simpleType> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/SdoGenerate.cpp b/branches/cpp-M1/sdo/runtime/core/test/SdoGenerate.cpp deleted file mode 100644 index 375f72d3d8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/SdoGenerate.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/* - * - * 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: SdoGenerate.cpp,v 1.2 2006/03/16 12:53:57 slattery Exp $ */ - -/* work in progress on generation of structures from sdos*/ - -#include <stdio.h> - -#pragma warning(disable:4786) - -#include <iostream> -using namespace std; - - - -#include "sdotest.h" - - - -using namespace commonj::sdo; - - -char* sdotest::convert(const char* uri) -{ - char* newval = (char*)malloc(strlen(uri) + 1); - strcpy(newval,uri); - - char* c; - while ((c = strchr(newval,'.')) != 0) - { - char * tmp = (char*)malloc(strlen(newval) + 5); - strncpy(tmp,newval, c - newval); - tmp[c-newval] = 0; - strcat(tmp,"<dot>"); - strcat(tmp,c+1); - free(newval); - newval = tmp; - } - return newval; -} - - -void sdotest::generate(DataFactoryPtr fac) -{ - try { - - TypeList tl = fac->getTypes(); - - - cout << "// Generated structures " << endl; - - for (int i=0;i<tl.size();i++) - { - - if (!strcmp(tl[i].getURI(),"commonj.sdo")) continue; - - char *uri = convert(tl[i].getURI()); - - cout << "typedef struct _"; - if (uri) cout << uri << "_"; - cout << tl[i].getName(); - - cout << "{" << endl; - - - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - if (pl[j].isMany()) - { - cout << "struct _"; - char *v = convert(pl[j].getType().getURI()); - if (v) cout << v << "_"; - cout << pl[j].getType().getName(); - cout << "List *" << pl[j].getName() << ";" << endl; - if (v) free(v); - } - else - { - if (pl[j].getType().isDataType()) - { - switch (pl[j].getTypeEnum()) - { - case Type::BooleanType: - - cout << "bool " << pl[j].getName() << ";" << endl; - break; - case Type::ByteType: - cout << "char " << pl[j].getName() << ";" << endl; - break; - case Type::BytesType: - cout << "char* " << pl[j].getName() << ";" << endl; - break; - case Type::CharacterType: - cout << "wchar " << pl[j].getName() << ";" << endl; - break; - case Type::DateType: - cout << "time_t " << pl[j].getName() << ";" << endl; - break; - case Type::DoubleType: - cout << "long double " << pl[j].getName() << ";" << endl; - break; - case Type::FloatType: - cout << "float " << pl[j].getName() << ";" << endl; - break; - case Type::IntegerType: - cout << "long " << pl[j].getName() << ";" << endl; - break; - case Type::LongType: - cout << "int64_t " << pl[j].getName() << ";" << endl; - break; - case Type::ShortType: - cout << "short " << pl[j].getName() << ";" << endl; - break; - case Type::StringType: - case Type::UriType: - cout << "wchar_t* " << pl[j].getName() << ";" << endl; - break; - default: - cout << "// unknown primitive: " << pl[j].getName() << endl; - break; - } - } - else - { - cout << "struct _"; - char *v = convert(pl[j].getType().getURI()); - if (v) cout << v << "_"; - cout << pl[j].getType().getName(); - cout << " *" << pl[j].getName() << ";" << endl; - if (v) free(v); - } - } - } - - cout << "} "; - if (uri) cout << uri << "_"; - cout << tl[i].getName() << ";" << endl; - if (uri) free(uri); - - } - - cout << "// generated Accessors" << endl; - } - catch (SDORuntimeException e) - { - cout << "Exception in Generation" << endl; - cout << e << endl; - } -} - diff --git a/branches/cpp-M1/sdo/runtime/core/test/StockQuoteService.wsdl b/branches/cpp-M1/sdo/runtime/core/test/StockQuoteService.wsdl deleted file mode 100644 index 4917cde583..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/StockQuoteService.wsdl +++ /dev/null @@ -1,157 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
- xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
- xmlns:s="http://www.w3.org/2001/XMLSchema"
- xmlns:s0="http://swanandmokashi.com"
- xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
- xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
- xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
- targetNamespace="http://swanandmokashi.com"
- xmlns="http://schemas.xmlsoap.org/wsdl/">
- <types>
- <s:schema elementFormDefault="qualified"
- targetNamespace="http://swanandmokashi.com"
- xmlns:s="http://www.w3.org/2001/XMLSchema">
- <s:element name="GetQuotes">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1"
- name="QuoteTicker" type="s:string" />
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="GetQuotesResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1"
- name="GetQuotesResult" type="s0:ArrayOfQuote" />
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:complexType name="ArrayOfQuote">
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="unbounded"
- name="Quote" type="s0:Quote" />
- </s:sequence>
- </s:complexType>
- <s:complexType name="Quote">
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1"
- name="CompanyName" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1"
- name="StockTicker" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1"
- name="StockQuote" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1"
- name="LastUpdated" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1" name="Change"
- type="s:string" />
- <s:element minOccurs="0" maxOccurs="1"
- name="OpenPrice" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1"
- name="DayHighPrice" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1"
- name="DayLowPrice" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1" name="Volume"
- type="s:string" />
- <s:element minOccurs="0" maxOccurs="1"
- name="MarketCap" type="s:string" />
- <s:element minOccurs="0" maxOccurs="1"
- name="YearRange" type="s:string" />
- </s:sequence>
- </s:complexType>
- <s:element name="ArrayOfQuote" nillable="true"
- type="s0:ArrayOfQuote" />
- </s:schema>
- </types>
- <message name="GetQuotesSoapIn">
- <part name="parameters" element="s0:GetQuotes" />
- </message>
- <message name="GetQuotesSoapOut">
- <part name="parameters" element="s0:GetQuotesResponse" />
- </message>
- <message name="GetQuotesHttpGetIn">
- <part name="QuoteTicker" type="s:string" />
- </message>
- <message name="GetQuotesHttpGetOut">
- <part name="Body" element="s0:ArrayOfQuote" />
- </message>
- <message name="GetQuotesHttpPostIn">
- <part name="QuoteTicker" type="s:string" />
- </message>
- <message name="GetQuotesHttpPostOut">
- <part name="Body" element="s0:ArrayOfQuote" />
- </message>
- <portType name="StockQuotesSoap">
- <operation name="GetStockQuotes">
- <input name="GetQuotes" message="s0:GetQuotesSoapIn" />
- <output name="GetQuotes" message="s0:GetQuotesSoapOut" />
- </operation>
- </portType>
- <portType name="StockQuotesHttpGet">
- <operation name="GetStockQuotes">
- <input name="GetQuotes" message="s0:GetQuotesHttpGetIn" />
- <output name="GetQuotes" message="s0:GetQuotesHttpGetOut" />
- </operation>
- </portType>
- <portType name="StockQuotesHttpPost">
- <operation name="GetStockQuotes">
- <input name="GetQuotes" message="s0:GetQuotesHttpPostIn" />
- <output name="GetQuotes" message="s0:GetQuotesHttpPostOut" />
- </operation>
- </portType>
- <binding name="StockQuotesSoap" type="s0:StockQuotesSoap">
- <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
- style="document" />
- <operation name="GetStockQuotes">
- <soap:operation
- soapAction="http://swanandmokashi.com/GetQuotes" style="document" />
- <input name="GetQuotes">
- <soap:body use="literal" />
- </input>
- <output name="GetQuotes">
- <soap:body use="literal" />
- </output>
- </operation>
- </binding>
- <binding name="StockQuotesHttpGet" type="s0:StockQuotesHttpGet">
- <http:binding verb="GET" />
- <operation name="GetStockQuotes">
- <http:operation location="/GetQuotes" />
- <input name="GetQuotes">
- <http:urlEncoded />
- </input>
- <output name="GetQuotes">
- <mime:mimeXml part="Body" />
- </output>
- </operation>
- </binding>
- <binding name="StockQuotesHttpPost" type="s0:StockQuotesHttpPost">
- <http:binding verb="POST" />
- <operation name="GetStockQuotes">
- <http:operation location="/GetQuotes" />
- <input name="GetQuotes">
- <mime:content type="application/x-www-form-urlencoded" />
- </input>
- <output name="GetQuotes">
- <mime:mimeXml part="Body" />
- </output>
- </operation>
- </binding>
- <service name="StockQuotes">
- <port name="StockQuotesSoap" binding="s0:StockQuotesSoap">
- <soap:address
- location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" />
- </port>
- <port name="StockQuotesHttpGet"
- binding="s0:StockQuotesHttpGet">
- <http:address
- location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" />
- </port>
- <port name="StockQuotesHttpPost"
- binding="s0:StockQuotesHttpPost">
- <http:address
- location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" />
- </port>
- </service>
-</definitions>
diff --git a/branches/cpp-M1/sdo/runtime/core/test/Style1.xsd b/branches/cpp-M1/sdo/runtime/core/test/Style1.xsd deleted file mode 100644 index 8ff9357ef9..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Style1.xsd +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" -xmlns:lib="libraryNS" targetNamespace="libraryNS"> - - <element name="character"> - <complexType> - <element name="name" type="string"/> - </complexType> - </element> - - <element name="author"> - <complexType> - <element name="name" type="string"/> - </complexType> - </element> - - <element name="isbn"> - <complexType> - <element name="value" type="string"/> - </complexType> - </element> - - <element name="title"> - <complexType> - <element name="value" type="string"/> - </complexType> - </element> - - <element name="available"> - <complexType> - <element name="isInPrint" type="boolean"/> - </complexType> - </element> - -<element name="library"> - <complexType > - <sequence> - <element name="book" maxOccurs="unbounded"> - <complexType> - <sequence> - <element ref="isbn"/> - <element ref="title"/> - <element ref="author" minOccurs="0" maxOccurs="unbounded"/> - <element ref="character" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute ref="id"/> - <attribute ref="available"/> - </complexType> - </element> - </sequence> - </complexType> - </element> - </schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/Style2.xsd b/branches/cpp-M1/sdo/runtime/core/test/Style2.xsd deleted file mode 100644 index 651a098956..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Style2.xsd +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" -xmlns:lib="libraryNS" targetNamespace="libraryNS"> - - <element name="character"> - <complexType> - <element name="name" type="string"/> - </complexType> - </element> - - <element name="author"> - <complexType> - <element name="name" type="string"/> - </complexType> - </element> - - <element name="isbn"> - <complexType> - <element name="value" type="string"/> - </complexType> - </element> - - <element name="title"> - <complexType> - <element name="value" type="string"/> - </complexType> - </element> - - <element name="available"> - <complexType> - <element name="isInPrint" type="boolean"/> - </complexType> - </element> - -<element name="book"> - <complexType> - <sequence> - <element ref="isbn"/> - <element ref="title"/> - <element ref="author" minOccurs="0" maxOccurs="unbounded"/> - <element ref="character" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute ref="id"/> - <attribute ref="available"/> - </complexType> -</element> - - <element name="library"> - <complexType > - <sequence> - <element name="book" maxOccurs="unbounded"/> - </sequence> - </complexType> - </element> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/Style3.xsd b/branches/cpp-M1/sdo/runtime/core/test/Style3.xsd deleted file mode 100644 index af224db483..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Style3.xsd +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" -xmlns:lib="libraryNS" targetNamespace="libraryNS"> - - - <element name="character"> - <complexType> - <element name="name" type="string"/> - </complexType> - </element> - - <element name="author"> - <complexType> - <element name="name" type="string"/> - </complexType> - </element> - - <element name="isbn"> - <complexType> - <element name="value" type="string"/> - </complexType> - </element> - - <element name="title"> - <complexType> - <element name="value" type="string"/> - </complexType> - </element> - - <element name="available"> - <complexType> - <element name="isInPrint" type="boolean"/> - </complexType> - </element> - - <complexType name="bookType" > - <sequence> - <element ref="isbn"/> - <element ref="title"/> - <element ref="author" minOccurs="0" maxOccurs="unbounded"/> - <element ref="character" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute ref="id"/> - <attribute ref="available"/> - </complexType> - - - <element name="library"> - <complexType > - <sequence> - <element name="book" type="lib:bookType" maxOccurs="unbounded"/> - </sequence> - </complexType> - </element> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/Style4.xsd b/branches/cpp-M1/sdo/runtime/core/test/Style4.xsd deleted file mode 100644 index 8ff8547f50..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/Style4.xsd +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" -xmlns:lib="libraryNS" targetNamespace="libraryNS"> - - <group name="bookGroup"> - <sequence> - <element name="book"> - <complexType > - <sequence> - <element ref="isbn"/> - <element ref="title"/> - <element ref="author" minOccurs="0" maxOccurs="unbounded"/> - <element ref="character" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute ref="id"/> - <attribute ref="available"/> - </complexType> - </element> - </sequence> - </group> - - - <element name="character"> - <complexType> - <element name="name" type="string"/> - </complexType> - </element> - - <element name="author"> - <complexType> - <element name="name" type="string"/> - </complexType> - </element> - - <element name="isbn"> - <complexType> - <element name="value" type="string"/> - </complexType> - </element> - - <element name="title"> - <complexType> - <element name="value" type="string"/> - </complexType> - </element> - - <element name="available"> - <complexType> - <element name="isInPrint" type="boolean"/> - </complexType> - </element> - - <element name="library"> - <complexType > - <sequence> - <group ref="lib:bookGroup" maxOccurs="unbounded"/> - </sequence> - </complexType> - </element> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/TravelBookingSchema.xsd b/branches/cpp-M1/sdo/runtime/core/test/TravelBookingSchema.xsd deleted file mode 100644 index 84af953576..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/TravelBookingSchema.xsd +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - - <xsd:element name="Holiday"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Flight" maxOccurs="unbounded" minOccurs="1"/> - <xsd:element ref="Hotel" maxOccurs="unbounded" minOccurs="1"/> - <xsd:element ref="Excursion"/> - <xsd:element ref="Client"/> - <xsd:element ref="Party"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Flight"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="Departure" type="xsd:string"/> - <xsd:element name="Arrival" type="xsd:string"/> - </xsd:sequence> - <xsd:attribute name="flightNo" type="xsd:string" use="required"/> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Hotel"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - <xsd:element name="Phone" type="xsd:string"/> - <xsd:element ref="Room"/> - </xsd:sequence> - <xsd:attribute name="cardsAccepted" default="false" type="xsd:boolean"/> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Room"> - <xsd:complexType> - <xsd:simpleContent> - <xsd:extension base="xsd:string"> - <xsd:attribute name="booked" use="required" type="xsd:boolean"/> - </xsd:extension> - </xsd:simpleContent> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Party"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Person" maxOccurs="unbounded" minOccurs="1"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Person"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Client"> - <xsd:complexType> - <xsd:sequence> - <xsd:element ref="Name"/> - <xsd:element name="Address" type="xsd:string"/> - <xsd:element name="CreditCard" type="xsd:string"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Excursion"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="Title" type="xsd:string"/> - <xsd:element name="Cost" type="xsd:string"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - - <xsd:element name="Name" type="xsd:string"/> -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/TravelBookingUsingSchema.xml b/branches/cpp-M1/sdo/runtime/core/test/TravelBookingUsingSchema.xml deleted file mode 100644 index 80bcad875b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/TravelBookingUsingSchema.xml +++ /dev/null @@ -1,63 +0,0 @@ - -<!-- - 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. - --> -<Holiday xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="TravelBookingSchema.xsd"> - <Flight flightNo="BA243"> - <Departure>LHR</Departure> - <Arrival>SNG</Arrival> - </Flight> - <Flight flightNo="SG561"> - <Departure>SNG</Departure> - <Arrival>LHR</Arrival> - </Flight> - <Hotel cardsAccepted="true"> - <Name>Excelsior</Name> - <Phone>222-3333</Phone> - <Room booked="true">303</Room> - </Hotel> - <Hotel> - <Name>Seedy Lodge</Name> - <Phone>888-9999</Phone> - <Room booked="true">14</Room> - </Hotel> - <Hotel cardsAccepted="true"> - <Name>Hilton</Name> - <Phone>444-5555</Phone> - <Room booked="false">456</Room> - <foo>foo</foo> - </Hotel> - <Excursion> - <Title>Bird Baths of Singapore</Title> - <Cost>50</Cost> - </Excursion> - <Client> - <Name>Steve</Name> - <Address>134 Shirley Road</Address> - <CreditCard>1234-8908-6543-900</CreditCard> - </Client> - <Party> - <Person> - <Name>John</Name> - </Person> - <Person> - <Name>Jane</Name> - </Person> - <Person> - <Name>Bill</Name> - </Person> - </Party> -</Holiday> diff --git a/branches/cpp-M1/sdo/runtime/core/test/axis.xsd b/branches/cpp-M1/sdo/runtime/core/test/axis.xsd deleted file mode 100644 index 3ea0033a7c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/axis.xsd +++ /dev/null @@ -1,36 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns="axis" targetNamespace="axis"> -<xsd:element name="ItemSearch" > - <xsd:complexType > - <xsd:sequence> -<xsd:element name="SubscriptionId" type="xsd:string" minOccurs="0" /> -<xsd:element name="AssociateTag" type="xsd:string" minOccurs="0" /> -<xsd:element name="XMLEscaping" type="xsd:string" minOccurs="0" /> -<xsd:element name="Validate" type="xsd:string" minOccurs="0" /> -<xsd:element name="Shared" type="tns:ItemSearchRequest" minOccurs="0" /> -<xsd:element name="Request" type="tns:ItemSearchRequest" minOccurs="0" maxOccurs="unbounded" /> -</xsd:sequence> -</xsd:complexType> -</xsd:element> - <xsd:complexType name="ItemSearchRequest"> - <xsd:sequence> -<xsd:element name="Keywords" type="xsd:string" minOccurs="0" /> -<xsd:element name="SearchIndex" type="xsd:string" minOccurs="0" /> -</xsd:sequence> -</xsd:complexType> -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b46617.xml b/branches/cpp-M1/sdo/runtime/core/test/b46617.xml deleted file mode 100644 index 84a51b73ec..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b46617.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Eastleigh Borough Council" employeeOfTheMonth="#/CEO"><departments name="Waste Disposal" location="Botley" number="123"><employees name="Alphonse Dodet" SN="E0001"/><employees name="Carl Marx" SN="E0003"/></departments><CEO name="Bridget Jones" SN="E0002" manager="true"/></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b46617.xsd b/branches/cpp-M1/sdo/runtime/core/test/b46617.xsd deleted file mode 100644 index ea75c0c8b9..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b46617.xsd +++ /dev/null @@ -1 +0,0 @@ -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns="companyNS" targetNamespace="companyNS"><xsd:element name="companyType" type="CompanyType"/><xsd:complexType name="CompanyType"><xsd:sequence><xsd:element name="departments" type="tns:DepartmentType" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="CEO" type="tns:EmployeeType" minOccurs="0"/></xsd:sequence><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="employeeOfTheMonth" sdoxml:propertyType="tns:EmployeeType" type="xsd:IDREF"/></xsd:complexType><xsd:element name="departmentType" type="DepartmentType"/><xsd:complexType name="DepartmentType"><xsd:sequence><xsd:element name="employees" type="tns:EmployeeType" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="name" type="xsd:String" minOccurs="0"/><xsd:element name="location" type="xsd:String" minOccurs="0"/><xsd:element name="number" type="xsd:String" minOccurs="0"/></xsd:sequence></xsd:complexType><xsd:element name="employeeType" type="EmployeeType"/><xsd:complexType name="EmployeeType"><xsd:sequence><xsd:element name="name" type="xsd:String" minOccurs="0"/><xsd:element name="SN" type="xsd:String" minOccurs="0"/><xsd:element name="manager" type="xsd:boolean" minOccurs="0"/></xsd:sequence></xsd:complexType></xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/b46617b.xml b/branches/cpp-M1/sdo/runtime/core/test/b46617b.xml deleted file mode 100644 index 3ccd70a40b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b46617b.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<companyType xmlns="companyNS" xsi:type="CompanyType" -xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="#/CEO"> -<departments name="Shoe"> -<employees name="Sarah Jones"/> -</departments> -<CEO name="Fred Smith"/> -</companyType> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b46617b.xsd b/branches/cpp-M1/sdo/runtime/core/test/b46617b.xsd deleted file mode 100644 index ae0d3a4bda..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b46617b.xsd +++ /dev/null @@ -1,70 +0,0 @@ - -<!-- - 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. - --> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" -xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" -xmlns:tns="companyNS" targetNamespace="companyNS"> -<xsd:element name="employeeType" type="tns:EmployeeType"/> -<xsd:complexType name="EmployeeType"> -<xsd:sequence> -<xsd:element name="name" type="xsd:String" minOccurs="0"/> -<xsd:element name="SN" type="xsd:String" minOccurs="0"/> -<xsd:element name="manager" type="xsd:boolean" minOccurs="0"/> -</xsd:sequence> -</xsd:complexType> -<xsd:element name="departmentType" type="tns:DepartmentType"/> -<xsd:complexType name="DepartmentType"> -<xsd:sequence><xsd:element name="name" type="xsd:String" minOccurs="0"/> -<xsd:element name="location" type="xsd:String" minOccurs="0"/> -<xsd:element name="number" type="xsd:integer" minOccurs="0"/> -<xsd:element name="employees" type="tns:EmployeeType" minOccurs="0" maxOccurs="unbounded"/> -</xsd:sequence> -</xsd:complexType> -<xsd:element name="companyType" type="tns:CompanyType"/> -<xsd:complexType name="CompanyType" mixed="true"> -<xsd:choice maxOccurs="unbounded"> -<xsd:element name="name" type="xsd:String" minOccurs="0"/> -<xsd:element name="departments" type="tns:DepartmentType" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="CEO" type="tns:EmployeeType" minOccurs="0"/> -<xsd:element name="string" type="xsd:String" minOccurs="0"/> -<xsd:element name="bool" type="xsd:boolean" minOccurs="0"/> -<xsd:element name="byte" type="xsd:byte" minOccurs="0"/> -<xsd:element name="bytes" type="xsd:hexBinary" minOccurs="0"/> -<xsd:element name="char" type="xsd:string" minOccurs="0"/> -<xsd:element name="date" type="xsd:dateTime" minOccurs="0"/> -<xsd:element name="double" type="xsd:double" minOccurs="0"/> -<xsd:element name="float" type="xsd:float" minOccurs="0"/> -<xsd:element name="int" type="xsd:integer" minOccurs="0"/> -<xsd:element name="long" type="xsd:long" minOccurs="0"/> -<xsd:element name="short" type="xsd:short" minOccurs="0"/> -<xsd:element name="uri" type="xsd:anyURI" minOccurs="0"/> -<xsd:element name="Mstring" type="xsd:String" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mbool" type="xsd:boolean" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mbyte" type="xsd:byte" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mbytes" type="xsd:hexBinary" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mchar" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mdate" type="xsd:dateTime" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mdouble" type="xsd:double" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mfloat" type="xsd:float" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mint" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mlong" type="xsd:long" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Mshort" type="xsd:short" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="Muri" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/> -</xsd:choice> -<xsd:element name="changeSummary" type="sdo:ChangeSummaryType"/> -<xsd:attribute name="employeeOfTheMonth" sdoxml:propertyType="tns:EmployeeType" type="xsd:IDREF"/> -</xsd:complexType> -</xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/b46633.txt b/branches/cpp-M1/sdo/runtime/core/test/b46633.txt deleted file mode 100644 index da34a5196e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b46633.txt +++ /dev/null @@ -1,8 +0,0 @@ -A modified of type myspace#Department -Property employees[(null)] was unset before the change -Property ints[(null)] was unset before the change -Property bool was unset before the change -A modified of type myspace#Department -Property employees[(null)] was unset before the change -Property ints[(null)] was unset before the change -Property bool was unset before the change diff --git a/branches/cpp-M1/sdo/runtime/core/test/b46634_out.txt b/branches/cpp-M1/sdo/runtime/core/test/b46634_out.txt deleted file mode 100644 index b228d4052c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b46634_out.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp"><departments name="Advanced Technologies" location="NY" number="123"><employees><name>Jane Doe</name><employees xmlns="companyNS" xsi:nil="true"/></employees></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b46634_out.xml b/branches/cpp-M1/sdo/runtime/core/test/b46634_out.xml deleted file mode 100644 index b228d4052c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b46634_out.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp"><departments name="Advanced Technologies" location="NY" number="123"><employees><name>Jane Doe</name><employees xmlns="companyNS" xsi:nil="true"/></employees></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b46693.xsd b/branches/cpp-M1/sdo/runtime/core/test/b46693.xsd deleted file mode 100644 index 8488597741..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b46693.xsd +++ /dev/null @@ -1,173 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> - -<!-- - 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. - --> -<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" - xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" - xmlns:s="http://www.w3.org/2001/XMLSchema" - xmlns:s0="http://swanandmokashi.com" - xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" - xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" - xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" - targetNamespace="http://swanandmokashi.com" - xmlns="http://schemas.xmlsoap.org/wsdl/"> - <types> - <s:schema elementFormDefault="qualified" - targetNamespace="http://swanandmokashi.com"> - <s:element name="GetQuotes"> - <s:complexType> - <s:sequence> - <s:element minOccurs="0" maxOccurs="1" - name="QuoteTicker" type="s:string" /> - </s:sequence> - </s:complexType> - </s:element> - <s:element name="GetQuotesResponse"> - <s:complexType> - <s:sequence> - <s:element minOccurs="0" maxOccurs="1" - name="GetQuotesResult" type="s0:ArrayOfQuote" /> - </s:sequence> - </s:complexType> - </s:element> - <s:complexType name="ArrayOfQuote"> - <s:sequence> - <s:element minOccurs="0" maxOccurs="unbounded" - name="Quote" type="s0:Quote" /> - </s:sequence> - </s:complexType> - <s:complexType name="Quote"> - <s:sequence> - <s:element minOccurs="0" maxOccurs="1" - name="CompanyName" type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" - name="StockTicker" type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" - name="StockQuote" type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" - name="LastUpdated" type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" name="Change" - type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" - name="OpenPrice" type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" - name="DayHighPrice" type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" - name="DayLowPrice" type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" name="Volume" - type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" - name="MarketCap" type="s:string" /> - <s:element minOccurs="0" maxOccurs="1" - name="YearRange" type="s:string" /> - </s:sequence> - </s:complexType> - <s:element name="ArrayOfQuote" nillable="true" - type="s0:ArrayOfQuote" /> - </s:schema> - </types> - <message name="GetQuotesSoapIn"> - <part name="parameters" element="s0:GetQuotes" /> - </message> - <message name="GetQuotesSoapOut"> - <part name="parameters" element="s0:GetQuotesResponse" /> - </message> - <message name="GetQuotesHttpGetIn"> - <part name="QuoteTicker" type="s:string" /> - </message> - <message name="GetQuotesHttpGetOut"> - <part name="Body" element="s0:ArrayOfQuote" /> - </message> - <message name="GetQuotesHttpPostIn"> - <part name="QuoteTicker" type="s:string" /> - </message> - <message name="GetQuotesHttpPostOut"> - <part name="Body" element="s0:ArrayOfQuote" /> - </message> - <portType name="StockQuotesSoap"> - <operation name="GetStockQuotes"> - <input name="GetQuotes" message="s0:GetQuotesSoapIn" /> - <output name="GetQuotes" message="s0:GetQuotesSoapOut" /> - </operation> - </portType> - <portType name="StockQuotesHttpGet"> - <operation name="GetStockQuotes"> - <input name="GetQuotes" message="s0:GetQuotesHttpGetIn" /> - <output name="GetQuotes" message="s0:GetQuotesHttpGetOut" /> - </operation> - </portType> - <portType name="StockQuotesHttpPost"> - <operation name="GetStockQuotes"> - <input name="GetQuotes" message="s0:GetQuotesHttpPostIn" /> - <output name="GetQuotes" message="s0:GetQuotesHttpPostOut" /> - </operation> - </portType> - <binding name="StockQuotesSoap" type="s0:StockQuotesSoap"> - <soap:binding transport="http://schemas.xmlsoap.org/soap/http" - style="document" /> - <operation name="GetStockQuotes"> - <soap:operation - soapAction="http://swanandmokashi.com/GetQuotes" style="document" /> - <input name="GetQuotes"> - <soap:body use="literal" /> - </input> - <output name="GetQuotes"> - <soap:body use="literal" /> - </output> - </operation> - </binding> - <binding name="StockQuotesHttpGet" type="s0:StockQuotesHttpGet"> - <http:binding verb="GET" /> - <operation name="GetStockQuotes"> - <http:operation location="/GetQuotes" /> - <input name="GetQuotes"> - <http:urlEncoded /> - </input> - <output name="GetQuotes"> - <mime:mimeXml part="Body" /> - </output> - </operation> - </binding> - <binding name="StockQuotesHttpPost" type="s0:StockQuotesHttpPost"> - <http:binding verb="POST" /> - <operation name="GetStockQuotes"> - <http:operation location="/GetQuotes" /> - <input name="GetQuotes"> - <mime:content type="application/x-www-form-urlencoded" /> - </input> - <output name="GetQuotes"> - <mime:mimeXml part="Body" /> - </output> - </operation> - </binding> - <service name="StockQuotes"> - <port name="StockQuotesSoap" binding="s0:StockQuotesSoap"> - <soap:address - location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" /> - </port> - <port name="StockQuotesHttpGet" - binding="s0:StockQuotesHttpGet"> - <http:address - location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" /> - </port> - <port name="StockQuotesHttpPost" - binding="s0:StockQuotesHttpPost"> - <http:address - location="http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx" /> - </port> - </service> -</definitions> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/b47137.txt b/branches/cpp-M1/sdo/runtime/core/test/b47137.txt deleted file mode 100644 index d525bd7776..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b47137.txt +++ /dev/null @@ -1,6 +0,0 @@ -Property:value -Property:isPermaLink -Property:value -Value:Hello -Property:isPermaLink -Value:true diff --git a/branches/cpp-M1/sdo/runtime/core/test/b47137.xsd b/branches/cpp-M1/sdo/runtime/core/test/b47137.xsd deleted file mode 100644 index 90f78c7398..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b47137.xsd +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - 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. - --> - -<xs:schema version="1.1.0" - xmlns:xs="http://www.w3.org/2001/XMLSchema"> - - <xs:element name="guid" minOccurs="0" maxOccurs="1"> - <xs:complexType> - <xs:extension base="xs:string"> - <xs:attribute name="isPermaLink" use="optional" type="xs:boolean"> - </xs:attribute> - </xs:extension> - </xs:complexType> - </xs:element> -</xs:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/b47137_out.xml b/branches/cpp-M1/sdo/runtime/core/test/b47137_out.xml deleted file mode 100644 index 1bb06f8f0a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b47137_out.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<fluid xsi:type="guid" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" isPermaLink="true">Hello</fluid> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b47137b.txt b/branches/cpp-M1/sdo/runtime/core/test/b47137b.txt deleted file mode 100644 index 202a17fc21..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b47137b.txt +++ /dev/null @@ -1,31 +0,0 @@ -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:companyNS#CompanyType -Type:companyNS#DepartmentType -Type:companyNS#EmployeeType -Type:companyNS#RootType -Type:companyNS#guid -Property:departments -Property:guid -Property:name -Property:employeeOfTheMonth -Property:departments -Property:guid -guid Value:Wilbur -guid isPermaLink:Property:name -Property:employeeOfTheMonth diff --git a/branches/cpp-M1/sdo/runtime/core/test/b47137b.xsd b/branches/cpp-M1/sdo/runtime/core/test/b47137b.xsd deleted file mode 100644 index 5282a4b4ba..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b47137b.xsd +++ /dev/null @@ -1,55 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:element name="guid" minOccurs="0" maxOccurs="1"> - <xsd:complexType> - <xsd:extension base="xsd:string"> - <xsd:attribute name="isPermaLink" use="optional" type="xsd:boolean"> - </xsd:attribute> - </xsd:extension> - </xsd:complexType> - </xsd:element> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> - </xsd:complexType> - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/b47137b_out.xml b/branches/cpp-M1/sdo/runtime/core/test/b47137b_out.xml deleted file mode 100644 index 28de3c4f9f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b47137b_out.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><sdo:changeSummary xmlns:sdo="commonj.sdo"/><guid isPermaLink="true">Wilbur</guid></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b47293.txt b/branches/cpp-M1/sdo/runtime/core/test/b47293.txt deleted file mode 100644 index 9d571da67c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b47293.txt +++ /dev/null @@ -1,27 +0,0 @@ -Type:catalogNS#CatalogTypeType:catalogNS#RootTypeType:commonj.sdo#BigDecimalType:commonj.sdo#BigIntegerType:commonj.sdo#BooleanType:commonj.sdo#ByteType:commonj.sdo#BytesType:commonj.sdo#ChangeSummaryType:commonj.sdo#CharacterType:commonj.sdo#DataObjectType:commonj.sdo#DateType:commonj.sdo#DoubleType:commonj.sdo#FloatType:commonj.sdo#IntegerType:commonj.sdo#LongType:commonj.sdo#OpenDataObjectType:commonj.sdo#ShortType:commonj.sdo#StringType:commonj.sdo#URIType:customerNS#AddressTypeType:customerNS#CustomerTypeType:customerNS#PaymentTypeType:customerNS#RootTypeType:orderNS#OrderStatusType:orderNS#OrderTypeType:orderNS#RootTypeType:orderNS#itemType:catalogNS#CatalogType -Type:catalogNS#RootType -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:customerNS#AddressType -Type:customerNS#CustomerType -Type:customerNS#PaymentType -Type:customerNS#RootType -Type:orderNS#OrderStatus -Type:orderNS#OrderType -Type:orderNS#RootType -Type:orderNS#item diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48602.xsd b/branches/cpp-M1/sdo/runtime/core/test/b48602.xsd deleted file mode 100644 index dcb288f86a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48602.xsd +++ /dev/null @@ -1,25 +0,0 @@ - -<!-- - 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. - --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > - <xs:element name="address" type="Address"/> -<xs:complexType name="Address"> - <xs:sequence> -<xs:element name="name" type="string"/> -</xs:sequence> -</xs:complexType > -</xs:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48633.xml b/branches/cpp-M1/sdo/runtime/core/test/b48633.xml deleted file mode 100644 index ffb7a039d4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48633.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<name - xmlns="http://www.wrox.com/name" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance" - xsi:schemaLocation="http://www.wrox.com/name name.xsd" - title="Mr."> - <first>John</first> - <middle>Fitzgerald</middle> - <last>Doe</last> -</name> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48633.xsd b/branches/cpp-M1/sdo/runtime/core/test/b48633.xsd deleted file mode 100644 index 0a7c526c02..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48633.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.wrox.com/name" - xmlns:tns="http://www.wrox.com/name" - elementFormDefault="qualified"> - - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - - <complexType name="NameType"> - <sequence> - <element ref="tns:first"/> - <element ref="tns:middle"/> - <element ref="tns:last"/> - </sequence> - <attribute name="title" type="string"/> - </complexType> - - <element name="name" type="tns:NameType"/> -</schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48633_xml.txt b/branches/cpp-M1/sdo/runtime/core/test/b48633_xml.txt deleted file mode 100644 index 7c0425d298..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48633_xml.txt +++ /dev/null @@ -1,10 +0,0 @@ -===== DataObject contents ===== -first:string:John - -middle:string:Fitzgerald - -last:string:Doe - -title:string:Mr. - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48633b.xsd b/branches/cpp-M1/sdo/runtime/core/test/b48633b.xsd deleted file mode 100644 index c9bca4a9c3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48633b.xsd +++ /dev/null @@ -1,22 +0,0 @@ - -<!-- - 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. - --> -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="TNS" - xmlns:v="TNS"> -<element name="version" type="string"/> -</schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48633b_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/b48633b_xsd.txt deleted file mode 100644 index 0836fda6cd..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48633b_xsd.txt +++ /dev/null @@ -1,31 +0,0 @@ -***** TESTANY ****************************************** -Type:TNS#RootType -Property:version of type String -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#NameType -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -Type:http://www.wrox.com/name#RootType -Property:first of type String -Property:middle of type String -Property:last of type String -Property:name of type NameType -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48636.xml b/branches/cpp-M1/sdo/runtime/core/test/b48636.xml deleted file mode 100644 index 1edcdf37c1..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48636.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<name - xmlns="http://www.wrox.com/name" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.wrox.com/name name8.xsd" - title="Mr."> - <first>John</first> - <middle>Fitzgerald</middle> - <last>Doe</last> -</name> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48636.xsd b/branches/cpp-M1/sdo/runtime/core/test/b48636.xsd deleted file mode 100644 index 5387611997..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48636.xsd +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.wrox.com/name" -xmlns:target="http://www.wrox.com/name" elementFormDefault="qualified"> - <group name="NameGroup"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - </sequence> - </group> - <element name="name"> - <complexType> - <group ref="target:NameGroup"/> - <attribute name="title" type="string"/> - </complexType> - </element> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48636_xml.txt b/branches/cpp-M1/sdo/runtime/core/test/b48636_xml.txt deleted file mode 100644 index 4b5b55ced7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48636_xml.txt +++ /dev/null @@ -1,36 +0,0 @@ -***** TYPES AFTER RESOLVE********************************* -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -*******************************END TYPES****************** -===== DataObject contents ===== -first:string:John - -middle:string:Fitzgerald - -last:string:Doe - -title:string:Mr. - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48636_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/b48636_xsd.txt deleted file mode 100644 index 81ccaee474..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48636_xsd.txt +++ /dev/null @@ -1,26 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48686.xml b/branches/cpp-M1/sdo/runtime/core/test/b48686.xml deleted file mode 100644 index 19e3ea93fe..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48686.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<name - xmlns="http://www.wrox.com/name" - xmlns:xsi="http://www.w3.org/2001/XMLSchem-Instance" - xsi:schemaLocation="http://www.wrox.com/name name.xsd"> - <first>John</first> - <middle>Fitzgerald</middle> - <last>Doe</last> - <ages>1 2 3</ages> -</name> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48686.xsd b/branches/cpp-M1/sdo/runtime/core/test/b48686.xsd deleted file mode 100644 index c06650bba6..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48686.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.wrox.com/name" - xmlns:tns="http://www.wrox.com/name"> - - <element name="name"> - <complexType> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - <element name="ages"> - <simpleType> - <list itemType="positiveInteger"/> - </simpleType> - </element> - </sequence> - </complexType> - </element> - - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48686_xml.txt b/branches/cpp-M1/sdo/runtime/core/test/b48686_xml.txt deleted file mode 100644 index f4899d810e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48686_xml.txt +++ /dev/null @@ -1,46 +0,0 @@ -***** TYPES AFTER RESOLVE********************************* -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#ages -Property:values (many) of type Integer -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:ages (many) of type ages -*******************************END TYPES****************** -===== DataObject contents ===== -first:string:John - -middle:string:Fitzgerald - -last:string:Doe - -ages: list dataObject[0]= -===== DataObject contents ===== -values: list integer[0]=1 - -integer[1]=2 - -integer[2]=3 - -===== End DataObject ===== - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/b48686_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/b48686_xsd.txt deleted file mode 100644 index df670b8066..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/b48686_xsd.txt +++ /dev/null @@ -1,28 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#ages -Property:values (many) of type Integer -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:ages (many) of type ages -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/badelement.txt b/branches/cpp-M1/sdo/runtime/core/test/badelement.txt deleted file mode 100644 index f9ddc1e3b1..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/badelement.txt +++ /dev/null @@ -1,2 +0,0 @@ -BADELEMENT correctly found errors: -Parser found unknown element ThisJustAintPartOfTheSchema diff --git a/branches/cpp-M1/sdo/runtime/core/test/bothgroups.xsd b/branches/cpp-M1/sdo/runtime/core/test/bothgroups.xsd deleted file mode 100644 index d5a27a8cd5..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bothgroups.xsd +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.wrox.com/name" -xmlns:target="http://www.wrox.com/name" elementFormDefault="qualified"> - <group name="NameGroup"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - </sequence> - </group> - <attributeGroup name="NameAttributeGroup"> - <attribute name="firstattribute" type="string"/> - <attribute name="secondattribute" type="string"/> - <attribute name="thirdattribute" type="string"/> - </attributeGroup> - <element name="name"> - <complexType> - <group ref="target:NameGroup"/> - <attribute name="title" type="string"/> - <attributeGroup ref="target:NameAttributeGroup"/> - </complexType> - </element> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/bothgroups_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/bothgroups_xsd.txt deleted file mode 100644 index 5d92da21c5..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bothgroups_xsd.txt +++ /dev/null @@ -1,29 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -Property:firstattribute of type String -Property:secondattribute of type String -Property:thirdattribute of type String -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/bothgroupssamename.xsd b/branches/cpp-M1/sdo/runtime/core/test/bothgroupssamename.xsd deleted file mode 100644 index 4648a9e917..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bothgroupssamename.xsd +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.wrox.com/name" -xmlns:target="http://www.wrox.com/name" elementFormDefault="qualified"> - <group name="NameGroup"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - </sequence> - </group> - <attributeGroup name="NameGroup"> - <attribute name="firstattribute" type="string"/> - <attribute name="secondattribute" type="string"/> - <attribute name="thirdattribute" type="string"/> - </attributeGroup> - <element name="name"> - <complexType> - <group ref="target:NameGroup"/> - <attribute name="title" type="string"/> - <attributeGroup ref="target:NameGroup"/> - </complexType> - </element> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/bothgroupssamename_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/bothgroupssamename_xsd.txt deleted file mode 100644 index 5d92da21c5..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bothgroupssamename_xsd.txt +++ /dev/null @@ -1,29 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -Property:firstattribute of type String -Property:secondattribute of type String -Property:thirdattribute of type String -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/bug2.txt b/branches/cpp-M1/sdo/runtime/core/test/bug2.txt deleted file mode 100644 index aae01a0c9c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bug2.txt +++ /dev/null @@ -1,9 +0,0 @@ -MObject Property companies -Property:name:Acme -End of MObject Property companies -MObject Property companies -End of MObject Property companies -Change summary should have no entries... -MObject Property companies -End of MObject Property companies -Change summary should have no entries... diff --git a/branches/cpp-M1/sdo/runtime/core/test/bug45933-output.txt b/branches/cpp-M1/sdo/runtime/core/test/bug45933-output.txt deleted file mode 100644 index 366d41ef02..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bug45933-output.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Bug45933"><sdo:changeSummary xmlns:sdo="commonj.sdo"><company sdo:ref="#/"><bools>false</bools></company></sdo:changeSummary></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/bug45933-output.xml b/branches/cpp-M1/sdo/runtime/core/test/bug45933-output.xml deleted file mode 100644 index 366d41ef02..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bug45933-output.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Bug45933"><sdo:changeSummary xmlns:sdo="commonj.sdo"><company sdo:ref="#/"><bools>false</bools></company></sdo:changeSummary></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/bug48300.xml b/branches/cpp-M1/sdo/runtime/core/test/bug48300.xml deleted file mode 100644 index 77ccd72ba6..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bug48300.xml +++ /dev/null @@ -1,170 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<template:template xmlns:template="http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/" name="CTShop" version="1.0.0"> - <description>This is my online shop</description> - <displayName>The CT Shop</displayName> - <templateType>php</templateType> - <verifiers/> - <globalHelperArguments> - </globalHelperArguments> - <unboundTemplateParameters name="name" expert="false" multiplicity="1..1"> - <description> - <description>Name for the shop</description> - <displayName>Shop Name</displayName> - </description> - <verifiers> - </verifiers> - <constraints> - </constraints> - <defaults> - <description></description> - <displayName>CT Shop</displayName> - <data>CT Shop</data> - </defaults> - </unboundTemplateParameters> - <unboundTemplateParameters name="branding" expert="false" multiplicity="1..1"> - <description> - <description>Colour of background for Shop</description> - <displayName>Branding</displayName> - </description> - <verifiers> - </verifiers> - <constraints> - <description></description> - <displayName>Olive</displayName> - <data>Olive</data> - </constraints> - <constraints> - <description></description> - <displayName>Lime</displayName> - <data>Lime</data> - </constraints> - <constraints> - <description></description> - <displayName>Gray</displayName> - <data>Gray</data> - </constraints> - <constraints> - <description></description> - <displayName>Teal</displayName> - <data>Teal</data> - </constraints> - <constraints> - <description></description> - <displayName>Silver</displayName> - <data>Silver</data> - </constraints> - <constraints> - <description></description> - <displayName>White</displayName> - <data>White</data> - </constraints> - <defaults> - <description></description> - <displayName>Olive</displayName> - <data>Olive</data> - </defaults> - </unboundTemplateParameters> - <unboundTemplateParameters name="catalog" expert="false" multiplicity="1..1"> - <description> - <description>Product Catalog for the shop</description> - <displayName>Product Catalog</displayName> - </description> - <verifiers> - </verifiers> - <constraints> - </constraints> - <factory kind="php" name="CatalogFactory"> - </factory> - <defaults> - <description></description> - <displayName>Catalog</displayName> - <data>Catalog</data> - </defaults> - </unboundTemplateParameters> - <unboundTemplateParameters name="cart" expert="false" multiplicity="1..1"> - <description> - <description>Shopping cart for the shop</description> - <displayName>Shopping Cart</displayName> - </description> - <verifiers> - </verifiers> - <constraints> - <description></description> - <displayName>Cart</displayName> - <data>Cart</data> - </constraints> - <constraints> - <description></description> - <displayName>GCCart</displayName> - <data>GCCart</data> - </constraints> - <constraints> - <description></description> - <displayName>MyCart</displayName> - <data>MyCart</data> - </constraints> - <factory kind="php" name="CartFactory"> - </factory> - <defaults> - <description></description> - <displayName>Cart</displayName> - <data>Cart</data> - </defaults> - </unboundTemplateParameters> - <unboundTemplateParameters name="payment" expert="false" multiplicity="1..1"> - <description> - <description>Payment Modules for the shop</description> - <displayName>Payment Module</displayName> - </description> - <verifiers> - </verifiers> - <constraints> - <description></description> - <displayName>MyPayPal</displayName> - <data>MyPayPal</data> - </constraints> - <constraints> - <description></description> - <displayName>PayPal</displayName> - <data>PayPal</data> - </constraints> - <constraints> - <description></description> - <displayName>USPayPal</displayName> - <data>USPayPal</data> - </constraints> - <constraints> - <description></description> - <displayName>MyStormPay</displayName> - <data>MyStormPay</data> - </constraints> - <constraints> - <description></description> - <displayName>StormPay</displayName> - <data>StormPay</data> - </constraints> - <factory kind="php" name="PaymentFactory"> - </factory> - <defaults> - <description></description> - <displayName>PayPal</displayName> - <data>PayPal</data> - </defaults> - </unboundTemplateParameters> - </template:template>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bug48300.xsd b/branches/cpp-M1/sdo/runtime/core/test/bug48300.xsd deleted file mode 100644 index e6bdb8128b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bug48300.xsd +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:template="http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/" - targetNamespace="http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/"> - - <element name="template" type="template:TemplateType"> - <complexType name="TemplateType"> - <sequence> - <element name="displayName" type="string"/> - <element name="templateType" type="string"/> - <element name="description" type="string"/> - <element name="expert" type="string"/> - <element name="icon" type="string"/> - <element name="verifiers" minOccurs="0" maxOccurs="unbounded" type="string"/> - <element name="globalHelperArguments" minOccurs="0" maxOccurs="unbounded" type="string"/> - <element name="unboundTemplateParameters" minOccurs="0" maxOccurs="unbounded" ref="template:unboundTemplateParameter"/> - <attribute name="name" type="string"/> - <attribute name="version" type="string"/> - </sequence> - </complexType> - </element> - - <element name="unboundTemplateParameter"> - <complexType> - <element name="description" minOccurs="0" maxOccurs="1" ref="template:description"/> - <element name="verifiers" minOccurs="0" maxOccurs="unbounded" type="string"/> - <element name="constraints" minOccurs="0" maxOccurs="unbounded" ref="template:value"/> - <element name="factory" minOccurs="0" maxOccurs="1" ref="template:factory"/> - <element name="defaults" minOccurs="0" maxOccurs="unbounded" ref="template:value"/> - <attribute name="name" type="string"/> - <attribute name="expert" type="string"/> - <attribute name="multiplicity" type="string"/> - </complexType> - </element> - - <element name="description"> - <complexType> - <element name="description" type="string"/> - <element name="displayName" type="string"/> - </complexType> - </element> - - <element name="factory"> - <complexType> - <attribute name="kind" type="string"/> - <attribute name="name" type="string"/> - </complexType> - </element> - - <element name="valueprovider"> - <complexType> - <element name="values" minOccurs="0" maxOccurs="unbounded" ref="template:value"/> - </complexType> - </element> - - <element name="value"> - <complexType> - <element name="description" type="string"/> - <element name="displayName" type="string"/> - <element name="data" type="string"/> - </complexType> - </element> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/bug48300_xml.txt b/branches/cpp-M1/sdo/runtime/core/test/bug48300_xml.txt deleted file mode 100644 index d8b1345d0d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bug48300_xml.txt +++ /dev/null @@ -1,424 +0,0 @@ -***** TYPES AFTER RESOLVE********************************* -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#RootType -Property:template of type TemplateType -Property:unboundTemplateParameter of type unboundTemplateParameter -Property:description of type description -Property:factory of type factory -Property:valueprovider of type valueprovider -Property:value of type value -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#TemplateType -Property:displayName of type String -Property:templateType of type String -Property:description of type String -Property:expert of type String -Property:icon of type String -Property:verifiers (many) of type String -Property:globalHelperArguments (many) of type String -Property:unboundTemplateParameters (many) of type unboundTemplateParameter -Property:name of type String -Property:version of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#description -Property:description of type String -Property:displayName of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#factory -Property:kind of type String -Property:name of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#unboundTemplateParameter -Property:description of type description -Property:verifiers (many) of type String -Property:constraints (many) of type value -Property:factory of type factory -Property:defaults (many) of type value -Property:name of type String -Property:expert of type String -Property:multiplicity of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#value -Property:description of type String -Property:displayName of type String -Property:data of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#valueprovider -Property:values (many) of type value -*******************************END TYPES****************** -===== DataObject contents ===== -displayName:string:The CT Shop - -templateType:string:php - -description:string:This is my online shop - -expert:string: - -icon:string: - -verifiers: list string[0]= - -globalHelperArguments: list string[0]= - - -unboundTemplateParameters: list dataObject[0]= -===== DataObject contents ===== -description:dataObject -===== DataObject contents ===== -description:string:Name for the shop - -displayName:string:Shop Name - -===== End DataObject ===== - -verifiers: list string[0]= - - -constraints: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string: - -data:string: - -===== End DataObject ===== - -factory:dataObject - - null or unset - -defaults: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string:CT Shop - -data:string:CT Shop - -===== End DataObject ===== - -name:string:name - -expert:string:false - -multiplicity:string:1..1 - -===== End DataObject ===== - -dataObject[1]= -===== DataObject contents ===== -description:dataObject -===== DataObject contents ===== -description:string:Colour of background for Shop - -displayName:string:Branding - -===== End DataObject ===== - -verifiers: list string[0]= - - -constraints: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string:Olive - -data:string:Olive - -===== End DataObject ===== - -dataObject[1]= -===== DataObject contents ===== -description:string: - -displayName:string:Lime - -data:string:Lime - -===== End DataObject ===== - -dataObject[2]= -===== DataObject contents ===== -description:string: - -displayName:string:Gray - -data:string:Gray - -===== End DataObject ===== - -dataObject[3]= -===== DataObject contents ===== -description:string: - -displayName:string:Teal - -data:string:Teal - -===== End DataObject ===== - -dataObject[4]= -===== DataObject contents ===== -description:string: - -displayName:string:Silver - -data:string:Silver - -===== End DataObject ===== - -dataObject[5]= -===== DataObject contents ===== -description:string: - -displayName:string:White - -data:string:White - -===== End DataObject ===== - -factory:dataObject - - null or unset - -defaults: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string:Olive - -data:string:Olive - -===== End DataObject ===== - -name:string:branding - -expert:string:false - -multiplicity:string:1..1 - -===== End DataObject ===== - -dataObject[2]= -===== DataObject contents ===== -description:dataObject -===== DataObject contents ===== -description:string:Product Catalog for the shop - -displayName:string:Product Catalog - -===== End DataObject ===== - -verifiers: list string[0]= - - -constraints: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string: - -data:string: - -===== End DataObject ===== - -factory:dataObject -===== DataObject contents ===== -kind:string:php - -name:string:CatalogFactory - -===== End DataObject ===== - -defaults: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string:Catalog - -data:string:Catalog - -===== End DataObject ===== - -name:string:catalog - -expert:string:false - -multiplicity:string:1..1 - -===== End DataObject ===== - -dataObject[3]= -===== DataObject contents ===== -description:dataObject -===== DataObject contents ===== -description:string:Shopping cart for the shop - -displayName:string:Shopping Cart - -===== End DataObject ===== - -verifiers: list string[0]= - - -constraints: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string:Cart - -data:string:Cart - -===== End DataObject ===== - -dataObject[1]= -===== DataObject contents ===== -description:string: - -displayName:string:GCCart - -data:string:GCCart - -===== End DataObject ===== - -dataObject[2]= -===== DataObject contents ===== -description:string: - -displayName:string:MyCart - -data:string:MyCart - -===== End DataObject ===== - -factory:dataObject -===== DataObject contents ===== -kind:string:php - -name:string:CartFactory - -===== End DataObject ===== - -defaults: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string:Cart - -data:string:Cart - -===== End DataObject ===== - -name:string:cart - -expert:string:false - -multiplicity:string:1..1 - -===== End DataObject ===== - -dataObject[4]= -===== DataObject contents ===== -description:dataObject -===== DataObject contents ===== -description:string:Payment Modules for the shop - -displayName:string:Payment Module - -===== End DataObject ===== - -verifiers: list string[0]= - - -constraints: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string:MyPayPal - -data:string:MyPayPal - -===== End DataObject ===== - -dataObject[1]= -===== DataObject contents ===== -description:string: - -displayName:string:PayPal - -data:string:PayPal - -===== End DataObject ===== - -dataObject[2]= -===== DataObject contents ===== -description:string: - -displayName:string:USPayPal - -data:string:USPayPal - -===== End DataObject ===== - -dataObject[3]= -===== DataObject contents ===== -description:string: - -displayName:string:MyStormPay - -data:string:MyStormPay - -===== End DataObject ===== - -dataObject[4]= -===== DataObject contents ===== -description:string: - -displayName:string:StormPay - -data:string:StormPay - -===== End DataObject ===== - -factory:dataObject -===== DataObject contents ===== -kind:string:php - -name:string:PaymentFactory - -===== End DataObject ===== - -defaults: list dataObject[0]= -===== DataObject contents ===== -description:string: - -displayName:string:PayPal - -data:string:PayPal - -===== End DataObject ===== - -name:string:payment - -expert:string:false - -multiplicity:string:1..1 - -===== End DataObject ===== - -name:string:CTShop - -version:string:1.0.0 - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/bug48300_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/bug48300_xsd.txt deleted file mode 100644 index 38d7c904f0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bug48300_xsd.txt +++ /dev/null @@ -1,58 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#RootType -Property:template of type TemplateType -Property:unboundTemplateParameter of type unboundTemplateParameter -Property:description of type description -Property:factory of type factory -Property:valueprovider of type valueprovider -Property:value of type value -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#TemplateType -Property:displayName of type String -Property:templateType of type String -Property:description of type String -Property:expert of type String -Property:icon of type String -Property:verifiers (many) of type String -Property:globalHelperArguments (many) of type String -Property:unboundTemplateParameters (many) of type unboundTemplateParameter -Property:name of type String -Property:version of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#description -Property:description of type String -Property:displayName of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#factory -Property:kind of type String -Property:name of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#unboundTemplateParameter -Property:description of type description -Property:verifiers (many) of type String -Property:constraints (many) of type value -Property:factory of type factory -Property:defaults (many) of type value -Property:name of type String -Property:expert of type String -Property:multiplicity of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#value -Property:description of type String -Property:displayName of type String -Property:data of type String -Type:http://www.ibm.com/xmlns/prod/ct/ctdl-template/v1.0.0/#valueprovider -Property:values (many) of type value -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/company.xml b/branches/cpp-M1/sdo/runtime/core/test/bugs/1/company.xml deleted file mode 100644 index 8e130ae2aa..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/company.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<mci:company xmlns:mci="http://www.mycompanyinc.com" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.mycompanyinc.com company.xsd" - version="0.0.1"> - <mci:employees> - <mci:employee> - <mci:id>1</mci:id> - <mci:name>Mary Kay</mci:name> - </mci:employee> - </mci:employees> - <mci:departments> - <mci:department> - <mci:id>3</mci:id> - <mci:name>Sales</mci:name> - <mci:employeesList> - <mci:ids>1</mci:ids> - </mci:employeesList> - </mci:department> - </mci:departments> -</mci:company>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/company.xsd b/branches/cpp-M1/sdo/runtime/core/test/bugs/1/company.xsd deleted file mode 100644 index 34a66c282a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/company.xsd +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xsd:schema targetNamespace="http://www.mycompanyinc.com" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:mci="http://www.mycompanyinc.com" elementFormDefault="qualified" - version="0.0.1"> - <xsd:complexType name="employeesListType"> - <xsd:sequence> - <xsd:element name="ids" type="xsd:string" minOccurs="0" - maxOccurs="unbounded" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="employeeType"> - <xsd:sequence> - <xsd:element name="id" type="xsd:string" /> - <xsd:element name="name" type="xsd:string" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="departmentType"> - <xsd:sequence> - <xsd:element name="id" type="xsd:string" /> - <xsd:element name="name" type="xsd:string" /> - <xsd:element name="employeesList" type="mci:employeesListType" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="employeesType"> - <xsd:sequence> - <xsd:element name="employee" type="mci:employeeType" maxOccurs="unbounded" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="departmentsType"> - <xsd:sequence> - <xsd:element name="department" type="mci:departmentType" minOccurs="0" - maxOccurs="unbounded" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="companyType"> - <xsd:sequence> - <xsd:element name="employees" type="mci:employeesType" /> - <xsd:element name="departments" type="mci:departmentsType" /> - </xsd:sequence> - <xsd:attribute name="version" type="xsd:string" use="required" /> - </xsd:complexType> - <xsd:element name="company" type="mci:companyType" /> -</xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/include.xsd b/branches/cpp-M1/sdo/runtime/core/test/bugs/1/include.xsd deleted file mode 100644 index f2df5c1695..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/include.xsd +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xsd:schema targetNamespace="http://www.mycompanyinc.com" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:mci="http://www.mycompanyinc.com" elementFormDefault="qualified" - version="0.0.1"> - - <xsd:include schemaLocation="c:/absolute-drivel/ok1.xsd" /> - <xsd:include schemaLocation="ok2.xsd" /> - <xsd:include schemaLocation="c:\\absolute-tosh\\ok3.xsd" /> - - <xsd:complexType name="employeesListType"> - <xsd:sequence> - <xsd:element name="ids" type="xsd:string" minOccurs="0" - maxOccurs="unbounded" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="employeeType"> - <xsd:sequence> - <xsd:element name="id" type="xsd:string" /> - <xsd:element name="name" type="xsd:string" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="departmentType"> - <xsd:sequence> - <xsd:element name="id" type="xsd:string" /> - <xsd:element name="name" type="xsd:string" /> - <xsd:element name="employeesList" type="mci:employeesListType" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="employeesType"> - <xsd:sequence> - <xsd:element name="employee" type="mci:employeeType" maxOccurs="unbounded" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="departmentsType"> - <xsd:sequence> - <xsd:element name="department" type="mci:departmentType" minOccurs="0" - maxOccurs="unbounded" /> - </xsd:sequence> - </xsd:complexType> - <xsd:complexType name="companyType"> - <xsd:sequence> - <xsd:element name="employees" type="mci:employeesType" /> - <xsd:element name="departments" type="mci:departmentsType" /> - </xsd:sequence> - <xsd:attribute name="version" type="xsd:string" use="required" /> - </xsd:complexType> - <xsd:element name="company" type="mci:companyType" /> -</xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok1.xsd b/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok1.xsd deleted file mode 100644 index e8bea67b49..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok1.xsd +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xsd:schema targetNamespace="http://www.mycompanyinc.com" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:mci="http://www.mycompanyinc.com" elementFormDefault="qualified" - version="0.0.1"> - - <xsd:complexType name="ok1"> - <xsd:sequence> - <xsd:element name="id" type="xsd:string" /> - <xsd:element name="name" type="xsd:string" /> - </xsd:sequence> - </xsd:complexType> -</xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok2.xsd b/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok2.xsd deleted file mode 100644 index 9cecce2f7f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok2.xsd +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xsd:schema targetNamespace="http://www.mycompanyinc.com" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:mci="http://www.mycompanyinc.com" elementFormDefault="qualified" - version="0.0.1"> - - <xsd:complexType name="ok2"> - <xsd:sequence> - <xsd:element name="id" type="xsd:string" /> - <xsd:element name="name" type="xsd:string" /> - </xsd:sequence> - </xsd:complexType> -</xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok3.xsd b/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok3.xsd deleted file mode 100644 index f5bba60269..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bugs/1/ok3.xsd +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xsd:schema targetNamespace="http://www.mycompanyinc.com" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:mci="http://www.mycompanyinc.com" elementFormDefault="qualified" - version="0.0.1"> - - <xsd:complexType name="ok3"> - <xsd:sequence> - <xsd:element name="id" type="xsd:string" /> - <xsd:element name="name" type="xsd:string" /> - </xsd:sequence> - </xsd:complexType> -</xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bunique-out.txt b/branches/cpp-M1/sdo/runtime/core/test/bunique-out.txt deleted file mode 100644 index da1aabead7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bunique-out.txt +++ /dev/null @@ -1 +0,0 @@ -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns1="nottest" xmlns:tns="test" targetNamespace="test"><xsd:element name="duplicate" type="tns1:Duplicate"/><xsd:complexType name="tns1:Duplicate"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/></xsd:sequence><xsd:attribute name="id" type="xsd:integer"/></xsd:complexType><xsd:element name="duplicate" type="Duplicate"/><xsd:complexType name="Duplicate"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/></xsd:sequence><xsd:attribute name="id" type="xsd:integer"/></xsd:complexType><xsd:element name="object" type="Object"/><xsd:complexType name="Object"/><xsd:element name="root" type="Root"/><xsd:complexType name="Root"><xsd:sequence><xsd:element name="duplicate" type="tns:Duplicate" minOccurs="0"/><xsd:element name="duplicate2" type="tns1:Duplicate" minOccurs="0"/><xsd:element name="unique" type="tns:Unique" minOccurs="0"/><xsd:element name="duplicatelist" type="tns:Duplicate" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="duplicatelist2" type="tns1:Duplicate" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="uniquelist" type="tns:Unique" minOccurs="0" maxOccurs="unbounded"/></xsd:sequence></xsd:complexType><xsd:element name="unique" type="Unique"/><xsd:complexType name="Unique"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/></xsd:sequence><xsd:attribute name="id" type="xsd:integer"/></xsd:complexType></xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xml b/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xml deleted file mode 100644 index 44650e05a4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rooty xmlns="test" xsi:type="Root" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns2="nottest" xmlns:tns="test"><duplicate id="1"><ob/></duplicate><tns2:duplicate2 id="3"/><unique id="5"><ob/></unique><duplicatelist id="2"><ob/></duplicatelist><tns2:duplicatelist2 id="4"/><uniquelist id="6"/></rooty> diff --git a/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xsd b/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xsd deleted file mode 100644 index da1aabead7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xsd +++ /dev/null @@ -1 +0,0 @@ -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns1="nottest" xmlns:tns="test" targetNamespace="test"><xsd:element name="duplicate" type="tns1:Duplicate"/><xsd:complexType name="tns1:Duplicate"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/></xsd:sequence><xsd:attribute name="id" type="xsd:integer"/></xsd:complexType><xsd:element name="duplicate" type="Duplicate"/><xsd:complexType name="Duplicate"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/></xsd:sequence><xsd:attribute name="id" type="xsd:integer"/></xsd:complexType><xsd:element name="object" type="Object"/><xsd:complexType name="Object"/><xsd:element name="root" type="Root"/><xsd:complexType name="Root"><xsd:sequence><xsd:element name="duplicate" type="tns:Duplicate" minOccurs="0"/><xsd:element name="duplicate2" type="tns1:Duplicate" minOccurs="0"/><xsd:element name="unique" type="tns:Unique" minOccurs="0"/><xsd:element name="duplicatelist" type="tns:Duplicate" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="duplicatelist2" type="tns1:Duplicate" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="uniquelist" type="tns:Unique" minOccurs="0" maxOccurs="unbounded"/></xsd:sequence></xsd:complexType><xsd:element name="unique" type="Unique"/><xsd:complexType name="Unique"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/></xsd:sequence><xsd:attribute name="id" type="xsd:integer"/></xsd:complexType></xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xsd_safe.txt b/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xsd_safe.txt deleted file mode 100644 index 1b4c6bb7da..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bunique-out.xsd_safe.txt +++ /dev/null @@ -1,53 +0,0 @@ -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" -xmlns:tns1="nottest" xmlns:tns="test" targetNamespace="test"> - -<xsd:element name="duplicate" type="tns1:Duplicate"/> - -<xsd:complexType name="tns1:Duplicate"> - -<xsd:sequence> -<xsd:element name="ob" type="tns:Object" minOccurs="0"/> -</xsd:sequence> - -<xsd:attribute name="id" type="xsd:integer"/> - -</xsd:complexType> - -<xsd:element name="duplicate" type="Duplicate"/> - -<xsd:complexType name="Duplicate"> -<xsd:sequence> -<xsd:element name="ob" type="tns:Object" minOccurs="0"/> -</xsd:sequence> - -<xsd:attribute name="id" type="xsd:integer"/> - -</xsd:complexType> - -<xsd:element name="object" type="Object"/> - -<xsd:complexType name="Object"/> - -<xsd:element name="root" type="Root"/> - -<xsd:complexType name="Root"> -<xsd:sequence> -<xsd:element name="duplicate" type="tns:Duplicate" minOccurs="0"/> -<xsd:element name="duplicate2" type="tns1:Duplicate" minOccurs="0"/> -<xsd:element name="unique" type="tns:Unique" minOccurs="0"/> -<xsd:element name="duplicatelist" type="tns:Duplicate" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="duplicatelist2" type="tns1:Duplicate" minOccurs="0" maxOccurs="unbounded"/> -<xsd:element name="uniquelist" type="tns:Unique" minOccurs="0" maxOccurs="unbounded"/> -</xsd:sequence> -</xsd:complexType> - -<xsd:element name="unique" type="Unique"/> - -<xsd:complexType name="Unique"> -<xsd:sequence> -<xsd:element name="ob" type="tns:Object" minOccurs="0"/> -</xsd:sequence> -<xsd:attribute name="id" type="xsd:integer"/> -</xsd:complexType> - -</xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/bunique-outxml.txt b/branches/cpp-M1/sdo/runtime/core/test/bunique-outxml.txt deleted file mode 100644 index 44650e05a4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/bunique-outxml.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rooty xmlns="test" xsi:type="Root" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns2="nottest" xmlns:tns="test"><duplicate id="1"><ob/></duplicate><tns2:duplicate2 id="3"/><unique id="5"><ob/></unique><duplicatelist id="2"><ob/></duplicatelist><tns2:duplicatelist2 id="4"/><uniquelist id="6"/></rooty> diff --git a/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.txt b/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.txt deleted file mode 100644 index 44650e05a4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rooty xmlns="test" xsi:type="Root" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns2="nottest" xmlns:tns="test"><duplicate id="1"><ob/></duplicate><tns2:duplicate2 id="3"/><unique id="5"><ob/></unique><duplicatelist id="2"><ob/></duplicatelist><tns2:duplicatelist2 id="4"/><uniquelist id="6"/></rooty> diff --git a/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.xml b/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.xml deleted file mode 100644 index 44650e05a4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<rooty xmlns="test" xsi:type="Root" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns2="nottest" xmlns:tns="test"><duplicate id="1"><ob/></duplicate><tns2:duplicate2 id="3"/><unique id="5"><ob/></unique><duplicatelist id="2"><ob/></duplicatelist><tns2:duplicatelist2 id="4"/><uniquelist id="6"/></rooty> diff --git a/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.xsd b/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.xsd deleted file mode 100644 index 3b8cdffd61..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/buniqueread-out.xsd +++ /dev/null @@ -1 +0,0 @@ -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns1="nottest" xmlns:tns="test" targetNamespace="test"><xsd:element name="duplicate" type="tns1:Duplicate"/><xsd:complexType name="tns1:Duplicate"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/><xsd:element name="id" type="xsd:integer" minOccurs="0"/></xsd:sequence></xsd:complexType><xsd:element name="duplicate" type="Duplicate"/><xsd:complexType name="Duplicate"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/><xsd:element name="id" type="xsd:integer" minOccurs="0"/></xsd:sequence></xsd:complexType><xsd:element name="object" type="Object"/><xsd:complexType name="Object"/><xsd:element name="root" type="Root"/><xsd:complexType name="Root"><xsd:sequence><xsd:element name="duplicate" type="tns:Duplicate" minOccurs="0"/><xsd:element name="duplicate2" type="tns1:Duplicate" minOccurs="0"/><xsd:element name="unique" type="tns:Unique" minOccurs="0"/><xsd:element name="duplicatelist" type="tns:Duplicate" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="duplicatelist2" type="tns1:Duplicate" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="uniquelist" type="tns:Unique" minOccurs="0" maxOccurs="unbounded"/></xsd:sequence></xsd:complexType><xsd:element name="unique" type="Unique"/><xsd:complexType name="Unique"><xsd:sequence><xsd:element name="ob" type="tns:Object" minOccurs="0"/><xsd:element name="id" type="xsd:integer" minOccurs="0"/></xsd:sequence></xsd:complexType></xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/calculator.xsd b/branches/cpp-M1/sdo/runtime/core/test/calculator.xsd deleted file mode 100644 index d04b0c22e1..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/calculator.xsd +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" ?> -<!-- - 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. - --> - - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:calc="http://example.org/CalculatorTypes" - targetNamespace="http://example.org/CalculatorTypes"> - <xsd:complexType name="AddArguments"> - <xsd:sequence> - <xsd:element name="a" type="xsd:float"/> - <xsd:element name="b" type="xsd:float"/> - </xsd:sequence> - </xsd:complexType> - </xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/calculator2.wsdl b/branches/cpp-M1/sdo/runtime/core/test/calculator2.wsdl deleted file mode 100644 index 93cdce8874..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/calculator2.wsdl +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version ="1.0" encoding ="UTF-8" ?>
-<definitions name="Calculator"
- targetNamespace="http://example.org/Calculator"
- xmlns:calc="http://example.org/CalculatorTypes"
- xmlns:tns="http://example.org/Calculator"
- xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
- xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
- xmlns="http://schemas.xmlsoap.org/wsdl/">
-
-<!-- This is how it's done with an import -->
-<types>
- <xsd:schema targetNamespace="http://example.org/Calculator">
- <xsd:import namespace="http://example.org/CalculatorTypes" schemaLocation="calculator.xsd"/>
- </xsd:schema>
-</types>
-
-
-<!-- This is how it's done without an import
-<types>
- <xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://example.org/Calculator">
- <xsd:complexType name="AddArguments">
- <xsd:sequence>
- <xsd:element name="a" type="xsd:float"/>
- <xsd:element name="b" type="xsd:float"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:schema>
-</types>
--->
-
-<message name="getCalculatorRequest">
- <part name="arguments" type="calc:AddArguments"/>
-</message>
-<message name="getCalculatorResponse">
- <part name="result" type="xsd:float"/>
-</message>
-
-<portType name="CalculatorPortType">
- <operation name="add2">
- <input message="tns:getCalculatorRequest"/>
- <output message="tns:getCalculatorResponse"/>
- </operation>
-</portType>
-
-<binding name="CalculatorBinding" type="tns:CalculatorPortType">
- <soap:binding style="rpc"
- transport="http://schemas.xmlsoap.org/soap/http"/>
- <operation name="add2">
- <soap:operation soapAction="urn:example-org-calculator#add2"/>
- <input>
- <soap:body use="encoded" namespace="urn:example-org-calculator"
- encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
- </input>
- <output>
- <soap:body use="encoded" namespace="urn:example-org-calculator"
- encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
- </output>
- </operation>
-</binding>
-
-<service name="CalculatorService">
- <port name="CalculatorPort" binding="CalculatorBinding">
- <soap:address location="http://localhost/PHP%20Playground/SoapExtension/ComplexCalculator/calculator_server.php"/>
- </port>
-</service>
-</definitions>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/calculator2a.wsdl b/branches/cpp-M1/sdo/runtime/core/test/calculator2a.wsdl deleted file mode 100644 index eb17b03db7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/calculator2a.wsdl +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version ="1.0" encoding ="UTF-8" ?>
-<definitions name="Calculator"
- targetNamespace="http://example.org/Calculator"
- xmlns:calc="http://example.org/CalculatorTypes"
- xmlns:tns="http://example.org/Calculator"
- xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
- xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
- xmlns="http://schemas.xmlsoap.org/wsdl/">
-
-<!-- This is how it's done with an import
-<types>
- <xsd:schema targetNamespace="http://example.org/Calculator">
- <import namespace="http://example.org/CalculatorTypes" schemaLocation="calculator.xsd"/>
- </xsd:schema>
-</types>
--->
-
-<!-- This is how it's done without an import -->
-<types>
- <xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://example.org/Calculator">
- <xsd:complexType name="AddArguments">
- <xsd:sequence>
- <xsd:element name="a" type="xsd:float"/>
- <xsd:element name="b" type="xsd:float"/>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:schema>
-</types>
-
-<message name="getCalculatorRequest">
- <part name="arguments" type="calc:AddArguments"/>
-</message>
-<message name="getCalculatorResponse">
- <part name="result" type="xsd:float"/>
-</message>
-
-<portType name="CalculatorPortType">
- <operation name="add2">
- <input message="tns:getCalculatorRequest"/>
- <output message="tns:getCalculatorResponse"/>
- </operation>
-</portType>
-
-<binding name="CalculatorBinding" type="tns:CalculatorPortType">
- <soap:binding style="rpc"
- transport="http://schemas.xmlsoap.org/soap/http"/>
- <operation name="add2">
- <soap:operation soapAction="urn:example-org-calculator#add2"/>
- <input>
- <soap:body use="encoded" namespace="urn:example-org-calculator"
- encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
- </input>
- <output>
- <soap:body use="encoded" namespace="urn:example-org-calculator"
- encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
- </output>
- </operation>
-</binding>
-
-<service name="CalculatorService">
- <port name="CalculatorPort" binding="CalculatorBinding">
- <soap:address location="http://localhost/PHP%20Playground/SoapExtension/ComplexCalculator/calculator_server.php"/>
- </port>
-</service>
-</definitions>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/carotest3.txt b/branches/cpp-M1/sdo/runtime/core/test/carotest3.txt deleted file mode 100644 index cb5e4ed9b3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/carotest3.txt +++ /dev/null @@ -1,36 +0,0 @@ -====================================== -====================================== -====================================== -I am Item 1 of string -====================================== -====================================== -I am Item 1 of string -I am the first free text -====================================== -====================================== -I am Item 1 of string -I am the first free text -I am Item 2 of string -====================================== -====================================== -I am Item 1 of string -I am free text which has been modified -I am Item 2 of string -====================================== -====================================== -I am Item 1 of string -I am free text which has been modified -I am Item 2 of string - -====================================== -====================================== -I am Item 1 of string -I am free text which has been modified -I am Item 2 of string -department1 -====================================== -Element zero, length 1: 1 -Element one, length 2: 2 -Element two, length 3: 3 -Element three,length 4: 4 -Element four, length 5: 5 diff --git a/branches/cpp-M1/sdo/runtime/core/test/company.xsd b/branches/cpp-M1/sdo/runtime/core/test/company.xsd deleted file mode 100644 index 2c7769167a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/company.xsd +++ /dev/null @@ -1,46 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> - </xsd:complexType> - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/company_with_nillable_SN.xml b/branches/cpp-M1/sdo/runtime/core/test/company_with_nillable_SN.xml deleted file mode 100644 index 16a32223ab..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/company_with_nillable_SN.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - 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. - --> - - <!-- This XML has an employee with an SN of nil, which should appear in the SDO as NULL - --> - <company xmlns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="#/departments.0/employees.1"> -<departments name="Advanced Technologies" location="NY" number="123"> -<employees> -<name>Jane Doe</name> -<SN xsi:nil="true" /> -</employees> -</departments> -</company>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/company_with_nillable_SN.xsd b/branches/cpp-M1/sdo/runtime/core/test/company_with_nillable_SN.xsd deleted file mode 100644 index 808e075a2d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/company_with_nillable_SN.xsd +++ /dev/null @@ -1,45 +0,0 @@ - -<!-- - 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. - --> -<!-- This XSD recasts the properties of employee to elements in order to allow the SN property to be nillable --> -<xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" -sdoxml:propertyType="company:EmployeeType"/> </xsd:complexType> - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - <xsd:complexType name="EmployeeType"> - <xsd:element name="name" type="xsd:string"/> - <xsd:element name="SN" type="xsd:ID" nillable="true"/> - <xsd:element name="manager" type="xsd:boolean"/> - </xsd:complexType> -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/companyabs.xsd b/branches/cpp-M1/sdo/runtime/core/test/companyabs.xsd deleted file mode 100644 index f8a1577daf..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/companyabs.xsd +++ /dev/null @@ -1,60 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - <xsd:element name="Publication" type="company:PublicationType" maxOccurs="1"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> - </xsd:complexType> - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - <xsd:complexType name="BookType"> - <xsd:restriction base="company:PublicationType" /> - <xsd:element name="author" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:complexType name="MagazineType"> - <xsd:restriction base="company:PublicationType" /> - <xsd:element name="editor" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:complexType name="PublicationType" abstract="true" > - <xsd:element name="title" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:element name="Book" type="company:BookType" substitutionGroup="Publication" /> - <xsd:element name="Magazine" type="company:MagazineType" substitutionGroup="company:Publication" /> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/companyref.xsd b/branches/cpp-M1/sdo/runtime/core/test/companyref.xsd deleted file mode 100644 index 614dca1752..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/companyref.xsd +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - xmlns:company="companyNS" - targetNamespace="companyNS"> - elementFormDefault="qualified"> - - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - <xsd:element name="my.Publication" ref="publication" sdo:name="MyPublication" maxOccurs="1"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> - </xsd:complexType> - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - <xsd:complexType name="BookType"> - <xsd:restriction base="company:PublicationType" /> - <xsd:element name="author" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:complexType name="MagazineType"> - <xsd:restriction base="company:PublicationType" /> - <xsd:element name="editor" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:complexType name="PublicationType"> - <xsd:element name="title" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:element name="my.book" sdo:name="MyBook" type="company:BookType" substitutionGroup="Publication" /> - <xsd:element name="my.magazine" sdo:name="MyMagazine" type="company:MagazineType" substitutionGroup="company:Publication" /> - <xsd:element name="my.publication" sdo:name="MyPublication" type="company:PublicationType"/> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/companysubs.xsd b/branches/cpp-M1/sdo/runtime/core/test/companysubs.xsd deleted file mode 100644 index f71e07dbee..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/companysubs.xsd +++ /dev/null @@ -1,60 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - <xsd:element name="Publication" type="company:PublicationType" maxOccurs="1"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> - </xsd:complexType> - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - <xsd:complexType name="BookType"> - <xsd:restriction base="company:PublicationType" /> - <xsd:element name="author" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:complexType name="MagazineType"> - <xsd:restriction base="company:PublicationType" /> - <xsd:element name="editor" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:complexType name="PublicationType"> - <xsd:element name="title" type="xsd:string" maxOccurs="1"/> - </xsd:complexType> - <xsd:element name="Book" type="company:BookType" substitutionGroup="Publication" /> - <xsd:element name="Magazine" type="company:MagazineType" substitutionGroup="company:Publication" /> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/csload-output.txt b/branches/cpp-M1/sdo/runtime/core/test/csload-output.txt deleted file mode 100644 index b4c0b2d911..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/csload-output.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0004"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><create>#/departments.0/employees.2</create><delete>#/departments.0/employees.1</delete><create>#/departments.0/employees.3</create><create>#/departments.0/employees.4</create><company sdo:ref="#/" employeeOfTheMonth="" name="ACME" employeeOfTheMonth="#/departments.0/employees.1"/><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees sdo:ref="#/departments.0/employees.1"/></departments></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Jane Doe" SN="E0003"/><employees name="Al Smith" SN="E0004" manager="true"/><employees name="Bill Withers" SN="E0005"/><employees name="Mary Smith" SN="E0002" manager="true"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/csload-output.xml b/branches/cpp-M1/sdo/runtime/core/test/csload-output.xml deleted file mode 100644 index b4c0b2d911..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/csload-output.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0004"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><create>#/departments.0/employees.2</create><delete>#/departments.0/employees.1</delete><create>#/departments.0/employees.3</create><create>#/departments.0/employees.4</create><company sdo:ref="#/" employeeOfTheMonth="" name="ACME" employeeOfTheMonth="#/departments.0/employees.1"/><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees sdo:ref="#/departments.0/employees.1"/></departments></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Jane Doe" SN="E0003"/><employees name="Al Smith" SN="E0004" manager="true"/><employees name="Bill Withers" SN="E0005"/><employees name="Mary Smith" SN="E0002" manager="true"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/csload2-output.txt b/branches/cpp-M1/sdo/runtime/core/test/csload2-output.txt deleted file mode 100644 index 82175d4d13..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/csload2-output.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0005"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.1/employees.4</delete><delete>#/departments.1/employees.3</delete><delete>#/departments.1/employees.2</delete><delete>#/departments.1/employees.1</delete><delete>#/departments.1/employees.0</delete><delete>#/departments.1</delete><create>#/departments.0/employees.2</create><company sdo:ref="#/" employeeOfTheMonth="" name="Eastleigh Borough Council"><departments sdo:ref="#/departments.0"/><departments name="Tax Collection" location="Winchester" number="666"><employees name="Arch Meanie" SN="D0001" manager="false"/><employees name="Boris the Spider" SN="D0002" manager="true"/><employees name="Cash Hoarder" SN="D0003" manager="false"/><employees name="Dean Giyatoss" SN="D0004" manager="false"/><employees name="Ebenezer Scrooge" SN="D0005" manager="false"/></departments></company><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Bridget Jones" SN="E0002" manager="true"/><employees name="Colin Thorne" SN="E0003" manager="false"/><employees name="Donald Trump" SN="E0004" manager="false"/><employees sdo:ref="#/departments.0/employees.1"/></departments></sdo:changeSummary><departments name="Waste Disposal" location="Botley" number="123"><employees name="Alphonse Dodet" SN="E0001"/><employees name="Eddy the eagle" SN="E0005"/><employees name="Colin Thorne" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/csload2-output.xml b/branches/cpp-M1/sdo/runtime/core/test/csload2-output.xml deleted file mode 100644 index 82175d4d13..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/csload2-output.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0005"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.1/employees.4</delete><delete>#/departments.1/employees.3</delete><delete>#/departments.1/employees.2</delete><delete>#/departments.1/employees.1</delete><delete>#/departments.1/employees.0</delete><delete>#/departments.1</delete><create>#/departments.0/employees.2</create><company sdo:ref="#/" employeeOfTheMonth="" name="Eastleigh Borough Council"><departments sdo:ref="#/departments.0"/><departments name="Tax Collection" location="Winchester" number="666"><employees name="Arch Meanie" SN="D0001" manager="false"/><employees name="Boris the Spider" SN="D0002" manager="true"/><employees name="Cash Hoarder" SN="D0003" manager="false"/><employees name="Dean Giyatoss" SN="D0004" manager="false"/><employees name="Ebenezer Scrooge" SN="D0005" manager="false"/></departments></company><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Bridget Jones" SN="E0002" manager="true"/><employees name="Colin Thorne" SN="E0003" manager="false"/><employees name="Donald Trump" SN="E0004" manager="false"/><employees sdo:ref="#/departments.0/employees.1"/></departments></sdo:changeSummary><departments name="Waste Disposal" location="Botley" number="123"><employees name="Alphonse Dodet" SN="E0001"/><employees name="Eddy the eagle" SN="E0005"/><employees name="Colin Thorne" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/csload3-output.txt b/branches/cpp-M1/sdo/runtime/core/test/csload3-output.txt deleted file mode 100644 index 82175d4d13..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/csload3-output.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0005"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.1/employees.4</delete><delete>#/departments.1/employees.3</delete><delete>#/departments.1/employees.2</delete><delete>#/departments.1/employees.1</delete><delete>#/departments.1/employees.0</delete><delete>#/departments.1</delete><create>#/departments.0/employees.2</create><company sdo:ref="#/" employeeOfTheMonth="" name="Eastleigh Borough Council"><departments sdo:ref="#/departments.0"/><departments name="Tax Collection" location="Winchester" number="666"><employees name="Arch Meanie" SN="D0001" manager="false"/><employees name="Boris the Spider" SN="D0002" manager="true"/><employees name="Cash Hoarder" SN="D0003" manager="false"/><employees name="Dean Giyatoss" SN="D0004" manager="false"/><employees name="Ebenezer Scrooge" SN="D0005" manager="false"/></departments></company><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Bridget Jones" SN="E0002" manager="true"/><employees name="Colin Thorne" SN="E0003" manager="false"/><employees name="Donald Trump" SN="E0004" manager="false"/><employees sdo:ref="#/departments.0/employees.1"/></departments></sdo:changeSummary><departments name="Waste Disposal" location="Botley" number="123"><employees name="Alphonse Dodet" SN="E0001"/><employees name="Eddy the eagle" SN="E0005"/><employees name="Colin Thorne" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/csload3-output.xml b/branches/cpp-M1/sdo/runtime/core/test/csload3-output.xml deleted file mode 100644 index 82175d4d13..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/csload3-output.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0005"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.1/employees.4</delete><delete>#/departments.1/employees.3</delete><delete>#/departments.1/employees.2</delete><delete>#/departments.1/employees.1</delete><delete>#/departments.1/employees.0</delete><delete>#/departments.1</delete><create>#/departments.0/employees.2</create><company sdo:ref="#/" employeeOfTheMonth="" name="Eastleigh Borough Council"><departments sdo:ref="#/departments.0"/><departments name="Tax Collection" location="Winchester" number="666"><employees name="Arch Meanie" SN="D0001" manager="false"/><employees name="Boris the Spider" SN="D0002" manager="true"/><employees name="Cash Hoarder" SN="D0003" manager="false"/><employees name="Dean Giyatoss" SN="D0004" manager="false"/><employees name="Ebenezer Scrooge" SN="D0005" manager="false"/></departments></company><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Bridget Jones" SN="E0002" manager="true"/><employees name="Colin Thorne" SN="E0003" manager="false"/><employees name="Donald Trump" SN="E0004" manager="false"/><employees sdo:ref="#/departments.0/employees.1"/></departments></sdo:changeSummary><departments name="Waste Disposal" location="Botley" number="123"><employees name="Alphonse Dodet" SN="E0001"/><employees name="Eddy the eagle" SN="E0005"/><employees name="Colin Thorne" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/cssave-output.txt b/branches/cpp-M1/sdo/runtime/core/test/cssave-output.txt deleted file mode 100644 index 9490166774..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/cssave-output.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0004"><sdo:changeSummary xmlns:sdo="commonj.sdo"><create>#/departments.0/employees.2</create><delete>#/departments.0/employees.1</delete><create>#/departments.0/employees.3</create><create>#/departments.0/employees.4</create><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees sdo:ref="#/departments.0/employees.1"/></departments><company sdo:ref="#/" name="ACME" employeeOfTheMonth="#/departments.0/employees.1"/></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Jane Doe" SN="E0003"/><employees name="Al Smith" SN="E0004" manager="true"/><employees name="Bill Withers" SN="E0005"/><employees name="Mary Smith" SN="E0002" manager="true"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/cssave-output.xml b/branches/cpp-M1/sdo/runtime/core/test/cssave-output.xml deleted file mode 100644 index 9490166774..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/cssave-output.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0004"><sdo:changeSummary xmlns:sdo="commonj.sdo"><create>#/departments.0/employees.2</create><delete>#/departments.0/employees.1</delete><create>#/departments.0/employees.3</create><create>#/departments.0/employees.4</create><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees sdo:ref="#/departments.0/employees.1"/></departments><company sdo:ref="#/" name="ACME" employeeOfTheMonth="#/departments.0/employees.1"/></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Jane Doe" SN="E0003"/><employees name="Al Smith" SN="E0004" manager="true"/><employees name="Bill Withers" SN="E0005"/><employees name="Mary Smith" SN="E0002" manager="true"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/cssave2-output.txt b/branches/cpp-M1/sdo/runtime/core/test/cssave2-output.txt deleted file mode 100644 index cce98c2591..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/cssave2-output.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0005"><sdo:changeSummary xmlns:sdo="commonj.sdo"><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.1/employees.4</delete><delete>#/departments.1/employees.3</delete><delete>#/departments.1/employees.2</delete><delete>#/departments.1/employees.1</delete><delete>#/departments.1/employees.0</delete><delete>#/departments.1</delete><create>#/departments.0/employees.2</create><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Bridget Jones" SN="E0002" manager="true"/><employees name="Colin Thorne" SN="E0003" manager="false"/><employees name="Donald Trump" SN="E0004" manager="false"/><employees sdo:ref="#/departments.0/employees.1"/></departments><company sdo:ref="#/" name="Eastleigh Borough Council" employeeOfTheMonth=""><departments sdo:ref="#/departments.0"/><departments name="Tax Collection" location="Winchester" number="666"><employees name="Arch Meanie" SN="D0001" manager="false"/><employees name="Boris the Spider" SN="D0002" manager="true"/><employees name="Cash Hoarder" SN="D0003" manager="false"/><employees name="Dean Giyatoss" SN="D0004" manager="false"/><employees name="Ebenezer Scrooge" SN="D0005" manager="false"/></departments></company></sdo:changeSummary><departments name="Waste Disposal" location="Botley" number="123"><employees name="Alphonse Dodet" SN="E0001"/><employees name="Eddy the eagle" SN="E0005"/><employees name="Colin Thorne" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/cssave2-output.xml b/branches/cpp-M1/sdo/runtime/core/test/cssave2-output.xml deleted file mode 100644 index cce98c2591..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/cssave2-output.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="E0005"><sdo:changeSummary xmlns:sdo="commonj.sdo"><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.0/employees.1</delete><delete>#/departments.1/employees.4</delete><delete>#/departments.1/employees.3</delete><delete>#/departments.1/employees.2</delete><delete>#/departments.1/employees.1</delete><delete>#/departments.1/employees.0</delete><delete>#/departments.1</delete><create>#/departments.0/employees.2</create><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees name="Bridget Jones" SN="E0002" manager="true"/><employees name="Colin Thorne" SN="E0003" manager="false"/><employees name="Donald Trump" SN="E0004" manager="false"/><employees sdo:ref="#/departments.0/employees.1"/></departments><company sdo:ref="#/" name="Eastleigh Borough Council" employeeOfTheMonth=""><departments sdo:ref="#/departments.0"/><departments name="Tax Collection" location="Winchester" number="666"><employees name="Arch Meanie" SN="D0001" manager="false"/><employees name="Boris the Spider" SN="D0002" manager="true"/><employees name="Cash Hoarder" SN="D0003" manager="false"/><employees name="Dean Giyatoss" SN="D0004" manager="false"/><employees name="Ebenezer Scrooge" SN="D0005" manager="false"/></departments></company></sdo:changeSummary><departments name="Waste Disposal" location="Botley" number="123"><employees name="Alphonse Dodet" SN="E0001"/><employees name="Eddy the eagle" SN="E0005"/><employees name="Colin Thorne" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/datetest.txt b/branches/cpp-M1/sdo/runtime/core/test/datetest.txt deleted file mode 100644 index 3da923ea55..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/datetest.txt +++ /dev/null @@ -1,4 +0,0 @@ -Name of the company is DateTest -Set start of the company is 1000 -Review number:0 was:2000 -Review number:1 was:4000 diff --git a/branches/cpp-M1/sdo/runtime/core/test/defaults.txt b/branches/cpp-M1/sdo/runtime/core/test/defaults.txt deleted file mode 100644 index 1cdba8ea05..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/defaults.txt +++ /dev/null @@ -1,10 +0,0 @@ -Boolean default is true: 1 -Byte default is d: 100 -Character default is e: 101 -Short default is 300: 300 -Long default is 400: 400 -Expected index out of range OK -Float default is 600: 600.000 -LongDouble default is 700: 700.000 -String default is HELP: HELP -Bytes default is HELP: HELP diff --git a/branches/cpp-M1/sdo/runtime/core/test/doctest.txt b/branches/cpp-M1/sdo/runtime/core/test/doctest.txt deleted file mode 100644 index b08b52a605..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/doctest.txt +++ /dev/null @@ -1,2 +0,0 @@ -RootURI=companyNS -RootName=company diff --git a/branches/cpp-M1/sdo/runtime/core/test/doctest.xml b/branches/cpp-M1/sdo/runtime/core/test/doctest.xml deleted file mode 100644 index 9a865fc160..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/doctest.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - 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. - --> - -<company targetNameSpace="hghgh" xmlns="companyNS" name="MegaCorp" employeeOfTheMonth="#/departments.0/employees.1"> -<departments name="Advanced Technologies" location="NY" number="123"> -<employees name="John Jones" SN="E0001" /> -<employees name="Jane Doe" SN="E0003" /> -<employees name="Al Smith" SN="E0004" manager="true" /> -</departments> -</company>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/doctest.xsd b/branches/cpp-M1/sdo/runtime/core/test/doctest.xsd deleted file mode 100644 index a507785277..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/doctest.xsd +++ /dev/null @@ -1,44 +0,0 @@ - -<!-- - 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. - --> -<xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" -sdoxml:propertyType="company:EmployeeType"/> </xsd:complexType> - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/employee.xsd b/branches/cpp-M1/sdo/runtime/core/test/employee.xsd deleted file mode 100644 index d219afc522..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/employee.xsd +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> - -<xs:element name="employee" type="fullpersoninfo"/> - -<xs:complexType name="personinfo"> - <xs:sequence> - <xs:element name="firstname" type="xs:string"/> - <xs:element name="lastname" type="xs:string"/> - </xs:sequence> -</xs:complexType> - -<xs:complexType name="fullpersoninfo"> - <xs:complexContent> - <xs:extension base="personinfo"> - <xs:sequence> - <xs:element name="address" type="xs:string"/> - <xs:element name="city" type="xs:string"/> - <xs:element name="country" type="xs:string"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> -</xs:complexType> - -</xs:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/emptycs1.txt b/branches/cpp-M1/sdo/runtime/core/test/emptycs1.txt deleted file mode 100644 index 30b469181d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/emptycs1.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME" employeeOfTheMonth="E0002"><sdo:changeSummary xmlns:sdo="commonj.sdo"/><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees name="Jane Doe" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/emptycs1.xml b/branches/cpp-M1/sdo/runtime/core/test/emptycs1.xml deleted file mode 100644 index 30b469181d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/emptycs1.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME" employeeOfTheMonth="E0002"><sdo:changeSummary xmlns:sdo="commonj.sdo"/><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees name="Jane Doe" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/emptycs2.txt b/branches/cpp-M1/sdo/runtime/core/test/emptycs2.txt deleted file mode 100644 index 596c51091d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/emptycs2.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME" employeeOfTheMonth="E0002"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"/><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees name="Jane Doe" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/emptycs2.xml b/branches/cpp-M1/sdo/runtime/core/test/emptycs2.xml deleted file mode 100644 index 596c51091d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/emptycs2.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME" employeeOfTheMonth="E0002"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"/><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees name="Jane Doe" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/emptycs3.txt b/branches/cpp-M1/sdo/runtime/core/test/emptycs3.txt deleted file mode 100644 index 14e33b7c55..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/emptycs3.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME" employeeOfTheMonth="E0002"><sdo:changeSummary xmlns:sdo="commonj.sdo"><create>#/departments.0/employees.3</create><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees sdo:ref="#/departments.0/employees.1"/><employees sdo:ref="#/departments.0/employees.2"/></departments></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees name="Jane Doe" SN="E0003"/><employees name="Al Smith" SN="E0004" manager="true"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/emptycs3.xml b/branches/cpp-M1/sdo/runtime/core/test/emptycs3.xml deleted file mode 100644 index 14e33b7c55..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/emptycs3.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME" employeeOfTheMonth="E0002"><sdo:changeSummary xmlns:sdo="commonj.sdo"><create>#/departments.0/employees.3</create><departments sdo:ref="#/departments.0"><employees sdo:ref="#/departments.0/employees.0"/><employees sdo:ref="#/departments.0/employees.1"/><employees sdo:ref="#/departments.0/employees.2"/></departments></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="John Jones" SN="E0001"/><employees name="Mary Smith" SN="E0002" manager="true"/><employees name="Jane Doe" SN="E0003"/><employees name="Al Smith" SN="E0004" manager="true"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/error1.xml b/branches/cpp-M1/sdo/runtime/core/test/error1.xml deleted file mode 100644 index 16a32223ab..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/error1.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - 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. - --> - - <!-- This XML has an employee with an SN of nil, which should appear in the SDO as NULL - --> - <company xmlns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="#/departments.0/employees.1"> -<departments name="Advanced Technologies" location="NY" number="123"> -<employees> -<name>Jane Doe</name> -<SN xsi:nil="true" /> -</employees> -</departments> -</company>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/error1.xsd b/branches/cpp-M1/sdo/runtime/core/test/error1.xsd deleted file mode 100644 index ae8130189c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/error1.xsd +++ /dev/null @@ -1,45 +0,0 @@ - -<!-- - 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. - --> -<!-- This XSD recasts the properties of employee to elements in order to allow the SN property to be nillable --> -<xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" -sdoxml:propertyType="company:EmployeeType"/> </xsd:complexType> - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - <xsd:complexType name="EmployeeType"> - <xsd:element name="name" type="xsd:string"/> - <xsd:element name="SN" type="xsd:ID" nillable="true"/> - <xsd:element name="manager" type="xsd:boolean"/> - -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/extension.xsd b/branches/cpp-M1/sdo/runtime/core/test/extension.xsd deleted file mode 100644 index 247380ceba..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/extension.xsd +++ /dev/null @@ -1,54 +0,0 @@ - -<!-- - 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. - --> -<!-- - This example simplified version of W3C XML schema primer - with added UK postcode - http://www.w3.org/TR/xmlschema-0/#DerivExt - --> - - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="" > - - <complexType name="Address"> - <sequence> - <element name="name" type="string"/> - <element name="street" type="string"/> - <element name="city" type="string"/> - </sequence> - </complexType> - - <complexType name="USAddress"> - <complexContent> - <extension base="Address"> - <sequence> - <element name="zip" type="positiveInteger"/> - </sequence> - </extension> - </complexContent> - </complexType> - - <complexType name="UKAddress"> - <complexContent> - <extension base="Address"> - <sequence> - <element name="postcode" type="string"/> - </sequence> - </extension> - </complexContent> - </complexType> - -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/g/gCustomer.xsd b/branches/cpp-M1/sdo/runtime/core/test/g/gCustomer.xsd deleted file mode 100644 index 1671c987bf..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/g/gCustomer.xsd +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - xmlns:cust="customerNS" targetNamespace="customerNS"> - <element name="customer" type="cust:CustomerType"> - <complexType name="CustomerType"> - <sequence> - <element name="customerId" type="ID"/> - <element name="name" type="string"/> - <element name="shipping" type="cust:AddressType"> - <complexType name="AddressType"> - <element name="street" type="string"/> - <element name="city" type="string"/> - <element name="state" type="string"/> - <element name="zip" type="string"/> - </complexType> - </element> - <element name="payment" ref="cust:payment"/> - </sequence> - </complexType> - </element> - - <element name="payment" type="cust:PaymentType"> - <complexType name="PaymentType"> - <element name="paymentId" type="ID"/> - <element name="accountNo" type="string"/> - <element name="bank" type="string"/> - <element name="securityCode" type="string"/> - <element name="amount" type="float"/> - </complexType> - </element> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/g/gOrder.xml b/branches/cpp-M1/sdo/runtime/core/test/g/gOrder.xml deleted file mode 100644 index 7beea167d3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/g/gOrder.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<order xmlns="orderNS" xsi:type="OrderType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><orderId>1132323800</orderId><status>NONE</status><item><itemId>12</itemId><description>Drummers drumming</description><price>12.99</price><quantity>1</quantity><warehouseId>1</warehouseId></item><item><itemId>3</itemId><description>French Hens</description><price>3.99</price><quantity>2</quantity><warehouseId>1</warehouseId></item><customer xmlns="customerNS"><customerId>1</customerId><name>Graham Charters</name><shipping><street>24 Big Street</street><city>Big City</city><state>Big State</state><zip>Up Your Coat</zip></shipping><payment><accountNo>234234234243</accountNo><bank>Big</bank><securityCode>234</securityCode><amount>2.097e+001</amount></payment></customer></order> diff --git a/branches/cpp-M1/sdo/runtime/core/test/g/gOrder.xsd b/branches/cpp-M1/sdo/runtime/core/test/g/gOrder.xsd deleted file mode 100644 index d4e0ff832e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/g/gOrder.xsd +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" -xmlns:ord="orderNS" xmlns:cust="customerNS" targetNamespace="orderNS"> - - <include schemaLocation="./Customer.xsd"/> - - <element name="order" type="ord:OrderType"> - <complexType name="OrderType"> - <sequence> - <element name="orderId" type="ID"/> - <element name="status" type="ord:OrderStatus"/> - <element name="item" maxOccurs="unbounded" ref="ord:item"/> - <element ref="cust:customer"/> - </sequence> - </complexType> - </element> - - <element name="item"> - <complexType> - <element name="itemId" type="integer"/> - <element name="description" type="string"/> - <element name="price" type="string"/> - <element name="quantity" type="integer"/> - <element name="warehouseId" type="integer"/> - </complexType> - </element> - - <simpleType name="OrderStatus"> - <restriction base="string"> - <enumeration value="NONE"/> - <enumeration value="RECEIVED"/> - <enumeration value="INVOICED"/> - <enumeration value="DISPATCHED"/> - <enumeration value="COMPLETED"/> - <enumeration value="CANCELLED"/> - </restriction> - </simpleType> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/g3.xsd b/branches/cpp-M1/sdo/runtime/core/test/g3.xsd deleted file mode 100644 index c70d00aa43..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/g3.xsd +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> - <xs:element name="quotes"> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="quote"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="quote"> - <xs:complexType> - <xs:sequence> - <xs:element ref="phrase"/> - <xs:element ref="author"/> - </xs:sequence> - <xs:attribute name="year" use="required" type="xs:integer"/> - </xs:complexType> - </xs:element> - <xs:element name="phrase" type="xs:string"/> - <xs:element name="author" type="xs:string"/> -</xs:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/getproptest.txt b/branches/cpp-M1/sdo/runtime/core/test/getproptest.txt deleted file mode 100644 index f6bea1325d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/getproptest.txt +++ /dev/null @@ -1,8 +0,0 @@ -Companys name property is: name -Companys dept property is:departments -Departments empl property is:employees -Departments empl property is:employees -Employees name property is:name -Normal exception caught -Normal exception caught -Normal exception caught diff --git a/branches/cpp-M1/sdo/runtime/core/test/graham1.xsd b/branches/cpp-M1/sdo/runtime/core/test/graham1.xsd deleted file mode 100644 index dbab303cd7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/graham1.xsd +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> - <xs:element name="quotes"> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="quote"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="quote"> - <xs:complexType> - <xs:sequence> - <xs:element ref="phrase"/> - <xs:element ref="author"/> - </xs:sequence> - <xs:attribute name="year" use="required" type="xs:integer"/> - </xs:complexType> - </xs:element> - <xs:element name="phrase" type="xs:string"/> - <xs:element name="author" type="xs:string"/> -</xs:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/graham2.xsd b/branches/cpp-M1/sdo/runtime/core/test/graham2.xsd deleted file mode 100644 index 6c8f68beb7..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/graham2.xsd +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" -xmlns:quotes="quotesNS" targetNamespace="quotesNS"> -<xs:element name="quotes"> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="quote"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="quote" > - <xs:complexType> - <xs:sequence> - <xs:element name="phrase" type="xs:string"/> - <xs:element name="author" type="xs:string"/> - </xs:sequence> - <xs:attribute name="year" use="required" type="xs:integer"/> - </xs:complexType> - </xs:element> -</xs:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/graham3.xsd b/branches/cpp-M1/sdo/runtime/core/test/graham3.xsd deleted file mode 100644 index 9123233b43..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/graham3.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" -> -<!-- -xmlns:quotes="quotesNS" targetNamespace="quotesNS" ---> -<xs:element name="quotes"> - <xs:complexType> - <xs:sequence> - <xs:element name="quote" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="phrase" type="xs:string"/> - <xs:element name="author" type="xs:string"/> - </xs:sequence> - <xs:attribute name="year" use="required" type="xs:integer"/> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> -</xs:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/groupingroup.xsd b/branches/cpp-M1/sdo/runtime/core/test/groupingroup.xsd deleted file mode 100644 index dd13042e8a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/groupingroup.xsd +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.wrox.com/name" -xmlns:target="http://www.wrox.com/name" elementFormDefault="qualified"> - <group name="NameGroup"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - <group name="NameGroup2"> - <sequence> - <element name="first2" type="string"/> - <element name="middle2" type="string"/> - <element name="last2" type="string"/> - </sequence> - </group> - </sequence> - </group> - <element name="name"> - <complexType> - <group ref="NameGroup"/> - <group ref="NameGroup2"/> - <attribute name="title" type="string"/> - </complexType> - </element> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/groupingroup_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/groupingroup_xsd.txt deleted file mode 100644 index 7eba22a274..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/groupingroup_xsd.txt +++ /dev/null @@ -1,25 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/grouprefingroup.xsd b/branches/cpp-M1/sdo/runtime/core/test/grouprefingroup.xsd deleted file mode 100644 index d10195a4fd..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/grouprefingroup.xsd +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.wrox.com/name" -xmlns:target="http://www.wrox.com/name" elementFormDefault="qualified"> - <group name="NameGroup2"> - <sequence> - <element name="first2" type="string"/> - <element name="middle2" type="string"/> - <element name="last2" type="string"/> - </sequence> - </group> - <group name="NameGroup"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - <group ref="target:NameGroup2"/> - </sequence> - </group> - <element name="name"> - <complexType> - <group ref="target:NameGroup"/> - <attribute name="title" type="string"/> - </complexType> - </element> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/grouprefingroup_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/grouprefingroup_xsd.txt deleted file mode 100644 index f879c8adb2..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/grouprefingroup_xsd.txt +++ /dev/null @@ -1,29 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:first2 of type String -Property:middle2 of type String -Property:last2 of type String -Property:title of type String -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/grouptoolate.xsd b/branches/cpp-M1/sdo/runtime/core/test/grouptoolate.xsd deleted file mode 100644 index 3274282966..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/grouptoolate.xsd +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.wrox.com/name" -xmlns:target="http://www.wrox.com/name" elementFormDefault="qualified"> - <element name="name"> - <complexType> - <group ref="target:NameGroup"/> - <attribute name="title" type="string"/> - </complexType> - </element> - <group name="NameGroup"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - </sequence> - </group> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/grouptoolate_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/grouptoolate_xsd.txt deleted file mode 100644 index 81ccaee474..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/grouptoolate_xsd.txt +++ /dev/null @@ -1,26 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/groupwithprefix.xsd b/branches/cpp-M1/sdo/runtime/core/test/groupwithprefix.xsd deleted file mode 100644 index a2f5c5fd49..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/groupwithprefix.xsd +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.wrox.com/name" -xmlns:target="http://www.wrox.com/name" elementFormDefault="qualified"> - <group name="NameGroup"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - </sequence> - </group> - <element name="name"> - <complexType> - <group ref="target:NameGroup"/> - <attribute name="title" type="string"/> - </complexType> - </element> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/groupwithprefix_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/groupwithprefix_xsd.txt deleted file mode 100644 index 81ccaee474..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/groupwithprefix_xsd.txt +++ /dev/null @@ -1,26 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:name of type name -Type:http://www.wrox.com/name#name -Property:first of type String -Property:middle of type String -Property:last of type String -Property:title of type String -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/groupwrongname.xsd b/branches/cpp-M1/sdo/runtime/core/test/groupwrongname.xsd deleted file mode 100644 index c30bc45421..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/groupwrongname.xsd +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.wrox.com/name" -xmlns:target="http://www.wrox.com/name" elementFormDefault="qualified"> - <group name="NoNameGroup"> - <sequence> - <element name="first" type="string"/> - <element name="middle" type="string"/> - <element name="last" type="string"/> - </sequence> - </group> - <element name="name"> - <complexType> - <group ref="target:NameGroup"/> - <attribute name="title" type="string"/> - </complexType> - </element> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/inc1.txt b/branches/cpp-M1/sdo/runtime/core/test/inc1.txt deleted file mode 100644 index bf517ec394..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/inc1.txt +++ /dev/null @@ -1,22 +0,0 @@ -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://example.org/Calculator#RootType -Type:http://example.org/CalculatorTypes#AddArguments -Property:a -Property:b -Type:http://example.org/CalculatorTypes#RootType diff --git a/branches/cpp-M1/sdo/runtime/core/test/inc2.txt b/branches/cpp-M1/sdo/runtime/core/test/inc2.txt deleted file mode 100644 index ac4a97479f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/inc2.txt +++ /dev/null @@ -1,21 +0,0 @@ -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://example.org/Calculator#AddArguments -Property:a -Property:b -Type:http://example.org/Calculator#RootType diff --git a/branches/cpp-M1/sdo/runtime/core/test/include.xsd b/branches/cpp-M1/sdo/runtime/core/test/include.xsd deleted file mode 100644 index 8e89ef40ec..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/include.xsd +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:include schemaLocation = "include1.xsd"/> - <xsd:include schemaLocation = "./include2.xsd"/> - <xsd:include schemaLocation = "../test/test/include3.xsd"/> - - - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/include1.xsd b/branches/cpp-M1/sdo/runtime/core/test/include1.xsd deleted file mode 100644 index 65f71c48a6..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/include1.xsd +++ /dev/null @@ -1,34 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/include2.xsd b/branches/cpp-M1/sdo/runtime/core/test/include2.xsd deleted file mode 100644 index 329fd17761..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/include2.xsd +++ /dev/null @@ -1,33 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/includeother3.xsd b/branches/cpp-M1/sdo/runtime/core/test/includeother3.xsd deleted file mode 100644 index b6ec93f0ba..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/includeother3.xsd +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/list1.xml b/branches/cpp-M1/sdo/runtime/core/test/list1.xml deleted file mode 100644 index 449a9e8b8b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/list1.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<listtest - xmlns="http://www.wrox.com/name" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance" - xsi:schemaLocation="http://www.wrox.com/name name.xsd"> - <integers>1 2 3 4 5 6 7 8 9</integers> - <strings> - This -is a strange - set of strings - </strings> -</listtest> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/list1.xsd b/branches/cpp-M1/sdo/runtime/core/test/list1.xsd deleted file mode 100644 index c702cb47c8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/list1.xsd +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0"?> -<!-- - 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. - --> - -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.wrox.com/name" - xmlns:tns="http://www.wrox.com/name"> - -<xs:element name="listtest" type="listTestType"/> -<xs:complexType name="listTestType"> - <xs:element name="integers" type="intListType"/> - <xs:element name="strings" type="stringListType"/> -</xs:complexType> - -<xs:simpleType name="intListType"> - <xs:list itemType="xs:integer"/> -</xs:simpleType> - -<xs:simpleType name="stringListType"> - <xs:list itemType="xs:string"/> -</xs:simpleType> - -</xs:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/list1_xml.txt b/branches/cpp-M1/sdo/runtime/core/test/list1_xml.txt deleted file mode 100644 index ddf8e8ac22..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/list1_xml.txt +++ /dev/null @@ -1,70 +0,0 @@ -***** TYPES AFTER RESOLVE********************************* -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:listtest of type listTestType -Type:http://www.wrox.com/name#intListType -Property:values (many) of type Integer -Type:http://www.wrox.com/name#listTestType -Property:integers (many) of type intListType -Property:strings (many) of type stringListType -Type:http://www.wrox.com/name#stringListType -Property:values (many) of type String -*******************************END TYPES****************** -===== DataObject contents ===== -integers: list dataObject[0]= -===== DataObject contents ===== -values: list integer[0]=1 - -integer[1]=2 - -integer[2]=3 - -integer[3]=4 - -integer[4]=5 - -integer[5]=6 - -integer[6]=7 - -integer[7]=8 - -integer[8]=9 - -===== End DataObject ===== - -strings: list dataObject[0]= -===== DataObject contents ===== -values: list string[0]=This - -string[1]=is - -string[2]=a - -string[3]=strange - -string[4]=set - -string[5]=of - -string[6]=strings - -===== End DataObject ===== - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/list1_xsd.txt b/branches/cpp-M1/sdo/runtime/core/test/list1_xsd.txt deleted file mode 100644 index 2adeaf3a7c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/list1_xsd.txt +++ /dev/null @@ -1,28 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://www.wrox.com/name#RootType -Property:listtest of type listTestType -Type:http://www.wrox.com/name#intListType -Property:values (many) of type Integer -Type:http://www.wrox.com/name#listTestType -Property:integers (many) of type intListType -Property:strings (many) of type stringListType -Type:http://www.wrox.com/name#stringListType -Property:values (many) of type String -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/loadload-output.txt b/branches/cpp-M1/sdo/runtime/core/test/loadload-output.txt deleted file mode 100644 index a6df48b1be..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/loadload-output.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><create>#/departments.0/employees.0/opendataobjectlist.0</create><create>#/departments.0/employees.0/opendataobject</create><create>#/departments.0/employees.0</create></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="Albert" SN="E0001" openstring="Value Of Open String" openboolean="true"><openintlist>45</openintlist><opendataobjectlist xsi:type="OpenType" name="MyOpenName"/><opendataobject xsi:type="OpenType" name="MyOpenName"/></employees><employees name="Boris" SN="E0002" manager="true"/><employees name="Carl" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/loadload-output.xml b/branches/cpp-M1/sdo/runtime/core/test/loadload-output.xml deleted file mode 100644 index a6df48b1be..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/loadload-output.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><create>#/departments.0/employees.0/opendataobjectlist.0</create><create>#/departments.0/employees.0/opendataobject</create><create>#/departments.0/employees.0</create></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="Albert" SN="E0001" openstring="Value Of Open String" openboolean="true"><openintlist>45</openintlist><opendataobjectlist xsi:type="OpenType" name="MyOpenName"/><opendataobject xsi:type="OpenType" name="MyOpenName"/></employees><employees name="Boris" SN="E0002" manager="true"/><employees name="Carl" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/main.cpp b/branches/cpp-M1/sdo/runtime/core/test/main.cpp deleted file mode 100644 index b95587b7f3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/main.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/* - * - * 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: main.cpp,v 1.1 2006/03/16 10:54:16 slattery Exp $ */ - -#include <stdio.h> - -#pragma warning(disable:4786) - -#include <iostream> -using namespace std; - -#include "sdotest.h" - -extern "C"{ - -#define TEST(testname)\ - value = testname;\ - if (value == 0) {\ - cout << "Test Failed:" << totaltests << endl;\ - }\ - testspassed += value;\ - totaltests++; - -int main (int argc, char** argv) -{ - //Logger::setLogging(20); - - int testspassed=0; - int totaltests=0; - int value = 0; - - /* TEST ( sdotest::xhtml1() ); */ - TEST ( sdotest::scopetest() ); - TEST ( sdotest::xsdtosdo() ); - - /* groups now supported*/ - TEST ( sdotest::testany("list1.xsd",0,"list1.xml", 0) ); - TEST ( sdotest::testany("b48636.xsd",0,"b48636.xml", 0) ); - TEST ( sdotest::testany("groupwithprefix.xsd", 0, 0, 0) ); - TEST ( sdotest::testany("groupwrongname.xsd","Use of undefined group NameGroup", 0, 0) ); - - // late definition of group now supported - TEST ( sdotest::testany("grouptoolate.xsd",0 , 0, 0) ); - - // group definition within group now ignored - - TEST ( sdotest::testany("groupingroup.xsd","Use of undefined group NameGroup2",0, 0) ); - TEST ( sdotest::testany("grouprefingroup.xsd",0,0, 0) ); - TEST ( sdotest::testany("bothgroups.xsd",0,0, 0) ); - TEST ( sdotest::testany("bothgroupssamename.xsd",0,0, 0) ); - - /* general tests */ - TEST ( sdotest::pete() ); - TEST ( sdotest::stocktest() ); - TEST ( sdotest::definetest() ); - TEST ( sdotest::emptycs() ); - TEST ( sdotest::openseq() ); - TEST ( sdotest::testanytwo("b48633b.xsd","b48633.xsd","b48633.xml") ); - TEST ( sdotest::testany("b48686.xsd",0, "b48686.xml", 0) ); - TEST ( sdotest::testany("b48636.xsd","Use of undefined group NameGroup","b48636.xml", 0) ); - TEST ( sdotest::b48602() ); - TEST ( sdotest::compatiblefactory() ); - TEST ( sdotest::simple() ); - TEST ( sdotest::testOrder("employee.xsd","extension.xsd","order1.dat","order1.txt") ); - TEST ( sdotest::testOrder("extension.xsd","employee.xsd","order2.dat","order2.txt") ); - TEST ( sdotest::testOpen() ); - TEST ( sdotest::testinc2("calculator2.wsdl","inc1.dat","inc1.txt") ); - TEST ( sdotest::testinc2("calculator2a.wsdl","inc2.dat","inc2.txt") ); - TEST ( sdotest::teststyles() ); - TEST ( sdotest::badelement() ); - TEST ( sdotest::oddchars() ); - TEST ( sdotest::notns() ); - TEST ( sdotest::unsetlist() ); - TEST ( sdotest::travel() ); - /*TEST ( sdotest::testwsdl() );*/ - TEST ( sdotest::bunique() ); - TEST ( sdotest::buniqueread() ); - TEST ( sdotest::propdefaulttest() ); - TEST ( sdotest::graham5() ); - TEST ( sdotest::graham4() ); - TEST ( sdotest::detachtest() ); - TEST ( sdotest::includetest() ); - TEST ( sdotest::testLoad() ); - TEST ( sdotest::leak() ); - TEST ( sdotest::twolists() ); - TEST ( sdotest::testUtil() ); - TEST ( sdotest::clonetest() ); - TEST ( sdotest::notfound() ); - TEST ( sdotest::testErrors() ); - TEST ( sdotest::loadManyOpen() ); - TEST ( sdotest::doctest() ); - TEST ( sdotest::graham3() ); - TEST ( sdotest::graham1() ); - TEST ( sdotest::graham2() ); - TEST ( sdotest::merle1() ); - TEST ( sdotest::loadOpenNS() ); - TEST ( sdotest::saveOpen() ); - TEST ( sdotest::loadOpen() ); - TEST ( sdotest::testui() ); - TEST ( sdotest::testSCA() ); - TEST ( sdotest::testabstract() ); - TEST ( sdotest::testsubsload() ); - TEST ( sdotest::testsubs() ); - TEST ( sdotest::setnull() ); - TEST ( sdotest::bug2() ); - TEST ( sdotest::cssave2() ); - TEST ( sdotest::csload2() ); - TEST ( sdotest::cssave() ); - TEST ( sdotest::csload() ); - TEST ( sdotest::bug1() ); - TEST ( sdotest::eqhelpertest() ); - TEST ( sdotest::cohelpertest() ); - TEST ( sdotest::datetest() ); - TEST ( sdotest::carotest3() ); - TEST ( sdotest::matttest1() ); - TEST ( sdotest::adddeletetest() ); - TEST ( sdotest::carotest2() ); - TEST ( sdotest::carotest() ); - TEST ( sdotest::setmany() ); - TEST ( sdotest::noncontest() ); - TEST ( sdotest::versiontest() ); - TEST ( sdotest::defaulttest() ); - TEST ( sdotest::defaulttest_strobj() ); - TEST ( sdotest::nulltest() ); - TEST ( sdotest::usertest() ); - TEST ( sdotest::querytest() ); - TEST ( sdotest::getproptest() ); - TEST ( sdotest::rcptest() ); - TEST ( sdotest::seqtest() ); - TEST ( sdotest::changesummarytest() ); - TEST ( sdotest::conversiontest() ); - TEST ( sdotest::boolbug() ); - TEST ( sdotest::scope1() ); - TEST ( sdotest::scope2() ); - TEST ( sdotest::scope3() ); - TEST ( sdotest::maintest() ); - - /* regression tests */ - TEST ( sdotest::b48736() ); - /*TEST ( sdotest::b48601() );*/ - TEST ( sdotest::b47293() ); - TEST ( sdotest::b48300() ); - TEST ( sdotest::b47663() ); - TEST ( sdotest::b47802() ); - TEST ( sdotest::b47137() ); - TEST ( sdotest::b47137b() ); - TEST ( sdotest::b46633() ); - TEST ( sdotest::b46693() ); - /* TEST ( sdotest::b46734() ); */ - TEST ( sdotest::b46634() ); - TEST ( sdotest::b46617b() ); - TEST ( sdotest::b46617() ); - TEST ( sdotest::b46613() ); - TEST ( sdotest::b45933() ); - - cout << "Total tests:" << totaltests << " Tests passed:" << testspassed << endl; - -return 0; -} -} diff --git a/branches/cpp-M1/sdo/runtime/core/test/maintest.txt b/branches/cpp-M1/sdo/runtime/core/test/maintest.txt deleted file mode 100644 index 860a763eb5..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/maintest.txt +++ /dev/null @@ -1,188 +0,0 @@ -Test Program starting to create types ... -Manager is sequenced?1 -Manager is sequenced?1 -Manager is sequenced?1 -Manager is sequenced?1 -Manager is sequenced?1 -Manager is sequenced?1 -Manager is sequenced?1 -Should be Company :Company -Should be 3: 3 -Alias: TheFirm -Alias: TheBigFirm -Alias: TheLittleFirm -Manager is sequenced?1 -BEFORE RESOLUTION -Printing Types -Type BigDecimal -Type BigInteger -Type Boolean -Type Byte -Type Bytes -Type ChangeSummary -Type Character -Type DataObject -Type Date -Type Double -Type Float -Type Integer -Type Long -Type OpenDataObject -Type Short -Type String -Type URI -Type Company -Has Property name of type String -Has Property address of type String -Has Property departments of type Department -Has Property employee of the month of type Employee -Has Property floatlist of type Float -Has Property pdg of type Manager -Has Property shareholder of type Person -Has Property substring of type DerivedString -Has Property subdepartments of type SubDepartment -Type Department -Has Property name of type String -Has Property id of type Integer -Has Property manager of type Manager -Has Property employees of type Employee -Type DerivedString -Type Employee -Has Property name of type String -Has Property cubelocation of type String -Type Manager -Has Property name of type String -Has Property officeid of type String -Has Property string of type String -Has Property boolean of type Boolean -Has Property byte of type Byte -Has Property character of type Character -Has Property short of type Short -Has Property long of type Integer -Has Property longlong of type Long -Has Property float of type Float -Has Property longdouble of type Double -Has Property date of type Date -Has Property string of type String -Has Property bytes of type Bytes -Type Person -Has Property haircolour of type String -Has Property name of type String -Type SubDepartment -Has Property subname of type String -AFTER RESOLUTION -Printing Types -Type BigDecimal -Type BigInteger -Type Boolean -Type Byte -Type Bytes -Type ChangeSummary -Type Character -Type DataObject -Type Date -Type Double -Type Float -Type Integer -Type Long -Type OpenDataObject -Type Short -Type String -Type URI -Type Company -Has Property name of type String -Has Property address of type String -Has Property departments of type Department -Has Property employee of the month of type Employee -Has Property floatlist of type Float -Has Property pdg of type Manager -Has Property shareholder of type Person -Has Property substring of type DerivedString -Has Property subdepartments of type SubDepartment -Type Department -Has Property name of type String -Has Property id of type Integer -Has Property manager of type Manager -Has Property employees of type Employee -Type DerivedString -Type Employee -Has Property haircolour of type String -Has Property name of type String -Has Property name of type String -Has Property cubelocation of type String -Type Manager -Has Property haircolour of type String -Has Property name of type String -Has Property name of type String -Has Property officeid of type String -Has Property string of type String -Has Property boolean of type Boolean -Has Property byte of type Byte -Has Property character of type Character -Has Property short of type Short -Has Property long of type Integer -Has Property longlong of type Long -Has Property float of type Float -Has Property longdouble of type Double -Has Property date of type Date -Has Property string of type String -Has Property bytes of type Bytes -Type Person -Has Property haircolour of type String -Has Property name of type String -Type SubDepartment -Has Property name of type String -Has Property id of type Integer -Has Property manager of type Manager -Has Property employees of type Employee -Has Property subname of type String -Manager is sequenced?1 -This is the sub string - its primitive, but not a string -acmecorp -acmecorp -Expected default boolean (false) : false -Expected boolean (true) : true -Expected default string (0) : Now able to set - - should say now able to set - - Name from deleted item: Now able to set -0xffffffffffffffff = : -1 -0x7fffffffffffffff = 9223372036854775807 -0x7fffffff = 2147483647 -0x80000000 = 2147483648 - Expected Wide - got : Wide - Expected Thin - got : Thin -Expecting string, got Wide -Expected bool true, got 1 -Expected char 23, got 23 -expected wchar 45, got 45Expected short 34, got 34 -Expected long 56 , got 56 -Expected long long 78, got 78 -Expected long double 89, got 89.000 -Expected float 90, got 90.000 -Expected time_t 200, got 200 -Wide[0]=87 -Wide[1]=105 -Wide[2]=100 -Wide[3]=101 -Thin[0]=84 -Thin[1]=104 -Thin[2]=105 -Thin[3]=110 -1.400567.700Should be Bill:Bill -Should be Bill:Bill -The employee of the month is Bill -Now able to set -pdg correctly identified -Now able to set -size of list 5 -Research And Development -Research And Development -Department: Research And Development -Department: Marketing -Department: Architecture -Department: Pyrotechnics -Department: Accounts -Normal expected exception -Normal Invalid path exception -Normal SDOPropertyNotFound exception diff --git a/branches/cpp-M1/sdo/runtime/core/test/many.xml b/branches/cpp-M1/sdo/runtime/core/test/many.xml deleted file mode 100644 index 15be354bf3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/many.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"> -<sdo:changeSummary xmlns:sdo="commonj.sdo"> -<create>#/departments.0/employees.0</create> -</sdo:changeSummary> -<departments name="Advanced Technologies" location="NY" number="123"> -<employees name="Albert" SN="E0001" > -<openlist>Three member</openlist> -<openlist>Open bytes</openlist> -<openlist>List is complete</openlist> -</employees><employees name="Boris" SN="E0002" manager="true"/> -<employees name="Carl" SN="E0003"/> -</departments> -</company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/many.xsd b/branches/cpp-M1/sdo/runtime/core/test/many.xsd deleted file mode 100644 index 40243b7b8d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/many.xsd +++ /dev/null @@ -1,17 +0,0 @@ - -<!-- - 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. - --> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns="companyNS" targetNamespace="companyNS"><xsd:element name="companyType" type="tns:CompanyType"/><xsd:complexType name="CompanyType" sdo:aliasName="TheFirm TheBigFirm"><xsd:sequence><xsd:element name="departments" type="tns:DepartmentType" minOccurs="0" maxOccurs="unbounded" sdo:aliasName="TheDepartments MYDepartments"/></xsd:sequence><xsd:element name="changeSummary" type="sdo:ChangeSummaryType"/><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="employeeOfTheMonth" sdoxml:propertyType="tns:EmployeeType" type="xsd:anyURI"/></xsd:complexType><xsd:element name="departmentType" type="tns:DepartmentType"/><xsd:complexType name="DepartmentType"><xsd:sequence><xsd:element name="employees" type="tns:EmployeeType" minOccurs="0" maxOccurs="unbounded"/></xsd:sequence><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="location" type="xsd:String"/><xsd:attribute name="number" type="xsd:String"/></xsd:complexType><xsd:element name="employeeType" type="tns:EmployeeType"/><xsd:complexType name="EmployeeType"><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="SN" type="xsd:String"/><xsd:attribute name="manager" type="xsd:boolean"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/><xsd:anyAttribute namespace="##any" processContents="lax"/></xsd:complexType><xsd:element name="openType" type="tns:OpenType"/><xsd:complexType name="OpenType"><xsd:attribute name="name" type="xsd:String"/></xsd:complexType></xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/matttest1.txt b/branches/cpp-M1/sdo/runtime/core/test/matttest1.txt deleted file mode 100644 index 5c5200ff22..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/matttest1.txt +++ /dev/null @@ -1,2 +0,0 @@ -Container of Billy should be dept1, and is :Shoe -Container of Billy should be dept2, and is :IT diff --git a/branches/cpp-M1/sdo/runtime/core/test/merle1.txt b/branches/cpp-M1/sdo/runtime/core/test/merle1.txt deleted file mode 100644 index f0eae645b6..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/merle1.txt +++ /dev/null @@ -1,10 +0,0 @@ -<SubscriptionId>I am the subscription ID string</SubscriptionId> -<AssociateTag>I am the associate Tag string</AssociateTag> -<XMLEscaping>I am the XML escaping string</XMLEscaping> -<Validate>I am the Validate string</Validate> -DataObject "Shared" as XML: -<Shared xmlns="axis" xsi:type="ItemSearchRequest" xmlns:tns="axis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Keywords>SharedKeywordsString</Keywords><SearchIndex>SearchIndexString</SearchIndex></Shared> - -DataObject "Request" as XML: -<Request xmlns="axis" xsi:type="ItemSearchRequest" xmlns:tns="axis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Keywords>RequestKeywords</Keywords><SearchIndex>RequestSearchIndex</SearchIndex></Request> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/my-core.xsd b/branches/cpp-M1/sdo/runtime/core/test/my-core.xsd deleted file mode 100644 index 9bc25a10fb..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/my-core.xsd +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - - - <complexType name="Component"> - <sequence> - <element minOccurs="1" maxOccurs="1" ref="sca:implementation"/> - </sequence> - </complexType> - - <element name="implementation" type="sca:Implementation"/> - <complexType name="Implementation"/> - - - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/my-implementation-local-java.xsd b/branches/cpp-M1/sdo/runtime/core/test/my-implementation-local-java.xsd deleted file mode 100644 index a31c3f6593..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/my-implementation-local-java.xsd +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="my-core.xsd"/> - - <element name="implementation.local.java" type="sca:LocalJavaImplementation" substitutionGroup="sca:implementation" sdo:name="implementationLocalJava"/> - <complexType name="LocalJavaImplementation"> - <complexContent> - <extension base="sca:Implementation"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="class" type="NCName" use="required"/> - <attribute name="scope" type="sca:Scope" use="optional"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> - -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/my.xsd b/branches/cpp-M1/sdo/runtime/core/test/my.xsd deleted file mode 100644 index 9d39e03f47..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/my.xsd +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/"> - - <include schemaLocation="my-core.xsd"/> - - <include schemaLocation="my-implementation-local-java.xsd"/> - - -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/notns.txt b/branches/cpp-M1/sdo/runtime/core/test/notns.txt deleted file mode 100644 index a6f2bc0411..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/notns.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<root xsi:type="Root" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><list/><list/><list/></root> diff --git a/branches/cpp-M1/sdo/runtime/core/test/notns.xml b/branches/cpp-M1/sdo/runtime/core/test/notns.xml deleted file mode 100644 index a6f2bc0411..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/notns.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<root xsi:type="Root" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><list/><list/><list/></root> diff --git a/branches/cpp-M1/sdo/runtime/core/test/nulltest.txt b/branches/cpp-M1/sdo/runtime/core/test/nulltest.txt deleted file mode 100644 index 01442ec949..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/nulltest.txt +++ /dev/null @@ -1,91 +0,0 @@ -Initially - all properties unset, and default values... -boolean set:0 value false -byte set:0 value 0 -character set:0 value 0 -short set:0 value 0 -long set:0 value 0 -longlong set:0 value -float set:0 value -longdouble set:0 value -date set:0 value -string set:0 value -bytes set:0 value -object set: 0 value: is empty -Should now have all properties set, and zero values... -boolean set:1 value:false -byte set:1 value:0 -character set:1 value:0 -short set:1 value:0 -long set:1 value:0 -longlong set:1 value:0 -float set:1 value:0.000e+000 -longdouble set:1 value:0.000e+000 -date set:1 value:0 -string set:1 value: -bytes set:1 value: -object set:1 dataobject -Should be back to having properties unset, and default values... -boolean set:0 value:false -byte set:0 value:0 -character set:0 value:0 -short set:0 value:0 -long set:0 value:0 -longlong set:0 value: -float set:0 value: -longdouble set:0 value: -date set:0 value: -string set:0 value: -bytes set:0 value: -object set: 0 dataobject is empty -boolean set:1 value:false -byte set:1 value:0 -character set:1 value:0 -short set:1 value:0 -long set:1 value:0 -longlong set:1 value:0 -float set:1 value:0.000e+000 -longdouble set:1 value:0.000e+000 -date set:0 value: -string set:1 value: -bytes set:1 value: -object set:1 dataobject is empty -Modified dataobject -Should all be null, and default values... -boolean isNull:1 set:1 value: -byte isNull:1 set:1 value: -character isNull:1 set:1 value: -short isNull:1 set:1 value: -long isNull:1 set:1 value: -longlong isNull:1 set:1 value: -float isNull:1 set:1 value: -longdouble isNull:1 set:1 value: -date isNull:1 set:1 value: -string isNull:1 set:1 value: -bytes isNull:1 set:1 value: -object isNull:1 set:1 value empty -Should all have values, and not be null.. -boolean isNull:0 set:1 value:true -byte isNull:0 set:1 value:1 -character isNull:0 set:1 value:1 -short isNull:0 set:1 value:1 -long isNull:0 set:1 value:1 -longlong isNull:0 set:1 value:1 -float isNull:0 set:1 value:1.000e+000 -longdouble isNull:0 set:1 value:1.000e+000 -date isNull:1 set:1 value: -string isNull:0 set:1 value:hello -bytes isNull:0 set:1 value:hello -object isNull0 set:1 value: dataobject -Should all be null, and default values... -boolean isNull:1 set:1 value: -byte isNull:1 set:1 value: -character isNull:1 set:1 value: -short isNull:1 set:1 value: -long isNull:1 set:1 value: -longlong isNull:1 set:1 value: -float isNull:1 set:1 value: -longdouble isNull:1 set:1 value: -date isNull:1 set:1 value: -string isNull:1 set:1 value: -bytes isNull:1 set:1 value: -object isNull;1 set:1 value: empty diff --git a/branches/cpp-M1/sdo/runtime/core/test/oddchars.txt b/branches/cpp-M1/sdo/runtime/core/test/oddchars.txt deleted file mode 100644 index b9ed9643b3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/oddchars.txt +++ /dev/null @@ -1,22 +0,0 @@ -===== DataObject contents ===== -Flight: list dataObject[0]= -===== DataObject contents ===== -Departure:string:ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╔╩╦╠═╬¤ðÐÊËÈıÍÎÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´±‗¾¶§÷¸°¨·¹³²■ - -Arrival:string:Pound:£ Dollar:$ Euro:Ç or █ - -flightNo:string:BA243 - -===== End DataObject ===== - -Hotel: list (empty) -Excursion:dataObject - - null or unset - -Client:dataObject - - null or unset - -Party:dataObject - - null or unset - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/openloadNS.xml b/branches/cpp-M1/sdo/runtime/core/test/openloadNS.xml deleted file mode 100644 index b0b7bc638f..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/openloadNS.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tp="teapot" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"> -<sdo:changeSummary xmlns:sdo="commonj.sdo"> -<create>#/departments.0/employees.0</create> -</sdo:changeSummary> -<departments name="Advanced Technologies" location="NY" number="123"> -<employees name="Albert" SN="E0001" tp:openstring="Value Of Open String" tp:openboolean="true"> -<tp:openintlist>45</tp:openintlist> -</employees> -<employees name="Boris" SN="E0002" manager="true"/> -<employees name="Carl" SN="E0003"/> -</departments> -</company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/openloadNS.xsd b/branches/cpp-M1/sdo/runtime/core/test/openloadNS.xsd deleted file mode 100644 index 5d39e6488d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/openloadNS.xsd +++ /dev/null @@ -1,49 +0,0 @@ - -<!-- - 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. - --> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" -xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" -xmlns:tns="companyNS" targetNamespace="companyNS"> -<xsd:element name="companyType" type="tns:CompanyType"/> -<xsd:complexType name="CompanyType" sdo:aliasName="TheFirm TheBigFirm"> -<xsd:sequence> -<xsd:element name="departments" type="tns:DepartmentType" minOccurs="0" maxOccurs="unbounded" sdo:aliasName="TheDepartments MYDepartments"/> -</xsd:sequence> -<xsd:element name="changeSummary" type="sdo:ChangeSummaryType"/> -<xsd:attribute name="name" type="xsd:String"/> -<xsd:attribute name="employeeOfTheMonth" sdoxml:propertyType="tns:EmployeeType" type="xsd:anyURI"/> -</xsd:complexType><xsd:element name="departmentType" type="tns:DepartmentType"/> -<xsd:complexType name="DepartmentType"> -<xsd:sequence> -<xsd:element name="employees" type="tns:EmployeeType" minOccurs="0" maxOccurs="unbounded"/> -</xsd:sequence> -<xsd:attribute name="name" type="xsd:String"/> -<xsd:attribute name="location" type="xsd:String"/> -<xsd:attribute name="number" type="xsd:String"/> -</xsd:complexType> -<xsd:element name="employeeType" type="tns:EmployeeType"/> -<xsd:complexType name="EmployeeType"> -<xsd:attribute name="name" type="xsd:String"/> -<xsd:attribute name="SN" type="xsd:String"/> -<xsd:attribute name="manager" type="xsd:boolean"/> -<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> -<xsd:anyAttribute namespace="##any" processContents="lax"/> -</xsd:complexType> -<xsd:element name="openType" type="tns:OpenType"/> -<xsd:complexType name="OpenType"> -<xsd:attribute name="name" type="xsd:String"/> -</xsd:complexType> -</xsd:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/openloadNS2.xml b/branches/cpp-M1/sdo/runtime/core/test/openloadNS2.xml deleted file mode 100644 index 16670a8b65..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/openloadNS2.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tp="twilbur" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"> -<sdo:changeSummary xmlns:sdo="commonj.sdo"> -<create>#/departments.0/employees.0</create> -</sdo:changeSummary> -<departments name="Advanced Technologies" location="NY" number="123"> -<employees name="Albert" SN="E0001" tp:openstring="Value Of Open String" tp:openboolean="true"> -<tp:openintlist>45</tp:openintlist> -</employees> -<employees name="Boris" SN="E0002" manager="true"/> -<employees name="Carl" SN="E0003"/> -</departments> -</company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/openloadNS2.xsd b/branches/cpp-M1/sdo/runtime/core/test/openloadNS2.xsd deleted file mode 100644 index 34f5fd05ff..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/openloadNS2.xsd +++ /dev/null @@ -1,24 +0,0 @@ - -<!-- - 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. - --> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" -xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" -xmlns:tns="teapot" targetNamespace="teapot"> -<xsd:attribute name="openboolean" type="xsd:boolean"/> -<xsd:element name="openintlist" type="xsd:short" minOccurs="0" maxOccurs="unbounded"/> -<xsd:attribute name="openstring" type="xsd:hexBinary"/> -</xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/openloadNSout.txt b/branches/cpp-M1/sdo/runtime/core/test/openloadNSout.txt deleted file mode 100644 index 742842bd3e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/openloadNSout.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><create>#/departments.0/employees.0</create></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="Albert" SN="E0001" openstring="Value Of Open String" openboolean="true"><openintlist>45</openintlist></employees><employees name="Boris" SN="E0002" manager="true"/><employees name="Carl" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/openloadNSout.xml b/branches/cpp-M1/sdo/runtime/core/test/openloadNSout.xml deleted file mode 100644 index 742842bd3e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/openloadNSout.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"><sdo:changeSummary xmlns:sdo="commonj.sdo" logging="true"><create>#/departments.0/employees.0</create></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="Albert" SN="E0001" openstring="Value Of Open String" openboolean="true"><openintlist>45</openintlist></employees><employees name="Boris" SN="E0002" manager="true"/><employees name="Carl" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/openseq.txt b/branches/cpp-M1/sdo/runtime/core/test/openseq.txt deleted file mode 100644 index 44091f2608..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/openseq.txt +++ /dev/null @@ -1,3 +0,0 @@ -Open Type string value: Value Of Open String -Open Sequenced string value: Value of sequenced string -Open Sequenced string value from seq: Value of sequenced string diff --git a/branches/cpp-M1/sdo/runtime/core/test/order1.txt b/branches/cpp-M1/sdo/runtime/core/test/order1.txt deleted file mode 100644 index 4f46cbfecf..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/order1.txt +++ /dev/null @@ -1,19 +0,0 @@ -Type:#Address -Property:name -Property:street -Property:city -Type:#RootType -Property:employee -Type:#UKAddress -Property:value -Property:postcode -Type:#USAddress -Property:value -Property:zip -Type:#fullpersoninfo -Property:address -Property:city -Property:country -Type:#personinfo -Property:firstname -Property:lastname diff --git a/branches/cpp-M1/sdo/runtime/core/test/order2.txt b/branches/cpp-M1/sdo/runtime/core/test/order2.txt deleted file mode 100644 index ec01027ebb..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/order2.txt +++ /dev/null @@ -1,20 +0,0 @@ -Type:#Address -Property:name -Property:street -Property:city -Type:#RootType -Property:employee -Type:#UKAddress -Property:value -Property:postcode -Type:#USAddress -Property:value -Property:zip -Type:#fullpersoninfo -Property:value -Property:address -Property:city -Property:country -Type:#personinfo -Property:firstname -Property:lastname diff --git a/branches/cpp-M1/sdo/runtime/core/test/partial.xml b/branches/cpp-M1/sdo/runtime/core/test/partial.xml deleted file mode 100644 index e6f51e20f0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/partial.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"> -<sdo:changeSummary xmlns:sdo="commonj.sdo"> -<create>#/departments.0/employees.0</create> -</sdo:changeSummary> -<departments name="Advanced Technologies" location="NY" number="123"> -<employees name="Albert" SN="E0001" openstring="Value Of Open String" openboolean="true"> -<openintlist>45</openintlist> -<opendataobjectlist xmlns="companyNS" xsi:type="OpenType" name="MyOpenName"/> -<opendataobject xsi:type="OpenType" name="MyOpenName"/> -</employees><employees name="Boris" SN="E0002" manager="true"/> -<employees name="Carl" SN="E0003"/> -</departments> -</company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/pete.xml b/branches/cpp-M1/sdo/runtime/core/test/pete.xml deleted file mode 100644 index 1ed7514d5c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/pete.xml +++ /dev/null @@ -1,36 +0,0 @@ - -<!-- - 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. - --> -<StockQuotes> -<Stock> -<Symbol>IBM</Symbol> -<Last>79.78</Last> -<Date>5/24/2006</Date> -<Time>4:01pm</Time> -<Change>0.00</Change> -<Open>N/A</Open> -<High>N/A</High> -<Low>N/A</Low> -<Volume>900</Volume> -<MktCap>123.7B</MktCap> -<PreviousClose>79.78</PreviousClose> -<PercentageChange>0.00</PercentageChange> -<AnnRange>73.45 - 89.94</AnnRange> -<Earns>5.121</Earns> -<P-E>15.58</P-E> -<Name>INTL BUSINESS MAC</Name> -</Stock> -</StockQuotes> diff --git a/branches/cpp-M1/sdo/runtime/core/test/pete.xsd b/branches/cpp-M1/sdo/runtime/core/test/pete.xsd deleted file mode 100644 index 5f4c0e1ac9..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/pete.xsd +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!-- - 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. - --> - -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> - - <xs:element name="StockQuotes"> - <xs:complexType > - <xs:sequence> - <xs:element name="Stock" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="1" name="Symbol" type="xs:string"/> - <xs:element minOccurs="0" maxOccurs="1" name="Last" type="xs:float"/> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <anyAttribute namespace="##any" processContents="lax"/> - </xs:complexType> -</xs:element> - <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - <xs:anyAttribute namespace="##any" processContents="lax"/> - </xs:complexType> - </xs:element> - -</xs:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/querytest.txt b/branches/cpp-M1/sdo/runtime/core/test/querytest.txt deleted file mode 100644 index 9b895282a0..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/querytest.txt +++ /dev/null @@ -1,17 +0,0 @@ -Expected employee3: got Employee3 -Expected employee1: got Employee1 -Expected employee2: got Employee2 -Expected employee1: got Employee1 -Expected employee1: got Employee1 -Expected employee1: got Employee1 -Expected employee1: got Employee1 -Expected employee3: got Employee3 -Expected employee2: got Employee2 -Expected employee2: got Employee2 -Expected employee2: got Employee2 -Expected employee2: got Employee2 -Normal exception caught -Normal exception caught -Normal exception caught -Normal exception caught -Normal exception caught diff --git a/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.txt b/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.txt deleted file mode 100644 index fa36e7113c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"><sdo:changeSummary xmlns:sdo="commonj.sdo"><create>#/departments.0/employees.0</create><create>#/departments.0/employees.1</create><create>#/departments.0/employees.2</create><create>#/departments.0/employees.0/opendataobjectlist.0</create><departments sdo:ref="#/departments.0" name="" location="" number=""/></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="Albert" SN="E0001" openstring="Value Of Open String" openboolean="true"><openintlist>45</openintlist><opendataobjectlist xsi:type="OpenType" name="MyOpenName"/><opendataobject xsi:type="OpenType" name="MyOpenName"/></employees><employees name="Boris" SN="E0002" manager="true"/><employees name="Carl" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.xml b/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.xml deleted file mode 100644 index fa36e7113c..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<company xmlns="companyNS" xsi:type="CompanyType" xmlns:tns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="ACME"><sdo:changeSummary xmlns:sdo="commonj.sdo"><create>#/departments.0/employees.0</create><create>#/departments.0/employees.1</create><create>#/departments.0/employees.2</create><create>#/departments.0/employees.0/opendataobjectlist.0</create><departments sdo:ref="#/departments.0" name="" location="" number=""/></sdo:changeSummary><departments name="Advanced Technologies" location="NY" number="123"><employees name="Albert" SN="E0001" openstring="Value Of Open String" openboolean="true"><openintlist>45</openintlist><opendataobjectlist xsi:type="OpenType" name="MyOpenName"/><opendataobject xsi:type="OpenType" name="MyOpenName"/></employees><employees name="Boris" SN="E0002" manager="true"/><employees name="Carl" SN="E0003"/></departments></company> diff --git a/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.xsd b/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.xsd deleted file mode 100644 index f5066094fd..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/saveopen-output.xsd +++ /dev/null @@ -1 +0,0 @@ -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns="companyNS" targetNamespace="companyNS"><xsd:element name="companyType" type="CompanyType"/><xsd:complexType name="CompanyType" sdo:aliasName="TheFirm TheBigFirm"><xsd:sequence><xsd:element name="departments" type="tns:DepartmentType" minOccurs="0" maxOccurs="unbounded" sdo:aliasName="TheDepartments MYDepartments"/></xsd:sequence><xsd:element name="changeSummary" type="sdo:ChangeSummaryType"/><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="employeeOfTheMonth" sdoxml:propertyType="tns:EmployeeType" type="xsd:IDREF"/></xsd:complexType><xsd:element name="departmentType" type="DepartmentType"/><xsd:complexType name="DepartmentType"><xsd:sequence><xsd:element name="employees" type="tns:EmployeeType" minOccurs="0" maxOccurs="unbounded"/></xsd:sequence><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="location" type="xsd:String"/><xsd:attribute name="number" type="xsd:String"/></xsd:complexType><xsd:element name="employeeType" type="EmployeeType"/><xsd:complexType name="EmployeeType"><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="SN" type="xsd:String"/><xsd:attribute name="manager" type="xsd:boolean"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/><xsd:anyAttribute namespace="##any" processContents="lax"/></xsd:complexType><xsd:element name="openType" type="OpenType"/><xsd:complexType name="OpenType"><xsd:attribute name="name" type="xsd:String"/></xsd:complexType><xsd:attribute name="openboolean" type="xsd:boolean"/><xsd:element name="opendataobject" type="tns:OpenType" minOccurs="0"/><xsd:element name="opendataobjectlist" type="tns:OpenType" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="openintlist" type="xsd:short" minOccurs="0" maxOccurs="unbounded"/><xsd:attribute name="openstring" type="xsd:hexBinary"/></xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-binding-sca.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-binding-sca.xsd deleted file mode 100644 index dee53020ab..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-binding-sca.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="binding.sca" type="sca:SCARemoteBinding" substitutionGroup="sca:binding" sdo:name="bindingSca"/> - <complexType name="SCARemoteBinding"> - <complexContent> - <extension base="sca:Binding"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="target" type="anyURI" use="optional"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-binding-webservice.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-binding-webservice.xsd deleted file mode 100644 index c73bffe1e8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-binding-webservice.xsd +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="binding.ws" type="sca:WebServiceBinding" substitutionGroup="sca:binding"/> - <complexType name="WebServiceBinding"> - <complexContent> - <extension base="sca:Binding"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="port" type="anyURI" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-binding-ws.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-binding-ws.xsd deleted file mode 100644 index 84de1db758..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-binding-ws.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="binding.ws" type="sca:WebServiceBinding" substitutionGroup="sca:binding" sdo:name="bindingWs"/> - <complexType name="WebServiceBinding"> - <complexContent> - <extension base="sca:Binding"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="port" type="anyURI" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-core.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-core.xsd deleted file mode 100644 index 7b5c4199bf..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-core.xsd +++ /dev/null @@ -1,230 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-policy.xsd" /> - - <element name="componentType" type="sca:ComponentType"/> - <complexType name="ComponentType"> - <sequence> - <element minOccurs="0" maxOccurs="unbounded" name="service" type="sca:Service"/> - <element minOccurs="0" maxOccurs="unbounded" name="reference" type="sca:Reference"/> - <element minOccurs="0" maxOccurs="unbounded" ref="sca:property"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - - <complexType name="Service"> - <sequence> - <element minOccurs="1" maxOccurs="1" ref="sca:interface"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="name" type="NCName" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - - <element name="interface" type="sca:Interface"/> - <complexType name="Interface"/> - - <complexType name="Reference"> - <sequence> - <element minOccurs="1" maxOccurs="1" ref="sca:interface"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="name" type="NCName" use="required"/> - <attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1"/> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - - <element name="property" type="sca:Property"/> - <complexType name="Property" abstract="true"> - <attribute name="name" type="NCName" use="required"/> - <attribute name="many" type="boolean" default="false" use="optional"/> - <attribute name="default" type="string" use="optional"/> - </complexType> - - - <element name="moduleFragment" type="sca:ModuleFragment"/> - <complexType name="ModuleFragment"> - <sequence> - <element minOccurs="0" maxOccurs="unbounded" name="entryPoint" type="sca:EntryPoint"/> - <element minOccurs="0" maxOccurs="unbounded" name="component" type="sca:Component"/> - <element minOccurs="0" maxOccurs="unbounded" name="externalService" type="sca:ExternalService"/> - <element minOccurs="0" maxOccurs="unbounded" name="wire" type="sca:ModuleWire"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="name" type="NCName" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - - <element name="module" type="sca:ModuleFragment"/> - - - <complexType name="EntryPoint"> - <sequence> - <element minOccurs="1" maxOccurs="1" ref="sca:interface"/> - <element minOccurs="1" maxOccurs="1" ref="sca:binding"/> - <element minOccurs="1" maxOccurs="1" name="reference" type="anyType"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="name" type="NCName" use="required"/> - <attribute name="overridable" type="boolean" default="true" use="optional"/> - <attribute name="multiplicity" type="sca:Multiplicity" use="optional" default="1..1"/> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - <!-- a multiplicity 1..1 sample - <reference>StockQuoteComponent</reference> - type must be URI - a multiplicity 0..n sample - <reference> - <value>StockQuoteComponent1</value> - type must be URI - <value>StockQuoteComponent2</value> - </reference> - --> - - <element name="binding" type="sca:Binding"/> - <complexType name="Binding"/> - - - <complexType name="Component"> - <sequence> - <element minOccurs="1" maxOccurs="1" ref="sca:implementation"/> - <element minOccurs="0" maxOccurs="1" name="properties" type="sca:PropertyValues"/> - <element minOccurs="0" maxOccurs="1" name="references" type="sca:ReferenceValues"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="name" type="NCName" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - <!-- a multiplicity 1..1 sample - <references> - <v:stockQuote>StockQuoteComponent</v:stockquote> - type must be URI - </references> - a multiplicity 0..n sample - <references> - <v:stockQuote> - <value>StockQuoteComponent1</value> - type must be URI - <value>StockQuoteComponent2</value> - </v:stockquote> - </references> - --> - - <element name="implementation" type="sca:Implementation"/> - <complexType name="Implementation"/> - - <complexType name="PropertyValues"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - - <complexType name="ReferenceValues"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - - - <complexType name="ExternalService"> - <sequence> - <element minOccurs="1" maxOccurs="1" ref="sca:interface"/> - <element minOccurs="1" maxOccurs="1" ref="sca:binding"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="name" type="NCName" use="required"/> - <attribute name="overridable" type="boolean" default="true" use="optional"/> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - - - - <complexType name="ModuleWire"> - <sequence> - <element minOccurs="1" maxOccurs="1" ref="sca:source.uri" sdo:name="sourceUri"/> - <element minOccurs="1" maxOccurs="1" ref="sca:target.uri" sdo:name="targetUri"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - - <element name="source.uri" type="anyURI" substitutionGroup="sca:source" sdo:name="sourceUri"/> - <element name="target.uri" type="anyURI" substitutionGroup="sca:target" sdo:name="targetUri"/> - - - <element name="subsystem" type="sca:Subsystem"/> - <complexType name="Subsystem"> - <sequence> - <element minOccurs="0" maxOccurs="unbounded" name="entryPoint" type="sca:EntryPoint"/> - <element minOccurs="0" maxOccurs="unbounded" name="moduleComponent" type="sca:ModuleComponent"/> - <element minOccurs="0" maxOccurs="unbounded" name="externalService" type="sca:ExternalService"/> - <element minOccurs="0" maxOccurs="unbounded" name="wire" type="sca:SystemWire"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="name" type="NCName" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - - - <complexType name="ModuleComponent"> - <sequence> - <element minOccurs="0" maxOccurs="1" name="references" type="sca:ReferenceValues"/> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="name" type="NCName" use="required"/> - <attribute name="module" type="NCName" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </complexType> - - <complexType name="SystemWire"> - <sequence> - <element minOccurs="1" maxOccurs="1" ref="sca:source.uri" sdo:name="sourceUri"/> - <element minOccurs="1" maxOccurs="1" ref="sca:target.uri" sdo:name="targetUri" /> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - - <element name="source" type="anyType"/> - <element name="source.epr" type="anyType" substitutionGroup="sca:source" sdo:name="sourceEpr"/> - - <element name="target" type="anyType"/> - <element name="target.epr" type="anyType" substitutionGroup="sca:target" sdo:name="targetEpr"/> - - - <simpleType name="Multiplicity"> - <restriction base="string"> - <enumeration value="0..1"/> - <enumeration value="1..1"/> - <enumeration value="0..n"/> - <enumeration value="1..n"/> - </restriction> - </simpleType> - - <simpleType name="Scope"> - <restriction base="string"> - <enumeration value="instance"/> - <enumeration value="request"/> - <enumeration value="session"/> - <enumeration value="module"/> - </restriction> - </simpleType> - -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-dll.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-dll.xsd deleted file mode 100644 index a9ef738420..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-dll.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="implementation.dll" type="sca:DLLImplementation" substitutionGroup="sca:implementation" sdo:name="implementationDll"/> - <complexType name="DLLImplementation"> - <complexContent> - <extension base="sca:Implementation"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="dll" type="NCName" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-java.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-java.xsd deleted file mode 100644 index b5f20f2ff4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-java.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="implementation.java" type="sca:JavaImplementation" substitutionGroup="sca:implementation" sdo:name="implementationJava"/> - <complexType name="JavaImplementation"> - <complexContent> - <extension base="sca:Implementation"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="class" type="NCName" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-local-java.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-local-java.xsd deleted file mode 100644 index 5c7c87ffdd..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-implementation-local-java.xsd +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="implementation.local.java" type="sca:LocalJavaImplementation" substitutionGroup="sca:implementation" sdo:name="implementationLocalJava"/> - <complexType name="LocalJavaImplementation"> - <complexContent> - <extension base="sca:Implementation"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="class" type="NCName" use="required"/> - <attribute name="scope" type="sca:Scope" use="optional"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> - -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-interface-cpp.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-interface-cpp.xsd deleted file mode 100644 index 81ff6bbcf5..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-interface-cpp.xsd +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="interface.cpp" type="sca:CPPInterface" substitutionGroup="sca:interface" - sdo:name="interfaceCpp"/> - <complexType name="CPPInterface"> - <complexContent> - <extension base="sca:Interface"> - <sequence> - <element minOccurs="1" name="operation" type="sca:Operation"/> - </sequence> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> - - <!-- C++ operation declaration --> - <complexType name="Operation"> - <complexContent> - <sequence> - <element minOccurs="1" maxOccurs="1" name="return" type="sca:ReturnType"/> - <element minOccurs="0" name="parameter" type="sca:ParameterType"/> - </sequence> - <attribute name="name" type="string" use="required"/> - </complexContent> - </complexType> - - <simpleType name="ReturnType"> - <restriction base="string"> - <enumeration value="float"/> - <enumeration value="void"/> - </restriction> - </simpleType> - - <simpleType name="ParameterType"> - <restriction base="string"> - <enumeration value="float"/> - <enumeration value="const char *"/> - </restriction> - </simpleType> - - -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-interface-java.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-interface-java.xsd deleted file mode 100644 index fa132ff69a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-interface-java.xsd +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="interface.java" type="sca:JavaInterface" substitutionGroup="sca:interface" sdo:name="interfaceJava"/> - <complexType name="JavaInterface"> - <complexContent> - <extension base="sca:Interface"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="interface" type="NCName" use="required"/> - <attribute name="callbackInterface" type="NCName" use="optional"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-interface-wsdl.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-interface-wsdl.xsd deleted file mode 100644 index 0cfcfeaebd..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-interface-wsdl.xsd +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="interface.wsdl" type="sca:WSDLPortType" substitutionGroup="sca:interface" sdo:name="interfaceWsdl"/> - <complexType name="WSDLPortType"> - <complexContent> - <extension base="sca:Interface"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="interface" type="anyURI" use="required"/> - <attribute name="callbackInterface" type="anyURI" use="optional"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-property-java.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-property-java.xsd deleted file mode 100644 index 4507752312..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-property-java.xsd +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="property.java" type="sca:JavaProperty" substitutionGroup="sca:property" sdo:name="propertyJava"/> - <complexType name="JavaProperty"> - <complexContent> - <extension base="sca:Property"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="class" type="NCName" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca-property-xsd.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca-property-xsd.xsd deleted file mode 100644 index 7fcbd45a6a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca-property-xsd.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sdo="commonj.sdo/XML" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/" - elementFormDefault="qualified"> - - <include schemaLocation="sca-core.xsd"/> - - <element name="property.xsd" type="sca:XSDProperty" substitutionGroup="sca:property" sdo:name="propertyXsd"/> - <complexType name="XSDProperty"> - <complexContent> - <extension base="sca:Property"> - <sequence> - <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - <attribute name="type" type="anyURI" use="required"/> - <anyAttribute namespace="##any" processContents="lax"/> - </extension> - </complexContent> - </complexType> -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/sca.xsd b/branches/cpp-M1/sdo/runtime/core/test/sca.xsd deleted file mode 100644 index 39a39bab36..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sca.xsd +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<schema xmlns="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.commonj.org/xmlns/sca/v0.0.1/" - xmlns:sca="http://www.commonj.org/xmlns/sca/v0.0.1/"> - - <include schemaLocation="sca-core.xsd"/> - - <include schemaLocation="sca-interface-wsdl.xsd"/> - <include schemaLocation="sca-interface-cpp.xsd"/> - <include schemaLocation="sca-interface-java.xsd"/> - - <include schemaLocation="sca-property-xsd.xsd"/> - - <include schemaLocation="sca-implementation-dll.xsd"/> - - <include schemaLocation="sca-implementation-java.xsd"/> - <include schemaLocation="sca-implementation-local-java.xsd"/> - - <include schemaLocation="sca-binding-ws.xsd"/> - - -</schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/scenario1.txt b/branches/cpp-M1/sdo/runtime/core/test/scenario1.txt deleted file mode 100644 index a0a3c7a203..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/scenario1.txt +++ /dev/null @@ -1,10 +0,0 @@ -Created object in changed list -The object is myspace#Company -===== Modified Object Starts -Xpath:#/ -The modified objects type is myspace#Root -===== Old Property Values Begin -Property companies[0](UNSET) of type DataObject - object null or unset - -===== Old Property Values End -=====Modified Object Ends diff --git a/branches/cpp-M1/sdo/runtime/core/test/scenario2.txt b/branches/cpp-M1/sdo/runtime/core/test/scenario2.txt deleted file mode 100644 index 9728bd6f0a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/scenario2.txt +++ /dev/null @@ -1,8 +0,0 @@ -===== Modified Object Starts -Xpath:#/companies.0 -The modified objects type is myspace#Company -===== Old Property Values Begin -Property name of type String:acme - -===== Old Property Values End -=====Modified Object Ends diff --git a/branches/cpp-M1/sdo/runtime/core/test/scenario3.txt b/branches/cpp-M1/sdo/runtime/core/test/scenario3.txt deleted file mode 100644 index e174f62538..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/scenario3.txt +++ /dev/null @@ -1,22 +0,0 @@ -=====Deleted Object Starts -===== Old Property Values Begin -Property name of type String:acme - -Property id of type String:123 - -===== Old Property Values End -=====Deleted Object Ends -===== Modified Object Starts -Xpath:#/ -The modified objects type is myspace#Root -===== Old Property Values Begin -Property companies[0] of type DataObject - object deleted -===== Old Property Values Begin -Property name of type String:acme - -Property id of type String:123 - -===== Old Property Values End - -===== Old Property Values End -=====Modified Object Ends diff --git a/branches/cpp-M1/sdo/runtime/core/test/scenario4.txt b/branches/cpp-M1/sdo/runtime/core/test/scenario4.txt deleted file mode 100644 index f678499e15..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/scenario4.txt +++ /dev/null @@ -1,108 +0,0 @@ -Created object in changed list -The object is myspace#Employee -===== Modified Object Starts -Xpath:#/companies.0/departments.0 -The modified objects type is myspace#Department -===== Old Property Values Begin -Property employees[0] of type DataObject object still exists - -Property employees[1] of type DataObject object still exists - -===== Old Property Values End -=====Modified Object Ends -===== Modified Object Starts -Xpath:#/companies.0/departments.1 -The modified objects type is myspace#Department -===== Old Property Values Begin -Property employees[0] of type DataObject - object deleted -===== Old Property Values Begin -Property name of type String:Ed Memoire - -Property id of type String:1 - -===== Old Property Values End - -Property employees[1] of type DataObject object still exists - -===== Old Property Values End -=====Modified Object Ends -=====Deleted Object Starts -===== Old Property Values Begin -Property name of type String:Ed Memoire - -Property id of type String:1 - -===== Old Property Values End -=====Deleted Object Ends -=====Deleted Object Starts -===== Old Property Values Begin -Property name of type String:Ivor Payne - -Property id of type String:1 - -===== Old Property Values End -=====Deleted Object Ends -=====Deleted Object Starts -===== Old Property Values Begin -Property name of type String:Colin Poisson - -Property id of type String:2 - -===== Old Property Values End -=====Deleted Object Ends -=====Deleted Object Starts -===== Old Property Values Begin -Property name of type String:windows - -Property id of type String:1 - -Property employees[1] of type DataObject - object deleted -===== Old Property Values Begin -Property name of type String:Colin Poisson - -Property id of type String:2 - -===== Old Property Values End - -Property employees[0] of type DataObject - object deleted -===== Old Property Values Begin -Property name of type String:Ivor Payne - -Property id of type String:1 - -===== Old Property Values End - -===== Old Property Values End -=====Deleted Object Ends -===== Modified Object Starts -Xpath:#/companies.1 -The modified objects type is myspace#Company -===== Old Property Values Begin -Property departments[0] of type DataObject - object deleted -===== Old Property Values Begin -Property name of type String:windows - -Property id of type String:1 - -Property employees[1] of type DataObject - object deleted -===== Old Property Values Begin -Property name of type String:Colin Poisson - -Property id of type String:2 - -===== Old Property Values End - -Property employees[0] of type DataObject - object deleted -===== Old Property Values Begin -Property name of type String:Ivor Payne - -Property id of type String:1 - -===== Old Property Values End - -===== Old Property Values End - -Property departments[1] of type DataObject object still exists - -===== Old Property Values End -=====Modified Object Ends diff --git a/branches/cpp-M1/sdo/runtime/core/test/scenario5.txt b/branches/cpp-M1/sdo/runtime/core/test/scenario5.txt deleted file mode 100644 index af5bf47102..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/scenario5.txt +++ /dev/null @@ -1,8 +0,0 @@ -===== Modified Object Starts -Xpath:#/companies.0 -The modified objects type is myspace#Company -===== Old Property Values Begin -Property eotm of type DataObject object still exists - -===== Old Property Values End -=====Modified Object Ends diff --git a/branches/cpp-M1/sdo/runtime/core/test/sdotest.cpp b/branches/cpp-M1/sdo/runtime/core/test/sdotest.cpp deleted file mode 100644 index adcdf36a0e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sdotest.cpp +++ /dev/null @@ -1,8835 +0,0 @@ -/* - * - * 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: sdotest.cpp,v 1.22 2006/03/16 12:53:57 slattery Exp $ */ - -#include <stdio.h> - -#pragma warning(disable:4786) - -#include <iostream> -#include <fstream> -using namespace std; - - - -#include "sdotest.h" - - - - - -using namespace commonj::sdo; - - - -/* USED IN RCPTEST */ - -typedef struct { - //zend_object zo; /* The standard zend_object */ - DataObjectPtr dop; /* The Hydra DataObject */ - //zend_object *df; /* The Data Factory */ -} sdo_doimpl_object; - - -int sdotest::rcptest() -{ - - try { - DataFactoryPtr mdg; - sdo_doimpl_object* ptr; - - mdg = DataFactory::getDataFactory(); - mdg = 0; - mdg = DataFactory::getDataFactory(); - mdg = NULL; - 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","companies", - "myspace","Company", true, false, true); - - const Type& tcc = mdg->getType("myspace","Root"); - - - ptr = new sdo_doimpl_object; - - ptr->dop = mdg->create((Type&)tcc); - - ptr->dop = 0; // null ; - return 1; - } - catch (SDORuntimeException e) - { - if (!silent) cout << "RefCountingPointer test failed" << endl; - return 0; - } -} - - - -int sdotest::changesummarytest() -{ - if (scenario5() == 0) return 0; - if (scenario1() == 0) return 0; - if (scenario2() == 0) return 0; - if (scenario3() == 0) return 0; - if (scenario4() == 0) return 0; - return 1; -} - - -int sdotest::scenario1() -{ - // scenario 1 - // create root type - root has cs - // create a company type. and containment ref from root, many valued. - // props on comp id, name both strings single v. - // create root object - // begin logging - // create a company obj. name=acme id=123 - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addPropertyToType("myspace","Root","whatever", - "commonj.sdo","ChangeSummary", false, false, false); - - 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","companies", - "myspace","Company", true, false, true); - - const Type& tcc = mdg->getType("myspace","Root"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - ChangeSummaryPtr cs = dor->getChangeSummary(); - cs->beginLogging(); - - DataObjectPtr com = dor->createDataObject("companies"); - com->setCString("name","acme"); - com->setCString("id","123"); - - FILE *f = fopen("scenario1.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open secnario1.dat" << endl; - return 0; - } - - dumpchangesummary(f, cs); - - fclose(f); - - cs->endLogging(); - - //expect cdo: - //root - isChanged - //comp - isCreated - - return comparefiles("scenario1.dat","scenario1.txt"); -} - - -int sdotest::testui() -{ - - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("companyNS","MainType"); - - - /* Now add the properties to the types...*/ - - - const Type& tmain = mdg->getType("companyNS","MainType"); - const Type& tshort = mdg->getType("commonj.sdo","Short"); - const Type& tint = mdg->getType("commonj.sdo","Integer"); - - - mdg->addPropertyToType(tmain,"short",tshort,true); - mdg->addPropertyToType(tmain,"int",tint, true); - - DataObjectPtr main = mdg->create((Type&)tmain); - - DataObjectList& dol1 = main->getList("short"); - DataObjectList& dol2 = main->getList("int"); - DataObjectList& dol3 = main->getList((unsigned int)0); - DataObjectList& dol4 = main->getList(1); - - return 1; - } - - catch (SDORuntimeException e) - { - if (!silent) cout << "Unsigned integer test failed" << endl << e << endl; - return 0; - } - -} - - - -int sdotest::scenario5() -{ - // scenario 5 - // create root type - root has cs - // create a company type. and containment ref from root, many valued. - // props on comp id, name both strings single v. - // create root object - // begin logging - // create a company obj. name=acme id=123 - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addPropertyToType("myspace","Root","whatever", - "commonj.sdo","ChangeSummary", false, false, false); - - mdg->addType("myspace","Company"); - mdg->addType("myspace","Employee"); - mdg->addPropertyToType("myspace","Employee","name", - "commonj.sdo","String", false, false, false); - - - 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","Company","eotm", - "myspace","Employee", false, false, false); - - mdg->addPropertyToType("myspace","Company","employees", - "myspace","Employee", true, false, true); - - mdg->addPropertyToType("myspace","Root","companies", - "myspace","Company", true, false, true); - - const Type& tcc = mdg->getType("myspace","Root"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - ChangeSummaryPtr cs = dor->getChangeSummary(); - - DataObjectPtr com = dor->createDataObject("companies"); - com->setCString("name","acme"); - com->setCString("id","123"); - - const Type& te = mdg->getType("myspace","Employee"); - - DataObjectPtr emp = mdg->create(te); - emp->setCString("name", "Mr Expendible"); - - DataObjectList& emps = com->getList("employees"); - - emps.append(emp); - - com->setDataObject("eotm",emp); - - cs->beginLogging(); - - com->unset("eotm"); - - FILE *f = fopen("scenario5.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open scenario5.dat" << endl; - return 0; - } - - dumpchangesummary(f, cs); - - fclose(f); - - cs->endLogging(); - - return comparefiles("scenario5.dat","scenario5.txt"); - - //expect com to have change record, nothing for eotm: - -} - -int sdotest::scenario2() -{ - // create root type - root has cs - // create a company type. and containment ref from root, many valued. - // 2 props on comp id, name both strings single v. - // create root object - // create a company obj. name=acme id=123 - // begin logging() - // name="megacorp" - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addPropertyToType("myspace","Root","whatever", - "commonj.sdo","ChangeSummary", false, false, false); - - 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","companies", - "myspace","Company", true, false, true); - - const Type& tcc = mdg->getType("myspace","Root"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - DataObjectPtr com = dor->createDataObject("companies"); - com->setCString("name","acme"); - com->setCString("id","123"); - - ChangeSummaryPtr cs = dor->getChangeSummary(); - cs->beginLogging(); - - com->setCString("name","megacorp"); - - FILE *f = fopen("scenario2.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open scenario2.dat" << endl; - return 0; - } - - dumpchangesummary(f, cs); - - fclose(f); - - cs->endLogging(); - - //expect cdo: - //root- nothing - // company- isChanged - //setting prop=name, value="acme" - - return comparefiles("scenario2.dat","scenario2.txt"); - -} - -int sdotest::scenario3() -{ - - //create root type - root has cs - //create a company type. and containment ref from root, many valued. - //2 props on comp id, name both strings single v. - //create root object - //create a company obj. name=acme id=123 - //begin logging() - //delete company - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addPropertyToType("myspace","Root","whatever", - "commonj.sdo","ChangeSummary", false, false, false); - - 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","companies", - "myspace","Company", true, false, true); - - const Type& tcc = mdg->getType("myspace","Root"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - DataObjectPtr com = dor->createDataObject("companies"); - com->setCString("name","acme"); - com->setCString("id","123"); - - ChangeSummaryPtr cs = dor->getChangeSummary(); - cs->beginLogging(); - - com->detach(); - - FILE *f = fopen("scenario3.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open scenario3.dat" << endl; - return 0; - } - - dumpchangesummary(f, cs); - - cs->endLogging(); - - fclose(f); - - // expect cdo - // root - changed - // company - deleted - - return comparefiles("scenario3.dat","scenario3.txt"); - -} - -int sdotest::scenario4() -{ - //create root type - root has cs - //create a company type. and containment ref from root, many valued. - //create a dept type. and containment ref from comp, many valued. - //create a emp type. and containment ref from dept, many valued. - // give name and id properties to comp,dept, emp - - //create root object - //create a company obj. name=acme id=123 - //create a company obj. name=megacorp id=124 - // give each company 2 depts - // give each dept 2 employees - - // begin logging() - // add new employee to first dept of acme - // delete employee from second dept of acme - - // change name of first employee of first dept megacorp. - // delete first dept of megacorp. - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addPropertyToType("myspace","Root","whatever", - "commonj.sdo","ChangeSummary", false, false, false); - - 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->addType("myspace","Department"); - mdg->addPropertyToType("myspace","Department","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Department","id", - "commonj.sdo","String", false, false, false); - - mdg->addType("myspace","Employee"); - mdg->addPropertyToType("myspace","Employee","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Employee","id", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Root","companies", - "myspace","Company", true, false, true); - - mdg->addPropertyToType("myspace","Company","departments", - "myspace","Department", true, false, true); - - mdg->addPropertyToType("myspace","Department","employees", - "myspace","Employee", true, false, true); - - const Type& tcc = mdg->getType("myspace","Root"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - DataObjectPtr com = dor->createDataObject("companies"); - com->setCString("name","acme"); - com->setCString("id","123"); - - DataObjectPtr dep = com->createDataObject("departments"); - dep->setCString("name","widgets"); - dep->setCString("id","1"); - - DataObjectPtr emp = dep->createDataObject("employees"); - emp->setCString("name","John O'Watt"); - emp->setCString("id","1"); - - emp = dep->createDataObject("employees"); - emp->setCString("name","Ida Know"); - emp->setCString("id","2"); - - - dep = com->createDataObject("departments"); - dep->setCString("name","gadgets"); - dep->setCString("id","2"); - - emp = dep->createDataObject("employees"); - emp->setCString("name","Ed Memoire"); - emp->setCString("id","1"); - - emp = dep->createDataObject("employees"); - emp->setCString("name","Phyllis Tyne"); - emp->setCString("id","2"); - - - DataObjectPtr com2 = dor->createDataObject("companies"); - com2->setCString("name","megacorp"); - com2->setCString("id","124"); - - dep = com2->createDataObject("departments"); - dep->setCString("name","windows"); - dep->setCString("id","1"); - - emp = dep->createDataObject("employees"); - emp->setCString("name","Ivor Payne"); - emp->setCString("id","1"); - - emp = dep->createDataObject("employees"); - emp->setCString("name","Colin Poisson"); - emp->setCString("id","2"); - - dep = com2->createDataObject("departments"); - dep->setCString("name","portholes"); - dep->setCString("id","2"); - - emp = dep->createDataObject("employees"); - emp->setCString("name","Graham Angreeneggs"); - emp->setCString("id","1"); - - emp = dep->createDataObject("employees"); - emp->setCString("name","Helen Highwater"); - emp->setCString("id","2"); - - DataObjectList& deps = com->getList("departments"); - DataObjectList& emps = deps[0]->getList("employees"); - DataObjectList& emps2 = deps[1]->getList("employees"); - DataObjectList& deps2 = com2->getList("departments"); - DataObjectList& emps3 = deps2[0]->getList("employees"); - DataObjectList& emps4 = deps2[1]->getList("employees"); - - // should be able to get the change summary property, but it - // should be zero. - // should be able to find out if the type is a change summary type - - if (! dor->getType().isChangeSummaryType()) - { - if (!silent) cout << "The root object DOESNT HAVE a change summary !!!" << endl; - return 0; - } - - try { - DataObjectPtr csptr = dor->getDataObject("whatever"); - - if (!csptr) { - if (!silent) cout << "CS property was zero - should be invisible!!!!" << endl; - return 0; - } - else { - if (!silent) cout << "CS property was NOT zero !!" << endl; - return 0; - } - } - catch (SDOPropertyNotFoundException e) - { - // cout << "No property shows - this is correct" << endl; - } - - - if (com->getType().isChangeSummaryType()) - { - if (!silent) cout << "The company object has a change summary !!!!" << endl; - return 0; - } - - ChangeSummaryPtr cs = dor->getChangeSummary(); - cs->beginLogging(); - - DataObjectList& depsout = com->getList("departments"); - - emp = depsout[0]->createDataObject("employees"); - emp->setCString("name","Irma Newby"); - emp->setCString("id","3"); - - DataObjectList& empsout = depsout[1]->getList("employees"); - empsout.remove(0); - - DataObjectList& depsout2 = com2->getList("departments"); - DataObjectList& empsout2 = depsout2[0]->getList("employees"); - empsout2[0]->setCString("name","Ive had my name changed"); - - depsout2[0]->detach(); - - FILE *f = fopen("scenario4.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open secnario4.dat" << endl; - return 0; - } - - dumpchangesummary(f, cs); - - cs->endLogging(); - - fclose(f); - - // expect: - // company acme, department widgets changed. - // employee 3 of dept widgets of acme (Irma Newby) created. - // employee 1 of dept gadgets or acme deleted - // no change record for employee 1 of company megacorp, dept windows - // deletion for dept windows of megacorp - // deletion for emp 1 of windows - showing original value for name (Ivor Payne) - // deletion for emp 2 of windows. - - return comparefiles("scenario4.dat","scenario4.txt"); - - -} - -int sdotest::seqtest() -{ - DataFactoryPtr mdg = DataFactory::getDataFactory(); - // company is sequenced. - mdg->addType("myspace","Company",true,false); - - mdg->addType("myspace","Department",true,false); - // string is many - - mdg->addPropertyToType("myspace","Company","string","commonj.sdo","String", - true); - - mdg->addPropertyToType("myspace","Company","departments","myspace","Department", - true); - - mdg->addPropertyToType("myspace","Department","name","commonj.sdo","String"); - - - const Type& tcc = mdg->getType("myspace","Company"); - - DataObjectPtr dor = mdg->create(tcc); - const Property& sprop = dor->getType().getProperty("string"); - SequencePtr sptr = dor->getSequence(); - - FILE *f = fopen("sequence.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Cannot open sequence.dat" << endl; - return 0; - } - - printseq(f, sptr); - - sptr->addCString(sprop,"I am Item 1 of string"); - - printseq(f, sptr); - - sptr->addText("I am the first free text"); - - printseq(f, sptr); - - sptr->addCString(sprop,"I am Item 2 of string"); - - printseq(f, sptr); - - sptr->setCStringValue(1,"I am free text which has been modified"); - - DataObjectPtr dep1 = dor->createDataObject("departments"); - - printseq(f, sptr); - - dep1->setCString("name","department1"); - - printseq(f, sptr); - - DataObjectList& dol = dor->getList("departments"); - - const Type& tcd = mdg->getType("myspace","Department"); - DataObjectPtr dep2 = mdg->create(tcd); - - printseq(f, sptr); - - dep2->setCString("name","department2"); - - printseq(f, sptr); - - dol.append(dep2); - - printseq(f, sptr); - - fclose(f); - - return comparefiles("sequence.dat","sequence.txt"); - - -} - - -int sdotest::boolbug() -{ - DataFactoryPtr mdg = DataFactory::getDataFactory(); - mdg->addType("myspace","Company"); - mdg->addPropertyToType("myspace","Company","bool","commonj.sdo","Boolean"); - const Type& tcc = mdg->getType("myspace","Company"); - DataObjectPtr dor = mdg->create((Type&)tcc); - try { - bool b = dor->getBoolean("bool"); - return 1; - } - catch (SDOPropertyNotSetException) - { - if (!silent) cout << "WRONG not set exception" << endl; - return 0; - } -} - -int sdotest::scope1() -{ - try - { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - return 1; - } - catch(SDORuntimeException e) - { - return 0; - } -} - -int sdotest::scope2() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - mdg->addType("myspace","Company"); - mdg->addPropertyToType("myspace","Company","csumm","commonj.sdo","ChangeSummary"); - const Type& tcc = mdg->getType("myspace","Company"); - DataObjectPtr dor = mdg->create((Type&)tcc); - return 1; - } - catch (SDORuntimeException e) - { - return 0; - } -} - -int sdotest::scope3() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - mdg->addType("myspace","Main"); - mdg->addType("myspace","Subs"); - mdg->addPropertyToType("myspace","Main","name","commonj.sdo","String"); - mdg->addPropertyToType("myspace","Main","subs","myspace","Subs", true); - mdg->addPropertyToType("myspace","Subs","name","commonj.sdo","String"); - - const Type& tcc = mdg->getType("myspace","Main"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - DataObjectPtr sub = dor->createDataObject("subs"); - sub->setCString("name", "sub1"); - - sub = dor->createDataObject("subs"); - sub->setCString("name", "sub2"); - return 1; - } - catch (SDORuntimeException e) - { - return 0; - } - -} - -int sdotest::testGetters(DataObjectPtr dor) -{ - if (!testGetter(dor,"boolean")) return 0; - if (!testGetter(dor,"byte")) return 0; - if (!testGetter(dor,"character")) return 0; - if (!testGetter(dor,"short")) return 0; - if (!testGetter(dor,"integer")) return 0; - if (!testGetter(dor,"long")) return 0; - if (!testGetter(dor,"double")) return 0; - if (!testGetter(dor,"float")) return 0; - if (!testGetter(dor,"date")) return 0; - if (!testGetter(dor,"string")) return 0; - if (!testGetter(dor,"bytes")) return 0; - if (!testGetter(dor,"dataobject")) return 0; - return 1; -} - -int sdotest::testGetter(DataObjectPtr dor, char* str) -{ - - try { - bool b = dor->getBoolean(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - char by = dor->getByte(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - wchar_t cy = dor->getCharacter(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - short s = dor->getShort(str); - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - if (!strcmp(str,"bytes")) return 1; - return 0; - - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - int i = dor->getInteger(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - long l = dor->getLong(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - int64_t ll = dor->getLong(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - float f = dor->getFloat(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - long double d = dor->getDouble(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - unsigned int len; - - try { - len = dor->getLength(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - if (len > 0) { - try { - wchar_t * buf = new wchar_t[len]; - unsigned int gotlen = dor->getString(str,buf,len); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - try { - char * cbuf = new char[len]; - unsigned int gotlen = dor->getBytes(str,cbuf,len); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - } - - try { - SDODate t = dor->getDate(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << " WRONG unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"boolean")) return 1; - if (!strcmp(str,"boolean")) return 1; - if (!strcmp(str,"string")) return 1; - if (!strcmp(str,"dataobject")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - const char * string = dor->getCString(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG - unset and undefaulted" << endl; - return 0; - } - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 1; - if (!strcmp(str,"date")) return 1; - return 0; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - - try { - DataObjectPtr dob = dor->getDataObject(str); - } - catch (SDOPropertyNotSetException pe) - { - if (!silent) cout << "WRONG unset and undefaulted" << endl; - return 0; - } - - catch (SDOInvalidConversionException ec) - { - if (!strcmp(str,"dataobject")) return 0; - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << endl; - return 0; - } - return 1; - -} - -int sdotest::conversiontest() -{ - //cout << "Conversion tests" << endl; - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - mdg->addType("myspace","Container"); - mdg->addType("myspace","Contained"); - mdg->addPropertyToType("myspace","Container","boolean","commonj.sdo","Boolean"); - mdg->addPropertyToType("myspace","Container","byte","commonj.sdo","Byte"); - mdg->addPropertyToType("myspace","Container","character","commonj.sdo","Character"); - mdg->addPropertyToType("myspace","Container","short","commonj.sdo","Short"); - mdg->addPropertyToType("myspace","Container","integer","commonj.sdo","Integer"); - mdg->addPropertyToType("myspace","Container","long","commonj.sdo","Long"); - mdg->addPropertyToType("myspace","Container","float","commonj.sdo","Float"); - mdg->addPropertyToType("myspace","Container","double","commonj.sdo","Double"); - mdg->addPropertyToType("myspace","Container","string","commonj.sdo","String"); - mdg->addPropertyToType("myspace","Container","bytes","commonj.sdo","Bytes"); - mdg->addPropertyToType("myspace","Container","dataobject","myspace","Contained"); - mdg->addPropertyToType("myspace","Container","date","commonj.sdo","Date"); - mdg->addPropertyToType("myspace","Container","bigint","commonj.sdo","BigInteger"); - mdg->addPropertyToType("myspace","Container","bigdec","commonj.sdo","BigDecimal"); - - - const Type& tcc = mdg->getType("myspace","Container"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - // phase 1 - all unset....... - - // cout << "+++++++++++++++PROPERTY VALUES UNSET ++++++++++++++++++" << endl; - - if (!testGetters(dor)) return 0; - - // cout << "+++++++++++++++PROPERTY VALUES SET ++++++++++++++++++++" << endl; - - // RHEL 4 has problems processing 64 bit integer constants, so we'll do it the hard way - // This is overkill but gives the option to vary the value a bit. - - int64_t largeInt = 0xFFFF; - for (int j = 0; j < 2; j++) - { - largeInt <<= 16; - largeInt += 0xFFFF; - } - - DataObjectPtr sub = dor->createDataObject("dataobject"); - dor->setBoolean("boolean", true); - dor->setByte("byte",20); - dor->setCharacter("character", 1000); - dor->setShort("short", (short)12345678); - dor->setInteger("integer", 87654321); - dor->setLong("long", largeInt); - dor->setFloat("float", (float)12345.678); - dor->setDouble("double", 1234567.891); - dor->setDate("date", 37575); - wchar_t* chars = new wchar_t[50]; - for (int i=0;i<50;i++) {chars[i] = 0x7F20 + i ;} - dor->setString("string",chars, 50); - - char* tchars = new char[50]; - for (int ii=0;ii<50;ii++) {tchars[ii] = ii + 32;} - dor->setBytes("bytes",tchars, 50); - - - if (!testGetters(dor)) return 0; - - // cout << "+++++++++++++++END OF TEST ++++++++++++++++++++++++++++" << endl; - - return 1; -} - - -int sdotest::usertest() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addType("myspace","UserTest"); - mdg->addType("myspace","AnObject"); - - const Type& tr = mdg->getType("myspace", "Root"); - const Type& tm = mdg->getType("myspace", "UserTest"); - const Type& to = mdg->getType("myspace", "AnObject"); - - mdg->addPropertyToType(tm,"boolean", "commonj.sdo","Boolean"); - mdg->addPropertyToType(tm,"unsetboolean", "commonj.sdo","Boolean"); - mdg->addPropertyToType(tm,"object", "myspace","AnObject"); - mdg->addPropertyToType(tm,"unsetobject","myspace","AnObject"); - - // many valued... - mdg->addPropertyToType(tm,"longs", "commonj.sdo","Integer", true); - mdg->addPropertyToType(tm,"objects", "myspace","AnObject", true); - - mdg->addPropertyToType(tr,"usertest", "myspace","UserTest"); - - DataObjectPtr root = mdg->create((Type&)tr); - DataObjectPtr test = root->createDataObject("usertest"); - DataObjectPtr do1 = test->createDataObject("object"); - DataObjectPtr do2 = test->createDataObject("objects"); - DataObjectPtr do3 = test->createDataObject("objects"); - - test->setBoolean("boolean", true); - - - void* value = (void*)0xF1F1F1F1; - - test->setUserData(value); - - if (test->getUserData() != (void*)0xf1f1f1f1) return 0; - - root->setUserData("usertest",value); - - if (root->getUserData("usertest") != (void*)0xf1f1f1f1) return 0; - - root->setUserData((unsigned int)0,(void*)0x20); - - if (root->getUserData((unsigned int)0) != (void*)0x20) return 0; - - const Property& prop = root->getType().getProperty("usertest"); - - root->setUserData(prop,(void*)0x40020); - - if (root->getUserData(prop) != (void*)0x40020) return 0;; - - test->setUserData("boolean", (void*)0x120); - - - if (test->getUserData("boolean") != (void*)0) return 0; - - test->setUserData("unsetboolean", (void*)0x340); - - if (test->getUserData("unsetboolean") != (void*)0) return 0; - - test->setUserData("object", (void*)0x120); - - if (test->getUserData("object") != (void*)0x120) return 0; - - test->setUserData("unsetobject", (void*)0x540); - - if (test->getUserData("unsetobject") != (void*)0) return 0; - - test->setUserData("objects", (void*)0x640); - - if (test->getUserData("objects") != (void*)0x640) return 0; - - test->setUserData("objects[1]", (void*)0x740); - - if (test->getUserData("objects[1]") != (void*)0x740) return 0; - - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << "Exception in user test - unexpected" << endl; - return 0; - } -} - -int sdotest::versiontest() -{ - if (!silent) cout << "The SDO version is :" << SdoRuntime::getVersion() << endl; - if (!silent) cout << "The Major version is: " << SdoRuntime::getMajor() << endl; - if (!silent) cout << "The Minor version is: " << SdoRuntime::getMinor() << endl; - if (!silent) cout << "The Fix level is: " << SdoRuntime::getFix() << endl; - return 1; -} - -int sdotest::noncontest() -{ - - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Company"); - mdg->addType("myspace","Department"); - mdg->addType("myspace","Employee"); - - const Type& tr = mdg->getType("myspace", "Company"); - const Type& tm = mdg->getType("myspace", "Department"); - const Type& to = mdg->getType("myspace", "Employee"); - - // many... - mdg->addPropertyToType(tr,"departments","myspace", "Department", - true); - - //mdg->addPropertyToType(to,"name","commonj.sdo", "String"); - - mdg->addPropertyToType(tm,"employees","myspace", "Employee", true); - - // single, non containment - mdg->addPropertyToType(tr,"eom", "myspace","Employee", false - , false, false); - - DataObjectPtr comp = mdg->create((Type&)tr); - - { - DataObjectPtr dept = comp->createDataObject("departments"); - DataObjectPtr emp1 = dept->createDataObject("employees"); - //emp1->setCString("name", "Will"); - DataObjectPtr emp2 = dept->createDataObject("employees"); - //emp1->setCString("name", "Bill"); - DataObjectPtr emp3 = dept->createDataObject("employees"); - //emp1->setCString("name", "Gill"); - comp->setDataObject("eom", emp3); - } - return 1; - } - catch (SDORuntimeException e) - { - if (!silent) cout << "Failed in containment" << e << endl; - return 0; - } -} - - -int sdotest::defaulttest() -{ - try{ - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","DefaultTest"); - mdg->addType("myspace","AnObject"); - - const Type& tm = mdg->getType("myspace", "DefaultTest"); - const Type& to = mdg->getType("myspace", "AnObject"); - - mdg->addPropertyToType(tm,"boolean", "commonj.sdo","Boolean"); - - mdg->setDefault("myspace","DefaultTest","boolean", true); - - mdg->addPropertyToType(tm,"byte", "commonj.sdo","Byte"); - - mdg->setDefault("myspace","DefaultTest","byte", (char)'d'); - - mdg->addPropertyToType(tm,"character", "commonj.sdo","Character"); - - mdg->setDefault("myspace","DefaultTest","character", (wchar_t)'e'); - - mdg->addPropertyToType(tm,"short", "commonj.sdo","Short"); - - mdg->setDefault("myspace","DefaultTest","short", (short)300); - - mdg->addPropertyToType(tm,"long", "commonj.sdo","Integer"); - - mdg->setDefault("myspace","DefaultTest","long", (long)400); - - mdg->addPropertyToType(tm,"longs", "commonj.sdo","Integer", true); - - mdg->setDefault("myspace","DefaultTest","longs", (long)800); - - mdg->addPropertyToType(tm,"longlong", "commonj.sdo","Long"); - - mdg->setDefault("myspace","DefaultTest","longlong", (int64_t)500); - - mdg->addPropertyToType(tm,"float", "commonj.sdo","Float"); - - mdg->setDefault("myspace","DefaultTest","float", (float)600.0); - - mdg->addPropertyToType(tm,"longdouble", "commonj.sdo","Double"); - - mdg->setDefault("myspace","DefaultTest","longdouble", (long double)700.0); - - mdg->addPropertyToType(tm,"date", "commonj.sdo","Date"); - - mdg->setDefault("myspace","DefaultTest","date", (long)900); - - mdg->addPropertyToType(tm,"string", "commonj.sdo","String"); - - wchar_t* help = new wchar_t[4]; - help[0] = 'H'; - help[1] = 'E'; - help[2] = 'L'; - help[3] = 'P'; - - mdg->setDefault("myspace","DefaultTest","string", help, 4); - - delete help; - - char* help2 = new char[4]; - help2[0] = 'H'; - help2[1] = 'E'; - help2[2] = 'L'; - help2[3] = 'P'; - - mdg->addPropertyToType(tm,"bytes", "commonj.sdo","Bytes"); - - mdg->setDefault("myspace","DefaultTest","bytes", help2, 4); - - delete help2; - - mdg->addPropertyToType(tm,"object", "myspace","AnObject"); - - DataObjectPtr test = mdg->create((Type&)tm); - - FILE *f = fopen("defaults.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open file defaults.dat" << endl; - return 0; - } - - - fprintf(f, "Boolean default is true: %d\n",test->getBoolean("boolean")); - - fprintf(f, "Byte default is d: %d\n",test->getByte("byte")); - - fprintf(f, "Character default is e: %d\n",test->getCharacter("character")); - - fprintf(f, "Short default is 300: %d\n",test->getShort("short")); - - fprintf(f, "Long default is 400: %d\n",test->getInteger("long")); - - try { - fprintf(f, "Longs default is 800: %d\n" ,test->getInteger("longs[1]")); - } - catch (SDOIndexOutOfRangeException ex) - { - fprintf(f,"Expected index out of range OK\n"); - } - - fprintf(f,"Float default is 600: %.3f\n",test->getFloat("float")); - - fprintf(f, "LongDouble default is 700: %.3f\n",(float)test->getDouble("longdouble")); - - fprintf(f, "String default is HELP: "); - unsigned int lenw = test->getLength("string"); - if (lenw > 0) { - char* tw = new char[lenw]; - test->getBytes("string",tw,lenw); - for (int i=0;i<lenw;i++) - { - fprintf(f,"%c",tw[i]); - } - fprintf(f,"\n"); - } - - fprintf(f,"Bytes default is HELP: "); - unsigned int len = test->getLength("bytes"); - if (len > 0) { - char* tc = new char[len]; - test->getBytes("bytes",tc,len); - for (int i=0;i<len;i++) - { - fprintf(f,"%c", tc[i]); - } - fprintf(f,"\n"); - } - fclose (f); - return comparefiles("defaults.dat","defaults.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << e.getEClassName() << " in "; - if (!silent)cout << e.getFileName() << " at line "; - if (!silent)cout << e.getLineNumber() << endl; - if (!silent)cout << e.getFunctionName() << " "; - if (!silent)cout << e.getMessageText() << endl; - return 0; - } -} - -// Re-write of defaulttest to use methods taking SDOString parameters -int sdotest::defaulttest_strobj() -{ - - SDOString ns1("myspace"); - SDOString testName("DefaultTest"); - SDOString objectName("AnObject"); - SDOString propName("commonj.sdo"); - - try{ - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType(ns1, testName); - mdg->addType(ns1, objectName); - - const Type& tm = mdg->getType(ns1, testName); - const Type& to = mdg->getType(ns1, objectName); - - mdg->addPropertyToType(tm, "boolean", propName, "Boolean"); - - mdg->setDefault(ns1, testName, "boolean", true); - - mdg->addPropertyToType(tm, "byte", propName, "Byte"); - - mdg->setDefault(ns1, testName, "byte", (char)'d'); - - mdg->addPropertyToType(tm, "character", propName, "Character"); - - mdg->setDefault(ns1, testName, "character", (wchar_t)'e'); - - mdg->addPropertyToType(tm, "short", propName, "Short"); - - mdg->setDefault(ns1, testName, "short", (short)300); - - mdg->addPropertyToType(tm, "long", propName, "Integer"); - - mdg->setDefault(ns1, testName, "long", (long)400); - - mdg->addPropertyToType(tm, "longs", propName, "Integer", true); - - mdg->setDefault(ns1, testName, "longs", (long)800); - - mdg->addPropertyToType(tm, "longlong", propName, "Long"); - - mdg->setDefault(ns1, testName, "longlong", (int64_t)500); - - mdg->addPropertyToType(tm, "float", propName, "Float"); - - mdg->setDefault(ns1, testName, "float", (float)600.0); - - mdg->addPropertyToType(tm, "longdouble", propName, "Double"); - - mdg->setDefault(ns1, testName, "longdouble", (long double)700.0); - - mdg->addPropertyToType(tm, "date", propName, "Date"); - - mdg->setDefault(ns1, testName, "date", (long)900); - - mdg->addPropertyToType(tm, "string", propName, "String"); - - wchar_t* help = new wchar_t[4]; - help[0] = 'H'; - help[1] = 'E'; - help[2] = 'L'; - help[3] = 'P'; - - mdg->setDefault(ns1, testName, "string", help, 4); - - delete help; - - char* help2 = new char[4]; - help2[0] = 'H'; - help2[1] = 'E'; - help2[2] = 'L'; - help2[3] = 'P'; - - mdg->addPropertyToType(tm, "bytes", propName, "Bytes"); - - mdg->setDefault(ns1, testName, "bytes", help2, 4); - - delete help2; - - mdg->addPropertyToType(tm, "object", ns1, objectName); - - DataObjectPtr test = mdg->create((Type&)tm); - - FILE *f = fopen("defaults.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open file defaults.dat" << endl; - return 0; - } - - - fprintf(f, "Boolean default is true: %d\n",test->getBoolean("boolean")); - - fprintf(f, "Byte default is d: %d\n",test->getByte("byte")); - - fprintf(f, "Character default is e: %d\n",test->getCharacter("character")); - - fprintf(f, "Short default is 300: %d\n",test->getShort("short")); - - fprintf(f, "Long default is 400: %d\n",test->getInteger("long")); - - try { - fprintf(f, "Longs default is 800: %d\n" ,test->getInteger("longs[1]")); - } - catch (SDOIndexOutOfRangeException ex) - { - fprintf(f,"Expected index out of range OK\n"); - } - - fprintf(f,"Float default is 600: %.3f\n",test->getFloat("float")); - - fprintf(f, "LongDouble default is 700: %.3f\n",(float)test->getDouble("longdouble")); - - fprintf(f, "String default is HELP: "); - unsigned int lenw = test->getLength("string"); - if (lenw > 0) { - char* tw = new char[lenw]; - test->getBytes("string",tw,lenw); - for (int i=0;i<lenw;i++) - { - fprintf(f,"%c",tw[i]); - } - fprintf(f,"\n"); - } - - fprintf(f,"Bytes default is HELP: "); - unsigned int len = test->getLength("bytes"); - if (len > 0) { - char* tc = new char[len]; - test->getBytes("bytes",tc,len); - for (int i=0;i<len;i++) - { - fprintf(f,"%c", tc[i]); - } - fprintf(f,"\n"); - } - fclose (f); - return comparefiles("defaults.dat","defaults.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << e.getEClassName() << " in "; - if (!silent)cout << e.getFileName() << " at line "; - if (!silent)cout << e.getLineNumber() << endl; - if (!silent)cout << e.getFunctionName() << " "; - if (!silent)cout << e.getMessageText() << endl; - return 0; - } -} - - -int sdotest::showdefault(FILE *f, const Type& tm) -{ - const Property& pboolean = tm.getProperty("boolean"); - const Property& pbyte = tm.getProperty("byte"); - const Property& pcharacter = tm.getProperty("character"); - const Property& pshort = tm.getProperty("short"); - const Property& plong = tm.getProperty("long"); - const Property& plongs = tm.getProperty("longs"); - const Property& plonglong = tm.getProperty("longlong"); - const Property& pfloat = tm.getProperty("float"); - const Property& plongdouble = tm.getProperty("longdouble"); - const Property& pdate = tm.getProperty("date"); - const Property& pstring = tm.getProperty("string"); - const Property& pbytes = tm.getProperty("bytes"); - const Property& pobject = tm.getProperty("object"); - - // first see what we get for the default when there is none - - bool bb = pboolean.getBooleanDefault(); - const char* bs = pboolean.getCStringDefault(); - - fprintf(f, "Boolean default is : %d\n",bb); - fprintf(f, "Boolean default as a string is %s\n",bs); - - char cc = pbyte.getByteDefault(); - const char* cs = pbyte.getCStringDefault(); - fprintf(f, "Byte default is : %d\n",cc); - fprintf(f, "Byte default as a string is %s\n",cs); - - wchar_t wc = pcharacter.getCharacterDefault(); - const char* ws = pcharacter.getCStringDefault(); - fprintf(f, "Character default is : %d\n",wc); - fprintf(f, "Character default as a string is %s\n",ws); - - short ss = pshort.getShortDefault(); - fprintf(f, "Short default is : %d\n",ss); - - long ll = plong.getIntegerDefault(); - fprintf(f, "Integer default is : %d\n",ll); - long ll2 = plongs.getLongDefault(); - fprintf(f, "Integer many default is : %d\n",ll2); - - int64_t llll = plonglong.getLongDefault(); - fprintf(f, "Long default is : %ld\n",(long)llll); - - float ff = pfloat.getFloatDefault(); - fprintf(f, "Float default is : %.3f\n",ff); - - long double dd = plongdouble.getDoubleDefault(); - fprintf(f, "Double default is : %.3f\n",(float)dd); - - const SDODate& sd = pdate.getDateDefault(); - fprintf(f, "Date default is : %d\n",sd.getTime()); - - unsigned int l = pstring.getDefaultLength(); - if (l > 0) - { - wchar_t * buf = new wchar_t[l+1]; - l = pstring.getStringDefault(buf,l); - fprintf(f, "String default length is %d\n", l); - for (int i=0;i<l;i++) - { - fprintf(f, "%c",buf[i]); - } - fprintf(f, "\n"); - delete buf; - const char* wws = pstring.getCStringDefault(); - fprintf(f, "String default as a string is %s\n", wws); - - } - else - { - fprintf(f, "String default is zero length\n"); - } - - l = pbytes.getDefaultLength(); - if (l > 0) - { - char * buf = new char[l+1]; - l = pbytes.getBytesDefault(buf,l); - fprintf(f, "Bytes default length is %d\n",l); - for (int i=0;i<l;i++) - { - fprintf(f, "%c", buf[i]); - } - fprintf(f, "\n"); - delete buf; - } - else - { - fprintf(f, "Bytes default is zero length\n"); - } - return 1; -} - - -int sdotest::propdefaulttest() -{ - try{ - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","DefaultTest"); - mdg->addType("myspace","AnObject"); - - const Type& tm = mdg->getType("myspace", "DefaultTest"); - const Type& to = mdg->getType("myspace", "AnObject"); - - mdg->addPropertyToType(tm,"boolean", "commonj.sdo","Boolean"); - mdg->addPropertyToType(tm,"byte", "commonj.sdo","Byte"); - mdg->addPropertyToType(tm,"character", "commonj.sdo","Character"); - mdg->addPropertyToType(tm,"short", "commonj.sdo","Short"); - mdg->addPropertyToType(tm,"long", "commonj.sdo","Integer"); - mdg->addPropertyToType(tm,"longs", "commonj.sdo","Integer", true); - mdg->addPropertyToType(tm,"longlong", "commonj.sdo","Long"); - mdg->addPropertyToType(tm,"float", "commonj.sdo","Float"); - mdg->addPropertyToType(tm,"longdouble", "commonj.sdo","Double"); - mdg->addPropertyToType(tm,"date", "commonj.sdo","Date"); - mdg->addPropertyToType(tm,"string", "commonj.sdo","String"); - mdg->addPropertyToType(tm,"bytes", "commonj.sdo","Bytes"); - mdg->addPropertyToType(tm,"object" , "myspace","AnObject"); - - //cout << "Testing unset defaults....." << endl; - - FILE *f; - - f = fopen("showdefault1.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open showdefault1.dat" << endl; - return 0; - } - showdefault(f, tm); - - fclose (f); - if (!comparefiles("showdefault1.dat","showdefault1.txt")) - { - return 0; - } - - //now set all the defaults.... - - mdg->setDefault("myspace","DefaultTest","boolean", true); - mdg->setDefault("myspace","DefaultTest","byte", (char)'d'); - mdg->setDefault("myspace","DefaultTest","character", (wchar_t)'e'); - mdg->setDefault("myspace","DefaultTest","short", (short)300); - mdg->setDefault("myspace","DefaultTest","long", (long)400); - mdg->setDefault("myspace","DefaultTest","longs", (long)800); - mdg->setDefault("myspace","DefaultTest","longlong", (int64_t)500); - mdg->setDefault("myspace","DefaultTest","float", (float)600.0); - mdg->setDefault("myspace","DefaultTest","longdouble", (long double)700.0); - mdg->setDefault("myspace","DefaultTest","date", (long)900); - - - wchar_t* help = new wchar_t[4]; - help[0] = 'H'; - help[1] = 'E'; - help[2] = 'L'; - help[3] = 'P'; - - mdg->setDefault("myspace","DefaultTest","string", help, 4); - - delete help; - - char* help2 = new char[4]; - help2[0] = 'H'; - help2[1] = 'E'; - help2[2] = 'L'; - help2[3] = 'P'; - - - mdg->setDefault("myspace","DefaultTest","bytes", help2, 4); - - delete help2; - - // and have another go at getting them.... - - f = fopen("showdefault2.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open showdefault2.dat" << endl; - return 0; - } - showdefault(f, tm); - - fclose (f); - if (!comparefiles("showdefault2.dat","showdefault2.txt")) - { - return 0; - } - - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << e.getEClassName() << " in "; - if (!silent)cout << e.getFileName() << " at line "; - if (!silent)cout << e.getLineNumber() << endl; - if (!silent)cout << e.getFunctionName() << " "; - if (!silent)cout << e.getMessageText() << endl; - return 0; - } - -} - -int sdotest::nulltest() -{ - - FILE *f = 0; - - try { - - int i; - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","NullTest",true, false); // sequenced - mdg->addType("myspace","AnObject"); - - const Type& tm = mdg->getType("myspace", "NullTest"); - const Type& to = mdg->getType("myspace", "AnObject"); - - mdg->addPropertyToType(tm,"boolean", "commonj.sdo","Boolean"); - mdg->addPropertyToType(tm,"byte", "commonj.sdo","Byte"); - mdg->addPropertyToType(tm,"character", "commonj.sdo","Character"); - mdg->addPropertyToType(tm,"short", "commonj.sdo","Short"); - mdg->addPropertyToType(tm,"long", "commonj.sdo","Integer"); - mdg->addPropertyToType(tm,"longlong", "commonj.sdo","Long"); - mdg->addPropertyToType(tm,"float", "commonj.sdo","Float"); - mdg->addPropertyToType(tm,"longdouble", "commonj.sdo","Double"); - mdg->addPropertyToType(tm,"date", "commonj.sdo","Date"); - mdg->addPropertyToType(tm,"string", "commonj.sdo","String"); - mdg->addPropertyToType(tm,"bytes", "commonj.sdo","Bytes"); - mdg->addPropertyToType(tm,"object", "myspace","AnObject"); - - - mdg->addPropertyToType(tm,"cs", "commonj.sdo","ChangeSummary"); - - DataObjectPtr test = mdg->create((Type&)tm); - DataObjectPtr ob = mdg->create((Type&)to); - DataObjectPtr ob2 = mdg->create((Type&)to); - DataObjectPtr ob3 = mdg->create((Type&)to); - - - f = fopen("nulltest.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open file nulltest.dat" << endl; - return 0; - } - - // first check all props are unset - - ChangeSummaryPtr cs = test->getChangeSummary(); - - cs->beginLogging(); - - PropertyList pl = test->getInstanceProperties(); - - fprintf(f, "Initially - all properties unset, and default values...\n"); - for (i=0;i<pl.size(); i++) - { - if (pl[i].isMany())continue; - try { - if (pl[i].getType().isDataType()) { - fprintf(f, "%s set:%d value ",pl[i].getName(),test->isSet(pl[i])); - const char *xx = test->getCString(pl[i]); - if (xx != 0) - { - fprintf(f, "%s\n",xx); - } - else - { - fprintf(f, " is empty \n"); - } - } - else { - fprintf(f,"%s set: %d value:", pl[i].getName(),test->isSet(pl[i])); - DataObjectPtr xy = test->getDataObject(pl[i]); - if (xy != 0) - { - fprintf(f, " is not empty\n"); - } - else - { - fprintf(f, " is empty \n"); - } - } - } - catch (SDOPropertyNotSetException) - { - if (!silent) cout << " WRONG - got not set exception" << endl; - return 0; - } - } - test->setBoolean("boolean", false); - test->setByte("byte",0); - test->setCharacter("character",0); - test->setShort("short",0); - test->setInteger("long",0); - test->setLong("longlong",0 ); - test->setFloat("float",0); - test->setDouble("longdouble",0 ); - test->setDate("date",0 ); - test->setString("string",0,0); - test->setBytes("bytes","",0) ; - test->setDataObject("object",0) ; - - - - fprintf(f, "Should now have all properties set, and zero values...\n"); - for (i=0;i<pl.size(); i++) - { - if (pl[i].isMany())continue; - if (pl[i].getType().isDataType()) { - fprintf(f, "%s set:%d value:%s\n", pl[i].getName(),test->isSet(pl[i]),test->getCString(pl[i])); - } - else { - fprintf(f,"%s set:%d dataobject\n", pl[i].getName(),test->isSet(pl[i])); - } - - } - - for (i=0;i<pl.size(); i++) - { - test->unset(pl[i]); - } - fprintf(f, "Should be back to having properties unset, and default values...\n"); - for (i=0;i<pl.size(); i++) - { - - try { - if (pl[i].isMany())continue; - if (pl[i].getType().isDataType()) { - fprintf(f, "%s set:%d value:",pl[i].getName(),test->isSet(pl[i])); - const char *xx = test->getCString(pl[i]); - if (xx != 0) - { - fprintf(f, "%s\n", xx); - } - else - { - fprintf(f, " is empty \n"); - } - } - else { - fprintf(f, "%s set: %d dataobject", pl[i].getName(),test->isSet(pl[i])); - DataObjectPtr dp = test->getDataObject(pl[i]); - if (dp != 0) - { - fprintf(f, " is not empty\n"); - } - else - { - fprintf(f, " is empty \n"); - } - } - } - catch (SDOPropertyNotSetException) - { - if (!silent) cout << "WRONG - not set exception" << endl; - return 0; - } - } - - SequencePtr s = test->getSequence(); - - s->addBoolean(test->getType().getProperty("boolean")/*"boolean"*/, false); - s->addByte(1/*"byte"*/,0); - s->addCharacter(2/*"character"*/,0); - s->addShort(3/*"short"*/,0); - s->addInteger(4/*"long"*/,0); - s->addLong(5/*"longlong"*/,0 ); - s->addFloat(6/*"float"*/,0); - s->addDouble(7/*"longdouble"*/,0 ); - // bug ...s->setDate(8/*"date"*/,0 ); - s->addString(9/*"string"*/,0,0); - s->addBytes(10/*"bytes"*/,"",0) ; - s->addDataObject(11/*"object"*/,0) ; - - for (i=0;i<pl.size(); i++) - { - try { - if (pl[i].isMany())continue; - if (pl[i].getType().isDataType()) { - fprintf(f, "%s set:%d value:", pl[i].getName(),test->isSet(pl[i])); - const char* xx = test->getCString(pl[i]); - if ( xx != 0) - { - fprintf(f, "%s\n", xx); - } - else - { - fprintf(f, " is empty \n"); - } - } - else { - fprintf(f, "%s set:%d dataobject", pl[i].getName(),test->isSet(pl[i])); - DataObjectPtr db = test->getDataObject(pl[i]); - if (db != 0) - { - fprintf(f, "\n"); - } - else - { - fprintf(f, " is empty \n"); - } - } - } - catch (SDOPropertyNotSetException) - { - if (!silent) cout << "WRONG - not set exception " << endl; - return 0; - } - } - ChangedDataObjectList& cl = cs->getChangedDataObjects(); - for ( i =0; i< cl.size() ; i++) - { - if (cs->isCreated(cl[i])) { - fprintf(f, "Created dataobject\n"); - } - if (cs->isDeleted(cl[i])) { - fprintf(f, "Deleted dataobject\n"); - } - if (cs->isModified(cl[i])) { - fprintf(f, "Modified dataobject\n"); - } - } - - // now unset all the properties... - for (i=0;i<pl.size(); i++) - { - test->unset(pl[i]); - } - - for (i=0;i<pl.size(); i++) - { - if (!pl[i].isMany() ) - { - test->setNull(i); - } - } - - fprintf(f, "Should all be null, and default values...\n"); - for (i=0;i<pl.size(); i++) - { - if (pl[i].isMany())continue; - if (pl[i].getType().isDataType()) { - // check for a null first!! - fprintf(f, "%s isNull:%d set:%d value:",pl[i].getName(), - test->isNull(i),test->isSet(pl[i])); - if (test->getCString(pl[i]) == 0) fprintf(f, "\n"); - else fprintf(f, "%s\n", test->getCString(pl[i])); - } - else { - fprintf(f, "%s isNull:%d set:%d value",pl[i].getName(), - test->isNull(i),test->isSet(pl[i])); - if (test->getDataObject(pl[i]) == 0) fprintf(f, " empty\n"); - else fprintf(f, " dataobject\n"); - } - } - - s->addBoolean(test->getType().getProperty("boolean")/*"boolean"*/, true); - s->addByte(1/*"byte"*/,1); - s->addCharacter(2/*"character"*/,1); - s->addShort(3/*"short"*/,1); - s->addInteger(4/*"long"*/,1); - s->addLong(5/*"longlong"*/,1 ); - s->addFloat(6/*"float"*/,1.0); - s->addDouble(7/*"longdouble"*/,1.0 ); - // bug ...s->setDate(8/*"date"*/,0 ); - wchar_t* chs = new wchar_t[5]; - chs[0] = 'h'; - chs[1] = 'e'; - chs[2] = 'l'; - chs[3] = 'l'; - chs[4] = 'o'; - s->addString(9/*"string"*/,chs,5); - delete chs; - s->addBytes(10/*"bytes"*/,"hello",5) ; - s->addDataObject(11/*"object"*/,ob) ; - - fprintf(f, "Should all have values, and not be null..\n"); - for (i=0;i<pl.size(); i++) - { - - if (pl[i].isMany())continue; - if (pl[i].getType().isDataType()) { - fprintf(f, "%s isNull:%d set:%d value:",pl[i].getName(), - test->isNull(i),test->isSet(pl[i])); - if (test->getCString(pl[i]) == 0) fprintf(f, "\n"); - else fprintf(f, "%s\n", test->getCString(pl[i])); - - } - else { - fprintf(f, "%s isNull%d set:%d value:", pl[i].getName(), - test->isNull(i),test->isSet(pl[i])); - if (test->getDataObject(pl[i]) == 0) fprintf(f, " empty\n"); - else fprintf(f, " dataobject\n"); - } - } - - for (i=0;i<pl.size(); i++) - { - if (!pl[i].isMany() ) - { - test->setNull(pl[i]); - } - } - - fprintf(f, "Should all be null, and default values...\n"); - for (i=0;i<pl.size(); i++) - { - - try { - if (pl[i].isMany())continue; - if (pl[i].getType().isDataType()) { - fprintf(f, "%s isNull:%d set:%d value:",pl[i].getName(), - test->isNull(i),test->isSet(pl[i])); - if (test->getCString(pl[i]) == 0) fprintf(f, "\n"); - else fprintf(f, "%s\n",test->getCString(pl[i])); - - } - else { - fprintf(f, "%s isNull;%d set:%d value:", pl[i].getName(), - test->isNull(i),test->isSet(pl[i])); - if (test->getDataObject(pl[i]) == 0) fprintf(f," empty\n"); - else fprintf(f, " dataobject\n"); - } - } - catch (SDOPropertyNotSetException) - { - if (!silent) cout << " WRONG - not set exception" << endl; - return 0; - } - } - - cs->endLogging(); - fclose(f); - - int rr = comparefiles("nulltest.dat","nulltest.txt"); - - if (rr == 0) - { - if (!silent) cout << "Nulltest compare failed - probably because of differences is formats for doubles/floats" << endl; - // accept the test. - return 1; - - } - - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent) cout << "Nulltest failed " << e << endl; - if (f) fclose(f); - return 0; - } -} - -int sdotest::maintest() -{ - - int i; - - FILE *f; - - try{ - - f = fopen("maintest.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Failed to open maintest.dat" << endl; - } - - fprintf(f,"Test Program starting to create types ...\n"); - - /* First create a DataFactory , then add some types and props...*/ - - /* This is dms creation of metadata */ - - - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Company"); - mdg->addType("myspace","Department"); - // manager is a sequenced type... - mdg->addType("myspace","Manager", true, false); - - mdg->addType("myspace","Employee"); - - // tests of base types - - // note - base type of a seq type must be seq... - mdg->addType("myspace","Person", true, false); - - mdg->addType("myspace","DerivedString"); - mdg->addType("myspace","SubDepartment"); - - /* Now add the properties to the types...*/ - - const Type& tc = mdg->getType("myspace","Company"); - const Type& ts = mdg->getType("commonj.sdo","String"); - const Type& ti = mdg->getType("commonj.sdo","Integer"); - const Type& tf = mdg->getType("commonj.sdo","Float"); - const Type& tm = mdg->getType("myspace","Manager"); - - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - - const Type& td = mdg->getType("myspace","Department"); - const Type& te = mdg->getType("myspace","Employee"); - const Type& tp = mdg->getType("myspace","Person"); - const Type& tds= mdg->getType("myspace","DerivedString"); - const Type& tsd= mdg->getType("myspace","SubDepartment"); - - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - - - - - - /* By type, with a type */ - mdg->addPropertyToType(tc,"name",ts); - - /* by name/uri with a type */ - mdg->addPropertyToType("myspace","Company","address",ts); - - /* by type with name/uri */ - mdg->addPropertyToType(tc,"departments", "myspace","Department", - true); - - - // add a reference to employee of the month - mdg->addPropertyToType(tc,"employee of the month", "myspace","Employee", - false, false, false); - - - - /* A list of floats */ - - mdg->addPropertyToType(tc,"floatlist", tf,true); - - mdg->addPropertyToType(tc,"pdg", tm); - - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - - mdg->addPropertyToType(td,"name", ts); - - mdg->addPropertyToType(td,"id", ti); - - mdg->addPropertyToType(td,"manager", tm); - - mdg->addPropertyToType(tm,"name", ts); - - - mdg->addPropertyToType(te,"name",ts); - mdg->addPropertyToType(td,"employees",te,true,false,true); - - - - // emps and managers are both people (in theory). - mdg->setBaseType(te,tp); - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - mdg->setBaseType(tm,tp); - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - mdg->addPropertyToType(tp,"haircolour", ts); - mdg->addPropertyToType(tp,"name", ts); - mdg->addPropertyToType(tm,"officeid", ts); - mdg->addPropertyToType(te,"cubelocation", ts); - - mdg->addPropertyToType(tc,"shareholder", tp); - - //derived string - derived from string - cannot have properties!!! - mdg->setBaseType(tds,ts); - - // subdept derived from dept - mdg->setBaseType(tsd,td); - mdg->addPropertyToType(tsd,"subname",ts); - - mdg->addPropertyToType(tc, "substring",tds); - - /* by type with name/uri */ - mdg->addPropertyToType(tc,"subdepartments", "myspace","SubDepartment", - true); - - /* This is the data structure */ - - - - /* company - ----shareholder (Person) - ----substring (DerivedString) - * ----name (String) - * ----pdg (Manager) - (inherits haircolour from person, - has name as duplicate property - should use person.name - has officeid) - * ----name(String) - ----haircolour(String) - ----officeid(String) - * - * ----depts[] (Department) - * ----name (String) - * ----id (Integer) - * ----manager (Manager). - * ----name(String) - ----haircolour(String) from Person - * ----employees[] (Employee) - * ----name(String) - ----haircolour(String) - from Person - ----cubelocation(String) - --subdepartments[] (SubDepartment) - ----name (String) from Department - ----id (String) from Department - ----manager (Manager) from Department - ----employees (from department) - */ - - /* Now add a primitive type test to the manager */ - mdg->addPropertyToType(tm,"string",ts); - - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - - mdg->addPropertyToType(tm,"boolean", "commonj.sdo","Boolean"); - mdg->addPropertyToType(tm,"byte", "commonj.sdo","Byte"); - mdg->addPropertyToType(tm,"character", "commonj.sdo","Character"); - mdg->addPropertyToType(tm,"short", "commonj.sdo","Short"); - mdg->addPropertyToType(tm,"long", "commonj.sdo","Integer"); - mdg->addPropertyToType(tm,"longlong", "commonj.sdo","Long"); - mdg->addPropertyToType(tm,"float", "commonj.sdo","Float"); - mdg->addPropertyToType(tm,"longdouble", "commonj.sdo","Double"); - mdg->addPropertyToType(tm,"date", "commonj.sdo","Date"); - // dead mdg->addPropertyToType(tm,"charptr", "commonj.sdo","Bytes"); - mdg->addPropertyToType(tm,"string", "commonj.sdo","String"); - mdg->addPropertyToType(tm,"bytes", "commonj.sdo","Bytes"); - - - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - - // create a few aliases - - mdg->setAlias("myspace","Company","TheFirm"); - mdg->setAlias("myspace","Company","departments","TheDepartments"); - mdg->setAlias("myspace","Company","TheBigFirm"); - mdg->setAlias("myspace","Company","TheLittleFirm"); - - const Type& tlf = mdg->getType("myspace","TheBigFirm"); - - fprintf(f, "Should be Company :%s\n", tlf.getName()); - - fprintf(f, "Should be 3: %d\n", tlf.getAliasCount()); - - for (int ai = 0; ai < tlf.getAliasCount(); ai++) - { - fprintf(f, "Alias: %s\n",tlf.getAlias(ai)); - } - - - // Change summary test begins - mdg->addPropertyToType(tc,"csumm","commonj.sdo","ChangeSummary"); - // should log an error - but not fail - mdg->addPropertyToType(td,"csumm","commonj.sdo","ChangeSummary"); - - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - - fprintf(f, "BEFORE RESOLUTION\n"); - printDataStructure(f, mdg); - - /* Now create some objects in the dg */ - -// DataObjectPtr dor; - - const Type& tcc = mdg->getType("myspace","Company"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - fprintf(f, "AFTER RESOLUTION\n"); - printDataStructure(f, mdg); - - fprintf(f, "Manager is sequenced?%d\n",tm.isSequencedType()); - - dor->setCString("substring","This is the sub string - its primitive, but not a string"); - - const char* subby = dor->getCString("substring"); - - fprintf(f, "%s\n", subby); - - dor->setCString("name","acmecorp"); - const char* chnam = dor->getCString("name"); - fprintf(f, "%s\n", chnam); - - dor->unset("name"); - - dor->setCString("name","acmecorp"); - - // Set up the two departments before logging starts - - DataObjectPtr dep1 = dor->createDataObject("departments"); - dep1->setCString("name","Developement"); - - DataObjectPtr dep2= dor->createDataObject("departments"); - dep2->setCString("name","Marketing"); - - // add a couple of floats to the floatlist - DataObjectList& dolist = dor->getList("floatlist"); - dolist.append((float)1.4); - dolist.append((float)1.5); - - //TODO - change summaries should live on the DataObject - // interface - can this be done? - - ChangeSummaryPtr cs = dor->getChangeSummary(); - cs->beginLogging(); - - const char* sname = dor->getCString("name"); - - fprintf(f, "%s\n", sname); - - // This should put a created entry in the cs. - - // This should be equivalent to the alternative below......... - const Type& tcd = mdg->getType("myspace","Manager"); - DataObjectPtr pdg = mdg->create((Type&)tcd); - - // This set should put the entry into the change summary. - // both in the creations and in the changes. - dor->setDataObject("pdg",pdg); - - - // try getting the boolean as a string - should be defaulted to false: - const char *bol; - try{ - bol = pdg->getCString("boolean"); - if (bol != 0) - { - fprintf(f, "Expected default boolean (false) : %s\n",bol); - } - else - { - fprintf(f, " is empty \n"); - } - } - catch (SDOPropertyNotSetException) - { - if (!silent)cout << "WRONG handled notset exception " << endl; - fclose(f); - return 0; - } - - pdg->setBoolean("boolean", true); - bol = pdg->getCString("boolean"); - fprintf(f, "Expected boolean (true) : %s\n",bol); - - // and the widechars? - const char* wdc; - try { - wdc = pdg->getCString("string"); - if (wdc != 0) - { - fprintf(f, "Expected default string (0) : ",wdc); - } - else - { - fprintf(f, " is empty \n"); - } - } - catch (SDOPropertyNotSetException) - { - if (!silent) cout << "WRONG handled notset exception" <<endl; - fclose (f); - return 0; - } - - - // this should get a valid sequence.. - - SequencePtr sq = pdg->getSequence(); - - - // The alternative............................................. - // Here the create should put the entry into the change summary - //DataObject* pdg = dor->createDataObject("pdg"); - - // This should do nothing to the cs, as its in a created object - pdg->setCString("name","Jacques LePlace"); - - // This should modify the property, and add an item to the sequence. - sq->addCString("name", "Jacques LePlagne"); - - - // The creation entry should be removed from the change summary - // The entry should no longer exist and the pointer is invalid - pdg->detach(); - - pdg = dor->getDataObject("pdg"); - - if (pdg != 0) - { - fprintf(f, " A deleted data object should be zero and was not\n"); - } - - pdg = mdg->create((Type&)tcd); - - // A new creation in the change summary - dor->setDataObject("pdg",pdg); - - // No modification as the object is created - pdg->setCString("name", "Mr Horace Walker"); - - sq = pdg->getSequence(); - - try { - // element 0 is the first setting - which we just deleted! - sq->setCStringValue(0,"Unable to set"); - } - catch (SDOIndexOutOfRangeException) - { - // thats OK - sq->addCString("name","Now able to set"); - } - - - sq->addText(" - should say now able to set\n"); - - for (int ii=0;ii<sq->size();ii++) - { - fprintf(f, "%s\n", sq->getCStringValue(ii)); - } - - try { - const char* n = pdg->getCString("name"); - fprintf(f, " Name from deleted item: %s\n",n); - } - catch (SDOPropertyNotFoundException e) - { - // thats ok - fprintf(f, "Correctly caught prop not found\n"); - } - - - // This should put a change in the cs. - dor->setCString("name","mega-new-acmecorp"); - - - // At this point, we should know that pdg was empty and is now - // a created object. And that the old string for company name - // was "acmecorp" - - // cs->DebugPrint(); - - - /* Now set up the primitive type test on PDG */ - - pdg->setCString("string","Hello I am a string"); - pdg->setBoolean("boolean",true); - pdg->setByte("byte",23); - pdg->setCharacter("character",45); - pdg->setShort("short",34); - pdg->setLong("long", 56); - pdg->setDouble("longdouble",89.0); - pdg->setFloat("float",90.0); - pdg->setDate("date",(time_t)200); - - // RHEL 4 has problems processing 64 bit integer constants, so we'll do it the hard way - // This is overkill but gives the option to vary the value a bit. - - int64_t largeInt1 = 0xFFFF; - int64_t largeInt2 = 0x7FFF; - for (int j = 0; j < 3; j++) - { - largeInt1 <<= 16; - largeInt1 += 0xFFFF; - largeInt2 <<= 16; - largeInt2 += 0xFFFF; - } - - pdg->setLong("longlong", largeInt1); - - // try reading the longlong as a string - const char *lls = pdg->getCString("longlong"); - fprintf(f, "0xffffffffffffffff = : %s\n", lls); - - pdg->setLong("longlong", largeInt2); - - lls = pdg->getCString("longlong"); - fprintf(f, "0x7fffffffffffffff = %s\n",lls); - - pdg->setLong("longlong",0x7FFFFFFF); - lls = pdg->getCString("longlong"); - fprintf(f, "0x7fffffff = %s\n",lls); - - pdg->setLong("longlong",0x80000000); - lls = pdg->getCString("longlong"); - fprintf(f, "0x80000000 = %s\n",lls); - - pdg->setLong("longlong",78); - - - wchar_t* wide = new wchar_t[4]; - wide[0] = 'W'; - wide[1] = 'i'; - wide[2] = 'd'; - wide[3] = 'e'; - - pdg->setString("string",wide,4); - - // and as a string? - wdc = pdg->getCString("string"); - fprintf(f, " Expected Wide - got : %s\n",wdc); - - delete wide; - - char* thin = new char[4]; - thin[0] = 'T'; - thin[1] = 'h'; - thin[2] = 'i'; - thin[3] = 'n'; - - pdg->setBytes("bytes",thin,4); - - const char* dc = pdg->getCString("bytes"); - fprintf(f, " Expected Thin - got : %s\n",dc); - - delete thin; - - const char* ps = pdg->getCString("string"); - fprintf(f, "Expecting string, got %s\n", ps); - - bool pb = pdg->getBoolean("boolean"); - fprintf(f, "Expected bool true, got %d\n",pb); - - char pc = pdg->getByte("byte"); - fprintf(f, "Expected char 23, got %d\n",pc); - - wchar_t pw = pdg->getCharacter("character"); - fprintf(f, "expected wchar 45, got %d",pw); - - short pss = pdg->getShort("short"); - fprintf(f, "Expected short 34, got %d\n",pss); - - long pl = pdg->getLong("long"); - fprintf(f, "Expected long 56 , got %ld\n",pl); - - int64_t pi = pdg->getLong("longlong"); - fprintf(f, "Expected long long 78, got %ld\n",(long)pi); - - long double ld = pdg->getDouble("longdouble"); - fprintf(f, "Expected long double 89, got %.3f\n",(float)ld); - - float pf = pdg->getFloat("float"); - fprintf(f, "Expected float 90, got %.3f\n",pf); - - SDODate pt = pdg->getDate("date"); - fprintf(f, "Expected time_t 200, got %d\n",pt.getTime()); - - - wchar_t* result; - // get the length to allocate: - unsigned int widelen = pdg->getString("string",0,0); - if (widelen > 0) { - result = new wchar_t[widelen]; - widelen = pdg->getString("string",result,widelen); - for ( i=0;i<widelen;i++) - { - fprintf(f, "Wide[%d]=%d\n",i,result[i]); - } - delete result; - } - - - char* thinresult; - - unsigned int thinlen = pdg->getBytes("bytes",0,0); - if (thinlen > 0) { - thinresult = new char[thinlen]; - thinlen = pdg->getBytes("bytes",thinresult,thinlen); - for ( i=0;i<thinlen;i++) - { - fprintf(f, "Thin[%d]=%d\n",i,thinresult[i]); - } - delete thinresult; - } - - - // add two more departments - the first should provoke the - // saving of a list in a change summary - - DataObjectPtr dep3 = dor->createDataObject("departments"); - dep3->setCString("name","Architecture"); - - // The second should do no logging in the change summary - - DataObjectPtr dep4= dor->createDataObject("departments"); - dep4->setCString("name","Pyrotechnics"); - - - // create another one using tha alias - DataObjectPtr dep5= dor->createDataObject("TheDepartments"); - dep5->setCString("name","Accounts"); - - DataObjectPtr emp1 = dep1->createDataObject("employees"); - emp1->setCString("name","Eric"); - - - DataObjectPtr emp2 = dep1->createDataObject("employees"); - emp2->setCString("name","Bill"); - - // now lets make eric employee of the month - dor->setDataObject("employee of the month",emp1); - - // no - actually it was bill - dor->setDataObject("employee of the month",emp2); - - - - // Now add to the list of floats, hopefully the two old - // values will get change summarised. - - dolist = dor->getList("floatlist"); - float f1 = dolist.getFloat(0); - - fprintf(f, "%.3f",f1); - - dolist.setFloat(0,(float)567.7); - - f1 = dolist.getFloat(0); - - fprintf(f, "%.3f",f1); - - dolist.insert(0,(float)34.56); - - - DataObjectPtr ddd = dor->getDataObject("departments[1]/employees[2]"); - - const char* ch = ddd->getCString("name"); - - fprintf(f, "Should be Bill:%s\n",ch); - - - DataObjectPtr ddd2 = dor->getDataObject("TheDepartments[1]/employees[2]"); - - const char* ch2 = ddd2->getCString("name"); - - fprintf(f, "Should be Bill:%s\n",ch2); - - - DataObjectPtr dempofm = dor->getDataObject("employee of the month"); - - const char* chh = dempofm->getCString("name"); - - fprintf(f, "The employee of the month is %s\n",chh); - - // Suppose we delete bill - - DataObjectList& dlo = dor->getList("departments[1]/employees"); - DataObjectPtr fred = dlo.remove(1); - - const char* chh2 = fred->getCString("name"); - - dempofm = dor->getDataObject("employee of the month"); - - // uncertain bahaviour - should the reference be zeroed - // becuase the item is removed from a list or not? - // Right now it doesnt get done, as the assumption is that - // the object will be put somewhere else, or dropped. - // fprintf(f, "Emp of month is now zero : %p",dempofm); - - - /* "The client would create a data mediator and get graph which - would return the root data object " */ - - const char* boss = dor->getCString("pdg/name"); - - fprintf(f, "%s\n", boss); - - DataObjectPtr mypdg = dor->getDataObject("pdg"); - - Type::Types t = mypdg->getTypeEnum(); - - if (t != Type::OtherTypes) { - fprintf(f, "pdg correctly identified\n"); - } - - const char* boss2 = mypdg->getCString("name"); - - fprintf(f, "%s\n", boss2); - - /* getPrimitiveArrayListVectorThingy() */ - - DataObjectList& deps = dor->getList("departments"); - - fprintf(f, "size of list %d\n",deps.size()); - - DataObjectPtr dout = deps[0]; - - dout->setCString("name","Research And Development"); - - const char* snew = dout->getCString("name"); - - fprintf(f, "%s\n", snew); - - string snew2 = dor->getCString("departments[1 ] /name"); - - fprintf(f, "%s\n", snew2.c_str()); - - for (int lx = 0; lx < deps.size(); lx++) - { - fprintf(f, "Department: %s\n",deps[lx]->getCString("name")); - } - - cs->endLogging(); - - - try { - // should fail - if localtype not set - dor->setCString("departments","department label"); - const char* slabel = dor->getCString("departments"); - fprintf(f, "String in list type:%s\n", slabel); - return 0; - } - catch (SDORuntimeException e) - { - fprintf(f, "Normal expected exception\n"); - } - - try - { - const char* snew3 = dor->getCString(" ]awep50wi4,0qw9q]45]# q2345 -t -v3lt6o -56o 56=-o7nl ewv/;sdl f[vxddglh]px dfju/ g#k./jh#.k./"); - fprintf(f, "%s\n", snew3); - return 0; - } - catch (SDOPropertyNotFoundException e) - { - fprintf(f, "Normal Invalid path exception\n"); - } - - try - { - - // catch a and a property not found - const Property& pp = dor->getType().getProperty("notaproperty"); - return 0; - } - catch (SDOPropertyNotFoundException e) - { - fprintf(f, "Normal SDOPropertyNotFound exception\n"); - } - fclose(f); - return comparefiles("maintest.dat","maintest.txt"); - - } - - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << " in "; - if (!silent) cout << e.getFileName() << " at line "; - if (!silent) cout << e.getLineNumber() << endl; - if (!silent) cout << e.getFunctionName() << " "; - if (!silent) cout << e.getSeverity() << " "; - if (!silent) cout << e.getMessageText() << endl; - return 0; - } -} - -int sdotest::getproptest() -{ - // should be able to get a property by xpath... - - FILE *f; - - f = fopen("getproptest.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open getproptest.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Company"); - mdg->addType("myspace","Department"); - // manager is a sequenced type... - mdg->addType("myspace","Manager", true, false); - mdg->addType("myspace","Employee"); - - - /* Now add the properties to the types...*/ - - const Type& tc = mdg->getType("myspace","Company"); - const Type& ts = mdg->getType("commonj.sdo","String"); - const Type& ti = mdg->getType("commonj.sdo","Integer"); - const Type& tf = mdg->getType("commonj.sdo","Float"); - const Type& tm = mdg->getType("myspace","Manager"); - const Type& td = mdg->getType("myspace","Department"); - const Type& te = mdg->getType("myspace","Employee"); - - mdg->addPropertyToType(tc,"name",ts); - - mdg->addPropertyToType(tc,"address",ts); - - mdg->addPropertyToType(tc,"departments", td,true); - - // add a reference to employee of the month - mdg->addPropertyToType(tc,"employee of the month", te, false, false, false); - - /* A list of floats */ - mdg->addPropertyToType(tc,"floatlist", tf,true); - mdg->addPropertyToType(tc,"director", tm); - - mdg->addPropertyToType(td,"name", ts); - mdg->addPropertyToType(td,"id", ti); - - mdg->addPropertyToType(td,"manager", tm); - mdg->addPropertyToType(tm,"name", ts); - - mdg->addPropertyToType(te,"name",ts); - mdg->addPropertyToType(td,"employees",te,true,false,true); - - //company/departments/employees. - // company - name, address, floatlist - // department name, id, manager - // employee name - - - const Type& tcc = mdg->getType("myspace","Company"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - - const Property& p = dor->getType().getProperty("name"); - fprintf(f, "Companys name property is: %s\n",p.getName()); - - const Property& p1 = dor->getType().getProperty("departments"); - fprintf(f, "Companys dept property is:%s\n",p1.getName()); - - // now try some xpaths... - - try { - - const Property& p2 = dor->getType().getProperty("departments/employees"); - fprintf(f,"Departments empl property is:%s\n",p2.getName()); - - const Property& p3 = dor->getType().getProperty("departments[456]/employees[123]"); - fprintf(f,"Departments empl property is:%s\n", p3.getName()); - - const Property& p4 = dor->getType().getProperty("departments.34/employees.123/name"); - fprintf(f,"Employees name property is:%s\n", p4.getName()); - - } - catch (SDORuntimeException e) - { - if (!silent) cout <<"Exceptions - xpath didnt work" << endl; - return 0; - } - try { - const Property& p5 = dor->getType().getProperty("departments.34/[]/name"); - fprintf(f,"Employees name property is:%s\n",p5.getName()); - return 0; - } - catch (SDORuntimeException e) - { - fprintf(f,"Normal exception caught\n"); - } - - try { - const Property& p6 = dor->getType().getProperty("deptartments"); - fprintf(f,"Deptartments property is:%s\n",p6.getName()); - return 0; - } - catch (SDORuntimeException e) - { - fprintf(f,"Normal exception caught\n"); - } - - try { - const Property& p7 = dor->getType().getProperty("../company"); - fprintf(f,"Company property is:%s\n",p7.getName()); - return 0; - } - catch (SDORuntimeException e) - { - fprintf(f,"Normal exception caught\n"); - } - fclose (f); - return comparefiles("getproptest.dat","getproptest.txt"); - -} - -int sdotest::querytest() -{ - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - FILE *f = fopen("querytest.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open querytest.dat" << endl; - return 0; - } - - mdg->addType("myspace","Company"); - mdg->addType("myspace","Department"); - // manager is a sequenced type... - mdg->addType("myspace","Manager", true, false); - mdg->addType("myspace","Employee"); - - - /* Now add the properties to the types...*/ - - - const Type& tstring = mdg->getType("commonj.sdo","String"); - const Type& tbool= mdg->getType("commonj.sdo","Boolean"); - const Type& tbyte= mdg->getType("commonj.sdo","Byte"); - const Type& tchar= mdg->getType("commonj.sdo","Character"); - const Type& tint= mdg->getType("commonj.sdo","Integer"); - const Type& tlong= mdg->getType("commonj.sdo","Long"); - const Type& tfloat= mdg->getType("commonj.sdo","Float"); - const Type& tbytes = mdg->getType("commonj.sdo","Bytes"); - const Type& tdouble= mdg->getType("commonj.sdo","Double"); - - const Type& tc = mdg->getType("myspace","Company"); - const Type& tm = mdg->getType("myspace","Manager"); - const Type& td = mdg->getType("myspace","Department"); - const Type& te = mdg->getType("myspace","Employee"); - - mdg->addPropertyToType(tc,"name",tstring); - - mdg->addPropertyToType(tc,"departments", td,true); - - // add a reference to employee of the month - mdg->addPropertyToType(tc,"employee of the month", te, false, false, false); - - mdg->addPropertyToType(tc,"director", tm); - - mdg->addPropertyToType(td,"name", tstring); - - mdg->addPropertyToType(td,"manager", tm); - - mdg->addPropertyToType(tm,"name", tstring); - - - mdg->addPropertyToType(td,"employees",te,true,false,true); - - mdg->addPropertyToType(te,"bool",tbool); - mdg->addPropertyToType(te,"byte",tbyte); - mdg->addPropertyToType(te,"char",tchar); - mdg->addPropertyToType(te,"int",tint); - mdg->addPropertyToType(te,"float",tfloat); - mdg->addPropertyToType(te,"long",tlong); - mdg->addPropertyToType(te,"double",tdouble); - mdg->addPropertyToType(te,"bytes",tbytes); - mdg->addPropertyToType(te,"string",tstring); - mdg->addPropertyToType(te,"name",tstring); - - //company/departments/employees. - // company - name, address, floatlist - // department name, id, manager - // employee name - - const Type& tcc = mdg->getType("myspace","Company"); - DataObjectPtr dor = mdg->create((Type&)tcc); - - DataObjectPtr dept = dor->createDataObject("departments"); - - DataObjectPtr emp1 = dept->createDataObject("employees"); - DataObjectPtr emp2 = dept->createDataObject("employees"); - DataObjectPtr emp3 = dept->createDataObject("employees"); - - emp1->setCString("name","Employee1"); - emp2->setCString("name","Employee2"); - emp3->setCString("name","Employee3"); - - - emp1->setBoolean("bool",true); - emp1->setByte("byte",'1'); - emp1->setCharacter("char",'1'); - emp1->setInteger("int",1); - emp1->setFloat("float",1.0); - emp1->setLong("long",1); - emp1->setDouble("double",1.0); - - char* bytes = new char[6]; - bytes[0] = 'h'; - bytes[1] = 'e'; - bytes[2] = 'l'; - bytes[3] = 'l'; - bytes[4] = 'o'; - - emp1->setBytes("bytes",bytes,5); - - wchar_t* mbytes = new wchar_t[6]; - mbytes[0] = 'h'; - mbytes[1] = 'e'; - mbytes[2] = 'l'; - mbytes[3] = 'l'; - mbytes[4] = 'o'; - - emp1->setString("string",mbytes,5); - - - emp2->setBoolean("bool",true); - emp2->setByte("byte",'2'); - emp2->setCharacter("char",'2'); - emp2->setInteger("int",200); - emp2->setFloat("float",200.0); - emp2->setLong("long",200); - emp2->setDouble("double",200.0); - - char* bytes2 = new char[6]; - bytes2[0] = 'h'; - bytes2[1] = 'e'; - bytes2[2] = 'l'; - bytes2[3] = 'p'; - bytes2[4] = '!'; - - emp2->setBytes("bytes",bytes2,5); - - wchar_t* mbytes2 = new wchar_t[6]; - mbytes2[0] = 'h'; - mbytes2[1] = 'e'; - mbytes2[2] = 'l'; - mbytes2[3] = 'p'; - mbytes2[4] = '!'; - - emp2->setString("string",mbytes2,5); - - emp3->setBoolean("bool",false); - emp3->setByte("byte",'4'); - emp3->setCharacter("char",'4'); - emp3->setInteger("int",400); - emp3->setFloat("float",400.0); - emp3->setLong("long",400); - emp3->setDouble("double",400.0); - - char* bytes3 = new char[6]; - bytes3[0] = 'w'; - bytes3[1] = 'o'; - bytes3[2] = 'm'; - bytes3[3] = 'p'; - bytes3[4] = '!'; - - emp3->setBytes("bytes",bytes3,5); - - wchar_t* mbytes3 = new wchar_t[6]; - mbytes3[0] = 'w'; - mbytes3[1] = 'o'; - mbytes3[2] = 'm'; - mbytes3[3] = 'p'; - mbytes3[4] = '!'; - - emp3->setString("string",mbytes3,5); - - - - try { - DataObjectPtr dob1 = dor->getDataObject("departments[1]/employees[bool=false]"); - fprintf(f, "Expected employee3: got %s\n",dob1->getCString("name")); - - DataObjectPtr dob2 = dor->getDataObject("departments[1]/employees[bool=true]"); - fprintf(f, "Expected employee1: got %s\n",dob2->getCString("name")); - - DataObjectPtr dob3 = dor->getDataObject("departments[1]/employees[byte=2]"); - fprintf(f, "Expected employee2: got %s\n",dob3->getCString("name")); - - DataObjectPtr dob4 = dor->getDataObject("departments[1]/employees[byte=1]"); - fprintf(f, "Expected employee1: got %s\n",dob4->getCString("name")); - - DataObjectPtr dob5 = dor->getDataObject("departments[1]/employees[bytes=hello]"); - fprintf(f, "Expected employee1: got %s\n",dob5->getCString("name")); - - DataObjectPtr dob5a = dor->getDataObject("departments[1]/employees[bytes=\"hello\"]"); - fprintf(f, "Expected employee1: got %s\n",dob5a->getCString("name")); - - DataObjectPtr dob5b = dor->getDataObject("departments[1]/employees[bytes='hello']"); - fprintf(f, "Expected employee1: got %s\n",dob5b->getCString("name")); - - DataObjectPtr dob6 = dor->getDataObject("departments[1]/employees[bytes=womp!]"); - fprintf(f, "Expected employee3: got %s\n",dob6->getCString("name")); - - DataObjectPtr dob7 = dor->getDataObject("departments[1]/employees[double=200.0]"); - fprintf(f, "Expected employee2: got %s\n",dob7->getCString("name")); - - DataObjectPtr dob8 = dor->getDataObject("departments[1]/employees[string=help!]"); - fprintf(f, "Expected employee2: got %s\n",dob8->getCString("name")); - - DataObjectPtr dob8a = dor->getDataObject("departments[1]/employees[string=\"help!\"]"); - fprintf(f, "Expected employee2: got %s\n",dob8a->getCString("name")); - - DataObjectPtr dob8b = dor->getDataObject("departments[1]/employees[string= 'help!']"); - fprintf(f, "Expected employee2: got %s\n",dob8b->getCString("name")); - } - catch (SDORuntimeException e) - { - if (!silent)cout << e.getEClassName() << " in "; - if (!silent)cout << e.getFileName() << " at line "; - if (!silent)cout << e.getLineNumber() << endl; - if (!silent)cout << e.getFunctionName() << " "; - if (!silent)cout << e.getMessageText() << endl; - return 0; - } - try { - DataObjectPtr dob1 = dor->getDataObject("departments[1]/employees[bool=doughnut]"); - return 0; - } - catch (SDORuntimeException e) - { - fprintf(f, "Normal exception caught\n"); - } - - try { - DataObjectPtr dob1 = dor->getDataObject("departments[4]/employees[bool=true]"); - return 0; - } - catch (SDORuntimeException e) - { - fprintf(f, "Normal exception caught\n"); - } - - try { - DataObjectPtr dob1 = dor->getDataObject("departments[1]/employees[bytes=whoomp!]"); - return 0; - } - catch (SDORuntimeException e) - { - fprintf(f, "Normal exception caught\n"); - } - - try { - DataObjectPtr dob1 = dor->getDataObject("departments[1]/blmployees[bool=true]"); - return 0; - } - catch (SDORuntimeException e) - { - fprintf(f, "Normal exception caught\n"); - } - - try { - DataObjectPtr dob1 = dor->getDataObject("departments[teapot]/employees[bool=true]"); - return 0; - } - - catch (SDORuntimeException e) - { - fprintf(f, "Normal exception caught\n"); - } - - delete bytes; - delete bytes2; - delete bytes3; - delete mbytes; - delete mbytes2; - delete mbytes3; - - fclose (f); - return comparefiles("querytest.dat","querytest.txt"); -} - -int sdotest::setmany() -{ - - FILE *f; - f = fopen("setmany.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open setmany.dat" << endl; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","School"); - mdg->addType("myspace","Class"); - mdg->addType("myspace","Teacher"); - mdg->addType("myspace","Child"); - mdg->addType("myspace","Address"); - - /* Now add the properties to the types...*/ - - - const Type& tstring = mdg->getType("commonj.sdo","String"); - const Type& tint = mdg->getType("commonj.sdo","Integer"); - const Type& ts = mdg->getType("myspace","School"); - const Type& tc = mdg->getType("myspace","Class"); - const Type& tch = mdg->getType("myspace","Child"); - const Type& tt = mdg->getType("myspace","Teacher"); - const Type& ta = mdg->getType("myspace","Address"); - - mdg->addPropertyToType(tc,"name",tstring); - mdg->addPropertyToType(ts,"name",tstring); - mdg->addPropertyToType(tch,"name",tstring); - mdg->addPropertyToType(tt,"name",tstring); - - mdg->addPropertyToType(tc,"number",tint); - mdg->addPropertyToType(ts,"number",tint); - mdg->addPropertyToType(tch,"number",tint); - mdg->addPropertyToType(tt,"number",tint); - - mdg->addPropertyToType(ts,"classes", tc,true); - mdg->addPropertyToType(tc,"children", tch,true); - mdg->addPropertyToType(tc,"teacher", tt); - - mdg->addPropertyToType(tch,"address", ta); - mdg->addPropertyToType(ts,"address", ta); - mdg->addPropertyToType(tt,"address", ta); - - mdg->addPropertyToType(ta,"lines", tstring, true); - - DataObjectPtr school = mdg->create((Type&)ts); - - DataObjectPtr class1 = school->createDataObject("classes"); - DataObjectPtr class2 = school->createDataObject("classes"); - - DataObjectPtr teach1 = class1->createDataObject("teacher"); - - DataObjectPtr kid1 = class1->createDataObject("children"); - DataObjectPtr kid2 = class1->createDataObject("children"); - DataObjectPtr kid3 = class1->createDataObject("children"); - - DataObjectPtr teach2 = class2->createDataObject("teacher"); - - DataObjectPtr kid4 = class2->createDataObject("children"); - DataObjectPtr kid5 = class2->createDataObject("children"); - DataObjectPtr kid6 = class2->createDataObject("children"); - - school->setCString("name","King Norberts"); - school->createDataObject("address"); - school->setCString("address/lines.0","The Place"); - school->setCString("address/lines.1","1 The Avenue"); - school->setCString("address/lines.2","Murchester"); - school->setCString("address/lines.3","England"); - - class1->setCString("name","Primary"); - class2->setCString("name","Secondary"); - - class1->setCString("teacher/name","Mr Philbert Chloroform"); - class2->setCString("teacher/name","Mr Brian Onasis"); - - kid1->setCString("name", "Witherspoon Jnr"); - kid2->setCString("name", "Snape"); - kid3->setCString("name", "Thannet"); - kid4->setCString("name", "Grimbling"); - kid5->setCString("name", "Snagget Minor"); - kid6->setCString("name", "Van Den Bograt"); - - kid1->setInteger("number", 1); - kid2->setInteger("number", 2); - kid3->setInteger("number", 3); - kid4->setInteger("number", 4); - kid5->setInteger("number", 5); - kid6->setInteger("number", 6); - - fprintf(f," School :%s\n", school->getCString("name")); - - fprintf(f," Address1:%s\n",school->getCString("address/lines.0")); - fprintf(f," Address2:%s\n",school->getCString("address/lines.1")); - fprintf(f," Address3:%s\n",school->getCString("address/lines.2")); - fprintf(f," Address4:%s\n",school->getCString("address/lines.3")); - - fprintf(f," Class :%s\n",class1->getCString("name")); - fprintf(f," Teacher :%s\n",class1->getCString("teacher/name")); - fprintf(f," Pupil1 :%s\n",class1->getCString("children.0/name")); - fprintf(f," Pupil2 :%s\n",class1->getCString("children[number=2]/name")); - fprintf(f," Pupil3 :%s\n",class1->getCString("children[3]/name")); - - fprintf(f," Class :%s\n",class2->getCString("name")); - fprintf(f," Teacher :%s\n",class2->getCString("teacher/name")); - fprintf(f," Pupil1 :%s\n",class2->getCString("children[1]/name")); - fprintf(f," Pupil2 :%s\n",class2->getCString("children.1/name")); - fprintf(f," Pupil3 :%s\n",class2->getCString("children[number=6]/name")); - - try { - fprintf(f," Pupil3 :%s\n",class2->getCString("children[4]/name")); - return 0; - } - catch (SDOPathNotFoundException e) - { - fprintf(f,"Expected path not found exception caught\n"); - } - if (XpathHelper::isIndexed("abc[2]")) { - fprintf(f, "Indexed as expected\n"); - } - else { - fprintf(f, "Bad - not indexed\n"); - } - - if (XpathHelper::isIndexed("wibble/[2]")) { - fprintf(f, "Indexed as expected\n"); - } - else { - fprintf(f, "Bad - not indexed\n"); - } - - if (XpathHelper::isIndexed("wibble/wobble[2]")) { - fprintf(f, "Indexed as expected\n"); - } - else { - fprintf(f, "Bad - not indexed\n"); - } - - if (XpathHelper::isIndexed("wibble/wobble.2")) { - fprintf(f, "Indexed as expected\n"); - } - else { - fprintf(f, "Bad - not indexed\n"); - } - - if (XpathHelper::isIndexed("wibble/wobble.2")) { - fprintf(f, "Indexed as expected\n"); - } - else { - fprintf(f, "Bad - not indexed\n"); - } - - try { - fprintf(f," Address5 :%s\n",school->getCString("address/lines[5]")); - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - fprintf(f,"Normal index out of range caught\n"); - } - - try { - school->setCString("address/lines[6]","PostCode"); - fprintf(f, "Debatable behaviour - appended\n"); - fprintf(f," Address4 :%s\n",school->getCString("address/lines[5]")); - } - catch (SDORuntimeException e) - { - if (!silent)cout <<"Unexpected exception"<< endl; - return 0; - } - - fclose(f); - return comparefiles("setmany.dat","setmany.txt"); -} - -int sdotest::carotest2() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","root"); - - mdg->addPropertyToType("myspace","root","cs", - "commonj.sdo","ChangeSummary", false, false, false); - - const Type& troot = mdg->getType("myspace","root"); - - DataObjectPtr root = mdg->create((Type&)troot); - return 1; - } - catch (SDORuntimeException e) - { - return 0; - } -} - -int sdotest::adddeletetest() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","root"); - mdg->addType("myspace","bill"); - - mdg->addPropertyToType("myspace","root","cs", - "commonj.sdo","ChangeSummary", false, false, false); - - mdg->addPropertyToType("myspace","root","bill", - "myspace","bill"); - - const Type& troot = mdg->getType("myspace","root"); - - DataObjectPtr root = mdg->create((Type&)troot); - - ChangeSummaryPtr cs = root->getChangeSummary(); - cs->beginLogging(); - DataObjectPtr dob = root->createDataObject("bill"); - root->unset("bill"); - return 1; - } - catch (SDORuntimeException e) - { - return 0; - } -} - -int sdotest::carotest() -{ - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","root"); - mdg->addType("myspace","company"); - mdg->addType("myspace","department"); - mdg->addType("myspace","employee"); - - mdg->addPropertyToType("myspace","root","cs", - "commonj.sdo","ChangeSummary", false, false, false); - - mdg->addPropertyToType("myspace","company","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","department","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","employee","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","root","companies", - "myspace","company", true, false, true); - - mdg->addPropertyToType("myspace","company","departments", - "myspace","department", true, false, true); - - mdg->addPropertyToType("myspace","company","eotm", - "myspace","employee", false, false, false); - - mdg->addPropertyToType("myspace","department","employees", - "myspace","employee", true, false, true); - - const Type& troot = mdg->getType("myspace","root"); - - - DataObjectPtr root = mdg->create((Type&)troot); - ChangeSummaryPtr cs = root->getChangeSummary(); - - cs->beginLogging(); - - DataObjectPtr comp = root->createDataObject("companies"); - - comp->setCString("name","Acme"); - - //cout << "name of the company is " << comp->getCString("name") << endl; - try { - root->unset("companies[0]"); - return 1; - } - catch (SDOUnsupportedOperationException e) - { - if (!silent)cout << "Abnormal unsupported operation for unset of many valued item" << endl; - return 0; - } -} - - -int sdotest::bug2() -{ - - FILE *f; - - f = fopen("bug2.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open bug2.dat" << endl; - return 0; - } - - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","root"); - mdg->addType("myspace","company"); - - mdg->addPropertyToType("myspace","root","cs", - "commonj.sdo","ChangeSummary", false, false, false); - - mdg->addPropertyToType("myspace","company","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","root","companies", - "myspace","company", true, false, true); - - - const Type& troot = mdg->getType("myspace","root"); - - - DataObjectPtr root = mdg->create((Type&)troot); - - ChangeSummaryPtr cs = root->getChangeSummary(); - - cs->beginLogging(); - - DataObjectPtr comp = root->createDataObject("companies"); - - comp->setCString("name","Acme"); - - dumpproperties(f,root); - - DataObjectList& dl = root->getList("companies"); - dl.remove(0); - - dumpproperties(f,root); - - - fprintf(f, "Change summary should have no entries...\n"); - - dumpchangesummary(f,cs); - - dumpproperties(f,root); - - fprintf(f, "Change summary should have no entries...\n"); - - dumpchangesummary(f,cs); - - fclose(f); - return comparefiles("bug2.dat","bug2.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent) cout << e.getEClassName() << " in "; - if (!silent) cout << e.getFileName() << " at line "; - if (!silent) cout << e.getLineNumber() << endl; - if (!silent) cout << e.getFunctionName() << " "; - if (!silent) cout << e.getMessageText() << endl; - return 0; - } -} - - -int sdotest::dumpproperties(FILE *f, DataObjectPtr root) -{ - PropertyList pl = root->getInstanceProperties(); - for (int i=0;i<pl.size();i++) - { - if (pl[i].isMany()) - { - DataObjectList& dl = root->getList(pl[i]); - if (pl[i].getType().isDataType()) - { - char buf[10]; - for (int j=0;j<dl.size();j++) - { - - sprintf(buf,"%02d",j); - fprintf(f,"MProperty:%s[%s]:%s\n", - pl[i].getName(),buf,dl.getCString(j)); - } - } - else - { - fprintf(f,"MObject Property %s\n",pl[i].getName()); - for (int j=0;j<dl.size();j++) - { - if (dl[j] != 0) - { - dumpproperties(f, dl[j]); - } - } - fprintf(f,"End of MObject Property %s\n",pl[i].getName()); - } - } - - else - { - if (pl[i].getType().isDataType()) - { - fprintf(f,"Property:%s:%s\n",pl[i].getName(),root->getCString(pl[i])); - } - else - { - fprintf(f,"Object Property%s\n:",pl[i].getName()); - DataObjectPtr d = root->getDataObject(pl[i]); - if (d != 0) - { - dumpproperties(f, d); - } - else - { - fprintf(f," Value was not set or null\n"); - } - fprintf(f,"End of Object Property %s\n",pl[i].getName()); - } - } - } - return 1; -} - - -int sdotest::datetest() -{ - - try { - - FILE *f = fopen("datetest.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open datetest.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","root"); - mdg->addType("myspace","company"); - - mdg->addPropertyToType("myspace","root","cs", - "commonj.sdo","ChangeSummary", false, false, false); - - mdg->addPropertyToType("myspace","company","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","company","startupdate", - "commonj.sdo","Date", false, false, false); - - mdg->addPropertyToType("myspace","company","reviewdates", - "commonj.sdo","Date", true, false, false); - - - mdg->addPropertyToType("myspace","root","company", - "myspace","company", false, false, true); - - - - const Type& troot = mdg->getType("myspace","root"); - - - DataObjectPtr root = mdg->create((Type&)troot); - ChangeSummaryPtr cs = root->getChangeSummary(); - - cs->beginLogging(); - - DataObjectPtr comp = root->createDataObject("company"); - - - comp->setCString("name","DateTest"); - - fprintf(f,"Name of the company is %s\n",comp->getCString("name")); - - comp->setDate("startupdate",SDODate( 1000 )); - - fprintf(f,"Set start of the company is %d\n",comp->getDate("startupdate").getTime()); - - DataObjectList& dol = comp->getList("reviewdates"); - - dol.append(SDODate(2000)); - dol.append(SDODate(4000)); - - for (int i=0;i < dol.size(); i++) - { - fprintf(f,"Review number:%d was:%d\n", i,dol.getDate(i).getTime()); - - // ascTime gives different values on windows and linux, - // so comparison of the output is not a valid test. - - //fprintf(f,"Formatted:%d was:%s\n",i,dol.getDate(i).ascTime()); - } - - cs->endLogging(); - - fclose(f); - - return comparefiles("datetest.dat","datetest.txt"); - } - - catch (SDORuntimeException e) - { - if (!silent)cout << e.getEClassName() << " in "; - if (!silent)cout << e.getFileName() << " at line "; - if (!silent)cout << e.getLineNumber() << endl; - if (!silent)cout << e.getFunctionName() << " "; - if (!silent)cout << e.getMessageText() << endl; - return 0; - } - -} - -int sdotest::matttest1() -{ - - try { - FILE *f = fopen("matttest1.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open matttest1.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","root"); - mdg->addType("myspace","company"); - mdg->addType("myspace","department"); - mdg->addType("myspace","employee"); - - mdg->addPropertyToType("myspace","root","cs", - "commonj.sdo","ChangeSummary", false, false, false); - - mdg->addPropertyToType("myspace","company","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","department","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","employee","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","root","companies", - "myspace","company", true, false, true); - - mdg->addPropertyToType("myspace","company","departments", - "myspace","department", true, false, true); - - mdg->addPropertyToType("myspace","company","eotm", - "myspace","employee", false, false, false); - - mdg->addPropertyToType("myspace","department","employees", - "myspace","employee", true, false, true); - - const Type& troot = mdg->getType("myspace","root"); - - - DataObjectPtr root = mdg->create((Type&)troot); - - DataObjectPtr comp = root->createDataObject("companies"); - - comp->setCString("name","Acme"); - - DataObjectPtr dept1 = comp->createDataObject("departments"); - - dept1->setCString("name","Shoe"); - - DataObjectPtr dept2 = comp->createDataObject("departments"); - - dept2->setCString("name","IT"); - - DataObjectPtr sue = dept1->createDataObject("employees"); - - sue->setCString("name","Sue"); - - DataObjectPtr billy = dept2->createDataObject("employees"); - - billy->setCString("name","Billy"); - - // Want to swap Sue and Billy so, while holding them in variables, should be - //able to unset from department then reinsert - - // method 1 - clear the lists... - dept1->unset("employees"); - dept2->unset("employees"); - - DataObjectPtr cont = billy->getContainer(); - - if (cont != 0) - { - if (!silent)cout << "Container of Billy should be zero, but is :" << cont->getCString("name") << endl; - return 0; - } - - DataObjectList& li1 = dept1->getList("employees"); - DataObjectList& li2 = dept2->getList("employees"); - li1.append(billy); - li2.append(sue); - - DataObjectPtr cont2 = billy->getContainer(); - - if (cont2 != 0) - { - fprintf(f,"Container of Billy should be dept1, and is :%s\n", cont2->getCString("name")); - } - else { - if (!silent)cout << "Problem - Billy is not contained." << endl; - return 0; - } - - li1.remove(0); - li2.remove(0); - - DataObjectPtr cont3 = billy->getContainer(); - - if (cont3 != 0) - { - if (!silent)cout << "Container of Billy should be zero, but is :" << cont3->getCString("name") << endl; - return 0; - } - - li1.append(sue); - li2.append(billy); - - DataObjectPtr cont4 = billy->getContainer(); - - if (cont4 != 0) - { - fprintf(f,"Container of Billy should be dept2, and is :%s\n", cont4->getCString("name")); - } - else { - if (!silent)cout << "Problem - Billy is not contained." << endl; - return 0; - } - - fclose(f); - - return comparefiles("matttest1.dat","matttest1.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << e.getEClassName() << " in "; - if (!silent)cout << e.getFileName() << " at line "; - if (!silent)cout << e.getLineNumber() << endl; - if (!silent)cout << e.getFunctionName() << " "; - if (!silent)cout << e.getMessageText() << endl; - return 0; - } -} - -int sdotest::carotest3() -{ - // sequence new APIs - // data object list, new getLength(unsigned int) - - - FILE *f = fopen("carotest3.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open carotest3.dat" << endl; - return 0; - } - DataFactoryPtr mdg = DataFactory::getDataFactory(); - // company is sequenced. - mdg->addType("myspace","Company",true,false); - - mdg->addType("myspace","Department",true,false); - // string is many - - mdg->addPropertyToType("myspace","Company","string","commonj.sdo","String", - true); - - mdg->addPropertyToType("myspace","Company","departments","myspace","Department", - true); - - mdg->addPropertyToType("myspace","Company","strings","commonj.sdo","String", - true); - - mdg->addPropertyToType("myspace","Company","integers","commonj.sdo","Integer", - true); - - - mdg->addPropertyToType("myspace","Department","name","commonj.sdo","String"); - - - const Type& tcc = mdg->getType("myspace","Company"); - - DataObjectPtr dor = mdg->create(tcc); - const Property& sprop = dor->getType().getProperty("string"); - - SequencePtr sptr = dor->getSequence(); - - printseq(f,sptr); - - sptr->addCString(sprop,"I am Item 1 of string"); - - printseq(f,sptr); - - sptr->addText("I am the first free text"); - - printseq(f,sptr); - - sptr->addCString(sprop,"I am Item 2 of string"); - - printseq(f,sptr); - - sptr->setText(1,"I am free text which has been modified"); - - printseq(f,sptr); - - DataObjectPtr dep1 = dor->createDataObject("departments"); - - printseq(f,sptr); - - dep1->setCString("name","department1"); - - printseq(f,sptr); - - DataObjectList& dol = dor->getList("departments"); - - unsigned int ii = dol.getLength(0); - - if (ii != 0) - { - if (!silent)cout << "Length of a data object should be zero:" << ii << endl; - return 0; - } - - DataObjectList& strl = dor->getList("strings"); - - wchar_t * buf = new wchar_t[5]; - buf[0] = 'a'; - buf[1] = 'b'; - buf[2] = 'c'; - buf[3] = 'd'; - buf[4] = 'e'; - - strl.append(buf,1); - strl.append(buf,2); - strl.append(buf,3); - strl.append(buf,4); - strl.append(buf,5); - - fprintf(f,"Element zero, length 1: %d\n",strl.getLength(0)); - fprintf(f,"Element one, length 2: %d\n",strl.getLength(1)); - fprintf(f,"Element two, length 3: %d\n",strl.getLength(2)); - fprintf(f,"Element three,length 4: %d\n",strl.getLength(3)); - fprintf(f,"Element four, length 5: %d\n",strl.getLength(4)); - - try { - int xx = strl.getLength(5); - if (!silent)cout << "problem - element 5 should not exist" << endl; - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - if (!silent)cout << "Normal out of range exception in test" << endl; - } - - DataObjectList& numl = dor->getList("integers"); - - try { - int xx2 = numl.getLength(0); - if (!silent)cout << "problem - element 0 should not exist" << endl; - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - if (!silent)cout << "Normal out of range exception in test" << endl; - } - fclose(f); - return comparefiles("carotest3.dat","carotest3.txt"); -} - - -int sdotest::eqhelpertest() -{ - - // copy and equality helpers - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Assembly"); - mdg->addType("myspace","SubAssembly"); - mdg->addType("myspace","Part"); - - /* Now add the properties to the types...*/ - - - const Type& tstring = mdg->getType("commonj.sdo","String"); - const Type& tint = mdg->getType("commonj.sdo","Integer"); - const Type& tassy = mdg->getType("myspace","Assembly"); - const Type& tsubassy = mdg->getType("myspace","SubAssembly"); - const Type& tpart = mdg->getType("myspace","Part"); - - - mdg->addPropertyToType(tassy,"name",tstring); - mdg->addPropertyToType(tsubassy,"name",tstring); - mdg->addPropertyToType(tpart,"name",tstring); - - mdg->addPropertyToType(tassy,"number",tint); - mdg->addPropertyToType(tsubassy,"number",tint); - mdg->addPropertyToType(tpart,"number",tint); - - mdg->addPropertyToType(tassy,"subassemblies", tsubassy,true); - mdg->addPropertyToType(tsubassy,"parts", tpart,true); - - - // assy 1 - - DataObjectPtr assy1 = mdg->create((Type&)tassy); - - DataObjectPtr subassy1 = assy1->createDataObject("subassemblies"); - DataObjectPtr subassy2 = assy1->createDataObject("subassemblies"); - - DataObjectPtr part1 = subassy1->createDataObject("parts"); - DataObjectPtr part2 = subassy1->createDataObject("parts"); - DataObjectPtr part3 = subassy1->createDataObject("parts"); - - DataObjectPtr part4 = subassy2->createDataObject("parts"); - DataObjectPtr part5 = subassy2->createDataObject("parts"); - DataObjectPtr part6 = subassy2->createDataObject("parts"); - - - assy1->setCString("name","MicroFrame"); - assy1->setInteger("number",32768); - - subassy1->setCString("name","Legs"); - subassy2->setCString("name","Body"); - subassy1->setInteger("number",1); - subassy2->setInteger("number",2); - - part1->setCString("name","Leg1"); - part2->setCString("name","Leg2"); - part3->setCString("name","Leg3"); - part1->setInteger("number",10001); - part2->setInteger("number",10002); - part3->setInteger("number",10003); - - - part4->setCString("name","MainStrut"); - part5->setCString("name","Brace1"); - part6->setCString("name","Brace2"); - part4->setInteger("number",20001); - part5->setInteger("number",20002); - part6->setInteger("number",20003); - - // assy2 - shallow equal to assy, but not deep equal - - DataObjectPtr assy2 = mdg->create((Type&)tassy); - - DataObjectPtr subassy3 = assy2->createDataObject("subassemblies"); - DataObjectPtr subassy4 = assy2->createDataObject("subassemblies"); - - DataObjectPtr part7 = subassy3->createDataObject("parts"); - DataObjectPtr part8 = subassy3->createDataObject("parts"); - DataObjectPtr part9 = subassy3->createDataObject("parts"); - - DataObjectPtr part10 = subassy4->createDataObject("parts"); - DataObjectPtr part11 = subassy4->createDataObject("parts"); - DataObjectPtr part12 = subassy4->createDataObject("parts"); - - - assy2->setCString("name","MicroFrame"); - assy2->setInteger("number",32768); - - subassy3->setCString("name","Legs"); - subassy4->setCString("name","Body"); - subassy3->setInteger("number",1); - subassy4->setInteger("number",2); - - part7->setCString("name","Leg1"); - part8->setCString("name","Leg2"); - part9->setCString("name","Leg3"); - part7->setInteger("number",10001); - part8->setInteger("number",10002); - part9->setInteger("number",10003); - - - part10->setCString("name","MainStrut"); - part11->setCString("name","Brace1"); - part12->setCString("name","OddBrace2"); - part10->setInteger("number",20001); - part11->setInteger("number",20002); - part12->setInteger("number",20003); - - if (!EqualityHelper::equalShallow(assy1, assy2)) - { - if (!silent) cout << "EQUALITY HELPER TEST - failure at first test" << endl; - return 0; - } - if (EqualityHelper::equal(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at second test" << endl; - return 0; - } - - // Now alter assy2 to be deep equal... - - - part12->setCString("name","Brace2"); - - if (!EqualityHelper::equalShallow(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at third test" << endl; - return 0; - } - if (!EqualityHelper::equal(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at fourth test" << endl; - return 0; - } - - // now add a part, so its not deep equal again - DataObjectPtr part13 = subassy4->createDataObject("parts"); - - if (!EqualityHelper::equalShallow(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at fifth test" << endl; - return 0; - } - if (EqualityHelper::equal(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at sixth test" << endl; - return 0; - } - - // now remove that part again... - DataObjectList& dl = subassy4->getList("parts"); - dl.remove(3); - - // should be deep equal again... - - if (!EqualityHelper::equalShallow(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at seventh test" << endl; - return 0; - } - if (!EqualityHelper::equal(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at eighth test" << endl; - return 0; - } - // now make them not shallow equal - assy2->setInteger("number",32767); - - if (EqualityHelper::equalShallow(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at nineth test" << endl; - return 0; - } - if (EqualityHelper::equal(assy1, assy2)) - { - if (!silent)cout << "EQUALITY HELPER TEST - failure at tenth test" << endl; - return 0; - } - return 1; -} - -int sdotest::cohelpertest() -{ - - // copy and equality helpers - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Assembly"); - mdg->addType("myspace","SubAssembly"); - mdg->addType("myspace","Part"); - - /* Now add the properties to the types...*/ - - - const Type& tstring = mdg->getType("commonj.sdo","String"); - const Type& tint = mdg->getType("commonj.sdo","Integer"); - const Type& tassy = mdg->getType("myspace","Assembly"); - const Type& tsubassy = mdg->getType("myspace","SubAssembly"); - const Type& tpart = mdg->getType("myspace","Part"); - - - mdg->addPropertyToType(tassy,"name",tstring); - mdg->addPropertyToType(tsubassy,"name",tstring); - mdg->addPropertyToType(tpart,"name",tstring); - - mdg->addPropertyToType(tassy,"number",tint); - mdg->addPropertyToType(tsubassy,"number",tint); - mdg->addPropertyToType(tpart,"number",tint); - - mdg->addPropertyToType(tassy,"subassemblies", tsubassy,true); - mdg->addPropertyToType(tsubassy,"parts", tpart,true); - - - // assy 1 - - DataObjectPtr assy1 = mdg->create((Type&)tassy); - - DataObjectPtr subassy1 = assy1->createDataObject("subassemblies"); - DataObjectPtr subassy2 = assy1->createDataObject("subassemblies"); - - DataObjectPtr part1 = subassy1->createDataObject("parts"); - DataObjectPtr part2 = subassy1->createDataObject("parts"); - DataObjectPtr part3 = subassy1->createDataObject("parts"); - - DataObjectPtr part4 = subassy2->createDataObject("parts"); - DataObjectPtr part5 = subassy2->createDataObject("parts"); - DataObjectPtr part6 = subassy2->createDataObject("parts"); - - - assy1->setCString("name","MicroFrame"); - assy1->setInteger("number",32768); - - subassy1->setCString("name","Legs"); - subassy2->setCString("name","Body"); - subassy1->setInteger("number",1); - subassy2->setInteger("number",2); - - part1->setCString("name","Leg1"); - part2->setCString("name","Leg2"); - part3->setCString("name","Leg3"); - part1->setInteger("number",10001); - part2->setInteger("number",10002); - part3->setInteger("number",10003); - - - part4->setCString("name","MainStrut"); - part5->setCString("name","Brace1"); - part6->setCString("name","Brace2"); - part4->setInteger("number",20001); - part5->setInteger("number",20002); - part6->setInteger("number",20003); - - // first lets shallow copy assy1: - - DataObjectPtr assy2 = CopyHelper::copyShallow(assy1); - - if (strcmp(assy2->getCString("name"),"MicroFrame")) - { - if (!silent)cout << "COPYHELPER shallow copy failed(1)" << endl; - return 0; - } - else if (assy2->getInteger("number") != 32768) - { - if (!silent)cout << "COPYHELPER shallow copy 1 failed(2)" << endl; - return 0; - } - else if (assy2->getList("subassemblies").size() != 0) - { - if (!silent)cout << "COPYHELPER shallow copy 1 failed(3)" << endl; - return 0; - } - else if (assy2->getContainer() != 0) - { - if (!silent)cout << "COPYHELPER shallow copy failed(4)" << endl; - return 0; - } - - // now deep copy it - - DataObjectPtr assy3 = CopyHelper::copy(assy1); - - if (!EqualityHelper::equal(assy1, assy3)) - { - if (!silent)cout << "COPYHELPER deep copy failed(1)" << endl; - return 0; - } - else if (assy3->getContainer() != 0) - { - if (!silent)cout << "COPYHELPER deep copy failed(2)" << endl; - return 0; - } - return 1; -} - - -int sdotest::cssave() -{ - - try { - - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("company.xsd"); - - //mdg->addType("companyNS","CompanyType"); - //mdg->addType("companyNS","EmployeeType"); - //mdg->addType("companyNS","DepartmentType"); - - /* Now add the properties to the types...*/ - - - 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"); - - - //mdg->addPropertyToType(tcomp,"name",tstring); - // not containment... - //mdg->addPropertyToType(tcomp,"employeeOfTheMonth",temp, false,false,false); - //mdg->addPropertyToType(tcomp,"departments",tdept, true); - //mdg->addPropertyToType(tcomp,"cs",tcs); - - //mdg->addPropertyToType(tdept,"name",tstring); - //mdg->addPropertyToType(tdept,"location",tstring); - //mdg->addPropertyToType(tdept,"number",tstring); - //mdg->addPropertyToType(tdept,"employees",temp,true); - - //mdg->addPropertyToType(temp, "name",tstring); - //mdg->addPropertyToType(temp, "SN", tstring); - //mdg->addPropertyToType(temp, "manager", tbool); - - - // 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); - - ChangeSummaryPtr cs = comp->getChangeSummary(); - - cs->beginLogging(); - - 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); - - dol2.remove(1); // element 1 is Mary - - DataObjectPtr emp5 = mdg->create(temp); - emp5->setCString("name","Bill Withers"); - emp5->setCString("SN","E0005"); - - dol2.append(emp5); - - - comp->setCString("name","MegaCorp"); - comp->setDataObject("employeeOfTheMonth",emp4); - - // silly test - add mary back again - dol2.append(emp2); - - - - - cs->endLogging(); - - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr doc = xmh->createDocument(comp,"companyNS","company"); - xmh->save(doc,"cssave-output.xml"); - return comparefiles("cssave-output.xml","cssave-output.txt"); - - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "CSSAVE FAILED" << e << endl; - return 0; - } -} - -int sdotest::cssave2() -{ - - 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","Eastleigh Borough Council"); - - DataObjectPtr dept = mdg->create((Type&)tdept); - DataObjectList& dol = comp->getList("departments"); - dol.append(dept); - - dept->setCString("name","Waste Disposal"); - dept->setCString("location","Botley"); - dept->setCString("number","123"); - - DataObjectPtr emp1 = mdg->create(temp); - DataObjectPtr emp2 = mdg->create(temp); - DataObjectPtr emp3 = mdg->create(temp); - DataObjectPtr emp4 = mdg->create(temp); - DataObjectPtr emp5 = mdg->create(temp); - - emp1->setCString("name","Alphonse Dodet"); - emp1->setCString("SN","E0001"); - - emp2->setCString("name","Bridget Jones"); - emp2->setCString("SN","E0002"); - emp2->setBoolean("manager",true); - - emp3->setCString("name","Colin Thorne"); - emp3->setCString("SN","E0003"); - - emp4->setCString("name","Donald Trump"); - emp4->setCString("SN","E0004"); - - emp5->setCString("name","Eddy the eagle"); - emp5->setCString("SN","E0005"); - - DataObjectList& dol2 = dept->getList("employees"); - dol2.append(emp1); - dol2.append(emp2); - dol2.append(emp3); - dol2.append(emp4); - dol2.append(emp5); - - //comp->setDataObject("employeeOfTheMonth",emp2); - - DataObjectPtr dept2 = mdg->create((Type&)tdept); - dol.append(dept2); - - dept2->setCString("name","Tax Collection"); - dept2->setCString("location","Winchester"); - dept2->setCString("number","666"); - - DataObjectPtr empb1 = mdg->create(temp); - DataObjectPtr empb2 = mdg->create(temp); - DataObjectPtr empb3 = mdg->create(temp); - DataObjectPtr empb4 = mdg->create(temp); - DataObjectPtr empb5 = mdg->create(temp); - - empb1->setCString("name","Arch Meanie"); - empb1->setCString("SN","D0001"); - - empb2->setCString("name","Boris the Spider"); - empb2->setCString("SN","D0002"); - empb2->setBoolean("manager",true); - - empb3->setCString("name","Cash Hoarder"); - empb3->setCString("SN","D0003"); - - empb4->setCString("name","Dean Giyatoss"); - empb4->setCString("SN","D0004"); - - empb5->setCString("name","Ebenezer Scrooge"); - empb5->setCString("SN","D0005"); - - DataObjectList& dol3 = dept2->getList("employees"); - dol3.append(empb1); - dol3.append(empb2); - dol3.append(empb3); - dol3.append(empb4); - dol3.append(empb5); - - ChangeSummaryPtr cs = comp->getChangeSummary(); - - cs->beginLogging(); - - // start by deleting a few employees from dept 1 - - dol2.remove(1); // B - dol2.remove(1); // C - dol2.remove(1); // D - - // Now delete the tax collectors as a whole - - dol.remove(1); - - // now perhaps add back one of the employees - - dol2.append(emp3); // C - - comp->setCString("name","MegaCorp"); - - try { - comp->setDataObject("employeeOfTheMonth",emp4); - if (!silent)cout << "emp4 was not in the tree" << endl; - return 0; - } - catch (SDORuntimeException e) - { - } - - comp->setDataObject("employeeOfTheMonth",emp5); - - cs->endLogging(); - - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr doc = xmh->createDocument(comp,"companyNS","company"); - xmh->save(doc,"cssave2-output.xml"); - return comparefiles("cssave2-output.xml","cssave2-output.txt"); - } - catch (SDORuntimeException e) - { - if (!silent)cout << "CSSAVE FAILED" << e << endl; - return 0; - } -} - - - - - -int sdotest::b45933() -{ - - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - - mdg->addType("companyNS","CompanyType"); - mdg->addType("companyNS","WombatType"); - - /* Now add the properties to the types...*/ - - - 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& twom = mdg->getType("companyNS","WombatType"); - - - mdg->addPropertyToType(tcomp,"name",tstring); - mdg->addPropertyToType(tcomp,"bools",tbool, true); - mdg->addPropertyToType(tcomp,"woms",twom, true); - mdg->addPropertyToType(tcomp,"cs",tcs); - - - // create a graph, then save it - - DataObjectPtr comp = mdg->create((Type&)tcomp); - comp->setCString("name","Bug45933"); - - ChangeSummaryPtr cs = comp->getChangeSummary(); - - cs->beginLogging(); - - DataObjectList& dol = comp->getList("bools"); - dol.append(false); - dol.remove(0); - DataObjectPtr awom = mdg->create((Type&)twom); - DataObjectList& dol2 = comp->getList("woms"); - dol2.append(awom); - dol2.remove(0); - - cs->endLogging(); - - //dumpchangesummary(cs); - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr doc = xmh->createDocument(comp,"companyNS","company"); - xmh->save(doc,"bug45933-output.xml"); - return comparefiles("bug45933-output.xml","bug45933-output.txt"); - } - catch (SDORuntimeException e) - { - if (!silent)cout << "BUG45933 FAILED" << endl << e << endl; - return 0; - } -} - -int sdotest::b46617() -{ - - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - //XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - //xsh->defineFile("b46617.xsd"); - mdg->addType("companyNS","CompanyType"); - mdg->addType("companyNS","DepartmentType"); - mdg->addType("companyNS","EmployeeType"); - - - - 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"); - - mdg->addPropertyToType(tcomp,"name",tstring); - mdg->addPropertyToType(tcomp,"departments",tdept,true,false,true); - mdg->addPropertyToType(tcomp,"employeeOfTheMonth",temp,false,false,false); - mdg->addPropertyToType(tcomp,"CEO",temp,false,false,true); - - mdg->addPropertyToType(tdept,"employees",temp,true,false,true); - mdg->addPropertyToType(tdept,"name",tstring,false,false,true); - mdg->addPropertyToType(tdept,"location",tstring,false,false,true); - mdg->addPropertyToType(tdept,"number",tstring,false,false,true); - - mdg->addPropertyToType(temp,"name",tstring,false,false,true); - mdg->addPropertyToType(temp,"SN",tstring,false,false,true); - mdg->addPropertyToType(temp,"manager",tbool,false,false,true); - - // create a graph, then save it - - DataObjectPtr comp = mdg->create((Type&)tcomp); - comp->setCString("name","Eastleigh Borough Council"); - - DataObjectPtr dept = mdg->create((Type&)tdept); - DataObjectList& dol = comp->getList("departments"); - dol.append(dept); - - dept->setCString("name","Waste Disposal"); - dept->setCString("location","Botley"); - dept->setCString("number","123"); - - DataObjectPtr emp1 = mdg->create(temp); - DataObjectPtr emp2 = mdg->create(temp); - DataObjectPtr emp3 = mdg->create(temp); - - emp1->setCString("name","Alphonse Dodet"); - emp1->setCString("SN","E0001"); - - emp2->setCString("name","Bridget Jones"); - emp2->setCString("SN","E0002"); - emp2->setBoolean("manager",true); - - emp3->setCString("name","Carl Marx"); - emp3->setCString("SN","E0003"); - - comp->setDataObject("CEO",emp2); - - DataObjectList& dol2 = dept->getList("employees"); - dol2.append(emp1); - //dol2.append(emp2); - dol2.append(emp3); - - comp->setDataObject("employeeOfTheMonth",emp2); - - XSDHelperPtr xmd = HelperProvider::getXSDHelper(mdg); - xmd->generateFile(mdg->getTypes(), - "b46617.xsd","companyNS"); - - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr doc = xmh->createDocument(comp,"companyNS","company"); - xmh->save(doc,"b46617.xml"); - - // now try loading the xml, using the same schema, and see if we get the - // same answer - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("b46617.xml", "companyNS"); - DataObjectPtr newdob = myXMLDocument->getRootDataObject(); - - - if (strcmp(newdob->getDataObject("employeeOfTheMonth")->getCString("name"), - "Bridget Jones")) - { - if (!silent)cout << "Employee of the month name has changed" << endl; - return 0; - } - - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "b46617 failed" << e << endl; - return 0; - } -} - -int sdotest::b46617b() -{ - - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("b46617b.xsd"); - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("b46617b.xml", "companyNS"); - DataObjectPtr newdob = myXMLDocument->getRootDataObject(); - - if (strcmp(newdob->getDataObject("employeeOfTheMonth")->getCString("name"), - "Fred Smith")) - { - if (!silent)cout << "Employee of the month name has changed" << endl; - return 0; - } - - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "b46617b failed" << e << endl; - return 0; - } -} - -int sdotest::notfound() -{ - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - try { - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("not_present.xsd"); - } - catch (SDOFileNotFoundException e) - { - //cout << "NotFound threw correct exception " << endl; - } - - catch (SDORuntimeException e) - { - if (!silent)cout << "NOTFOUND THREW THE WRONG EXCEPTION" << e << endl; - return 0; - } - - try { - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("not-present.xml", "companyNS"); - - } - catch (SDOFileNotFoundException ee) - { - //cout << "NotFound threw the correct exception" << endl; - } - - catch (SDORuntimeException e) - { - if (!silent)cout << "NOTFOUND THREW THE WRONG EXCEPTION" << e << endl; - return 0; - } - return 1; -} - -int sdotest::csload() -{ - try - { - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("company.xsd"); - - //cout << "TYPES LOADED FROM COMPANY XSD" << endl; - - //TypeList tl = mdg->getTypes(); - //for (int i=0;i< tl.size(); i++) - //{ - // cout << tl[i].getURI() << ":" << tl[i].getName() << endl; - //} - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("cssave-output.xml", "companyNS"); - //myXMLDocument->setRootElementName("company"); - //myXMLHelper->save(myXMLDocument,"csload-output.xml"); - myXMLHelper->save(myXMLDocument->getRootDataObject(), - 0, "company", "csload-output.xml"); - - return comparefiles("csload-output.xml","csload-output.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "CSLOAD FAILED" << e << endl; - return 0; - } - -} - -int sdotest::testsubsload() -{ - try - { - FILE *f = fopen("testsubsload.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open testsubsload.dat" << endl; - return 0; - } - - fprintf(f,"TEST: TestSubsLoad ==========================================\n"); - DataFactoryPtr mdg = DataFactory::getDataFactory(); - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("companysubs.xsd"); - - //cout << "TYPES LOADED FROM COMPANYSUBS XSD" << endl; - - //TypeList tl = mdg->getTypes(); - //for (int i=0;i< tl.size(); i++) - //{ - // cout << tl[i].getURI() << ":" << tl[i].getName() << endl; - //} - - // so now we should be able to put book or a magazine into - // the publication under company... - - const Type& tstring = mdg->getType("commonj.sdo","String"); - const Type& tcomp = mdg->getType("companyNS","CompanyType"); - const Type& book = mdg->getType("companyNS","BookType"); - const Type& mag = mdg->getType("companyNS","MagazineType"); - const Type& pub = mdg->getType("companyNS","PublicationType"); - - - // create a graph, then save it - - DataObjectPtr comp = mdg->create((Type&)tcomp); - comp->setCString("name","Puflet Publishing"); - - - DataObjectPtr book1 = mdg->create(book); - book1->setCString("author","Mr P B Writer"); - // inherted from publication - book1->setCString("title","Nowhere Man"); - - DataObjectPtr mag1 = mdg->create(mag); - mag1->setCString("editor","Mr B Picky"); - // inherited from publication - mag1->setCString("title","Bionicle Weekly"); - - DataObjectPtr pub1 = mdg->create(pub); - pub1->setCString("title","Noddy In Toyland"); - - - // publication should accept any of them... - - comp->setDataObject("Publication",pub1); - const Type& tpub1 = comp->getDataObject("Publication")->getType(); - fprintf(f,"Publication is of type %s\n",tpub1.getName()); - - comp->setDataObject("Publication",book1); - const Type& tpub2 = comp->getDataObject("Publication")->getType(); - fprintf(f,"Publication is of type %s\n",tpub2.getName()); - - comp->setDataObject("Publication",mag1); - const Type& tpub3 = comp->getDataObject("Publication")->getType(); - fprintf(f,"Publication is of type %s\n",tpub3.getName()); - - // should be able to address publication as book or magazine - - comp->setDataObject("Book",book1); - const Type& tpub4 = comp->getDataObject("Book")->getType(); - fprintf(f, "Book is of type %s\n",tpub4.getName()); - - comp->setDataObject("Magazine",mag1); - const Type& tpub5 = comp->getDataObject("Magazine")->getType(); - fprintf(f,"Magazine is of type %s\n",tpub5.getName()); - fprintf(f,"END TEST: TestSubsLoad ======================================\n"); - fclose(f); - return comparefiles("testsubsload.dat","testsubsload.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ERROR in TeseSubsLoad" << e << endl; - return 0; - } -} - -int sdotest::testSCA() -{ - try - { - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("sca.xsd"); - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ERROR in TeseSCA" << e << endl; - return 0; - } -} - -int sdotest::testabstract() -{ - try - { - - FILE *f = fopen("testabstract.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open testabstract.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("companyabs.xsd"); - - //cout << "TYPES LOADED FROM COMPANYABS XSD" << endl; - - //TypeList tl = mdg->getTypes(); - //for (int i=0;i< tl.size(); i++) - //{ - // cout << tl[i].getURI() << ":" << tl[i].getName() << endl; - //} - - // so now we should be able to put book or a magazine into - // the publication under company... - - const Type& tstring = mdg->getType("commonj.sdo","String"); - const Type& tcomp = mdg->getType("companyNS","CompanyType"); - const Type& book = mdg->getType("companyNS","BookType"); - const Type& mag = mdg->getType("companyNS","MagazineType"); - const Type& pub = mdg->getType("companyNS","PublicationType"); - - - // create a graph, then save it - - DataObjectPtr comp = mdg->create((Type&)tcomp); - comp->setCString("name","Puflet Publishing"); - - // should be allowed... - DataObjectPtr book1 = mdg->create(book); - book1->setCString("author","Mr P B Writer"); - // inherted from publication - book1->setCString("title","Nowhere Man"); - - DataObjectPtr mag1 = mdg->create(mag); - mag1->setCString("editor","Mr B Picky"); - // inherited from publication - mag1->setCString("title","Bionicle Weekly"); - - try { - DataObjectPtr pub1 = mdg->create(pub); - pub1->setCString("title","Noddy In Toyland"); - } - catch (SDOUnsupportedOperationException e) - { - fprintf(f,"Normal unsupportedoperation for creation of abstract type\n"); - } - - - // publication should accept books and magazines... - - comp->setDataObject("Publication",book1); - const Type& tpub2 = comp->getDataObject("Publication")->getType(); - fprintf(f,"Publication is of type %s\n",tpub2.getName()); - - comp->setDataObject("Publication",mag1); - const Type& tpub3 = comp->getDataObject("Publication")->getType(); - fprintf(f,"Publication is of type %s\n",tpub3.getName()); - - // should be able to address publication as book or magazine - - comp->setDataObject("Book",book1); - const Type& tpub4 = comp->getDataObject("Book")->getType(); - fprintf(f,"Book is of type %s\n",tpub4.getName()); - - comp->setDataObject("Magazine",mag1); - const Type& tpub5 = comp->getDataObject("Magazine")->getType(); - fprintf(f,"Magazine is of type %s\n",tpub5.getName()); - - fclose(f); - return comparefiles("testabstract.dat","testabstract.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ERROR in TestAbstract" << e << endl; - return 0; - } -} - -int sdotest::testOpen() -{ - try - { - - FILE *f = fopen("testopen.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open testopen.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - - mdg->addType("companyNS","CompanyType"); - // employee will be an open type... - mdg->addType("companyNS","EmployeeType", /*seq*/false, - /*open*/true, - /*abs */ false, - /*data*/ false); - - mdg->addType("companyNS","DepartmentType"); - - /* Now add the properties to the types...*/ - - - 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"); - - - mdg->addPropertyToType(tcomp,"name",tstring); - // not containment... - mdg->addPropertyToType(tcomp,"employeeOfTheMonth",temp, false,false,false); - mdg->addPropertyToType(tcomp,"departments",tdept, true); - mdg->addPropertyToType(tcomp,"cs",tcs); - - mdg->addPropertyToType(tdept,"name",tstring); - mdg->addPropertyToType(tdept,"location",tstring); - mdg->addPropertyToType(tdept,"number",tstring); - mdg->addPropertyToType(tdept,"employees",temp,true); - - mdg->addPropertyToType(temp, "name",tstring); - mdg->addPropertyToType(temp, "SN", tstring); - mdg->addPropertyToType(temp, "manager", tbool); - - - - 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","Albert"); - emp1->setCString("SN","E0001"); - - emp2->setCString("name","Boris"); - emp2->setCString("SN","E0002"); - emp2->setBoolean("manager",true); - - emp3->setCString("name","Carl"); - emp3->setCString("SN","E0003"); - - // now we should be able to add extra properties to employees, - // and get them back again... - - try { - emp1->setNull("openstring"); - return 0; - } - catch (SDOUnsupportedOperationException e) - { - fprintf(f,"Normal exception for setting null on undefined prop\n"); - } - - emp1->setCString("openstring","Value Of Open String"); - emp1->setBoolean("openboolean",true); - - const char* c = emp1->getCString("openstring"); - - fprintf(f,"Open Type string value: %s\n",c); - - bool b = emp1->getBoolean("openboolean"); - - fprintf(f,"Open Type boolean value: %d\n", b); - - // unknown list type at present.. - DataObjectList& dl = emp1->getList("opentypelist"); - - int i = 45; - dl.append((short)i); // now the list must be primitive - - // we should now have instance properties - PropertyList pl = emp1->getType().getProperties(); - - for (i=0;i<pl.size();i++) - { - fprintf(f,"EMP1 type property: %s ( many? %d) of type %s\n" ,pl[i].getName() - , pl[i].isMany(), - pl[i].getType().getName()); - } - - PropertyList pli = emp1->getInstanceProperties(); - - for (i=0;i<pli.size();i++) - { - fprintf(f, "EMP1 inst property: %s (many? %d) of type %s\n", - pli[i].getName(), pli[i].isMany(), pli[i].getType().getName()); - } - - - // now we try to set the string to null.. - - emp1->setNull("openstring"); - - emp1->setCString("openstring","New Value Of Open String"); - - - // now unset them and see them disappear - what happens to the indices? - - emp1->unset("openstring"); - - PropertyList plk = emp1->getInstanceProperties(); - - for (i=0;i<plk.size();i++) - { - fprintf(f,"EMP1 inst property: %s (many? %d) of type %s\n", - plk[i].getName(), plk[i].isMany(), plk[i].getType().getName()); - } - - emp1->unset("openboolean"); - - dl.remove(0); // so is this list gone, or empty - I vote for still there. - - PropertyList pll = emp1->getInstanceProperties(); - for (i=0;i<pll.size();i++) - { - fprintf(f,"EMP1 inst property: %s (many? %d) of type %s\n", - pll[i].getName(), pll[i].isMany(),pll[i].getType().getName()); - } - - emp1->unset("opentypelist"); - - // now I vote for gone... - - PropertyList plm = emp1->getInstanceProperties(); - for (i=0;i<plm.size();i++) - { - fprintf(f,"EMP1 inst property: %s (many? %d) of type %s\n", plm[i].getName() - , plm[i].isMany() , plm[i].getType().getName()); - } - - fclose(f); - return comparefiles("testopen.dat","testopen.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ERROR in TestOpen" << e << endl; - return 0; - } -} - -int sdotest::saveOpen() -{ - try - { - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - - mdg->addType("companyNS","CompanyType"); - // employee will be an open type... - mdg->addType("companyNS","EmployeeType", /*seq*/false, - /*open*/true, - /*abs */ false, - /*data*/ false); - - mdg->addType("companyNS","DepartmentType"); - - mdg->addType("companyNS","OpenType"); - - /* Now add the properties to the types...*/ - - - 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"); - const Type& topen = mdg->getType("companyNS","OpenType"); - - - mdg->addPropertyToType(tcomp,"name",tstring); - // not containment... - mdg->addPropertyToType(tcomp,"employeeOfTheMonth",temp, false,false,false); - mdg->addPropertyToType(tcomp,"departments",tdept, true); - mdg->addPropertyToType(tcomp,"cs",tcs); - - mdg->addPropertyToType(tdept,"name",tstring); - mdg->addPropertyToType(tdept,"location",tstring); - mdg->addPropertyToType(tdept,"number",tstring); - mdg->addPropertyToType(tdept,"employees",temp,true); - - mdg->addPropertyToType(temp, "name",tstring); - mdg->addPropertyToType(temp, "SN", tstring); - mdg->addPropertyToType(temp, "manager", tbool); - - mdg->setAlias("companyNS","CompanyType","TheFirm"); - mdg->setAlias("companyNS","CompanyType","departments","TheDepartments"); - mdg->setAlias("companyNS","CompanyType","departments","MYDepartments"); - mdg->setAlias("companyNS","CompanyType","TheBigFirm"); - - mdg->addPropertyToType(topen,"name",tstring); - - DataObjectPtr comp = mdg->create((Type&)tcomp); - comp->setCString("name","ACME"); - - DataObjectPtr dept = mdg->create((Type&)tdept); - DataObjectList& dol = comp->getList("departments"); - dol.append(dept); - - ChangeSummaryPtr cs = comp->getChangeSummary(); - - cs->beginLogging(); - - dept->setCString("name","Advanced Technologies"); - dept->setCString("location","NY"); - dept->setCString("number","123"); - - DataObjectList& emps = dept->getList("employees"); - - DataObjectPtr emp1 = mdg->create(temp); - DataObjectPtr emp2 = mdg->create(temp); - DataObjectPtr emp3 = mdg->create(temp); - - emps.append(emp1); - emps.append(emp2); - emps.append(emp3); - - emp1->setCString("name","Albert"); - emp1->setCString("SN","E0001"); - - emp2->setCString("name","Boris"); - emp2->setCString("SN","E0002"); - emp2->setBoolean("manager",true); - - emp3->setCString("name","Carl"); - emp3->setCString("SN","E0003"); - - // now we should be able to add extra properties to employees, - // and get them back again... - - - emp1->setCString("openstring","Value Of Open String"); - emp1->setBoolean("openboolean",true); - - const char* c = emp1->getCString("openstring"); - - //cout << "Open Type string value: " << c << endl; - - bool b = emp1->getBoolean("openboolean"); - - //cout << "Open Type boolean value: " << b << endl; - - // unknown list type at present.. - DataObjectList& dl = emp1->getList("openintlist"); - - int i = 45; - dl.append((short)i); // now the list must be primitive and short!! - - // unknown list type at present.. - DataObjectList& dl2 = emp1->getList("opendataobjectlist"); - - DataObjectPtr myopen = mdg->create("companyNS","OpenType"); - myopen->setCString("name","MyOpenName"); - dl2.append(myopen); // now the list must be of data objects - - - // now a single valued data object - should have an xsi:type - emp1->setDataObject("opendataobject", myopen); - - - cs->endLogging(); - - //dumpchangesummary(cs); - - XSDHelperPtr xdh = HelperProvider::getXSDHelper(mdg); - - xdh->generateFile(mdg->getTypes(), - "saveopen-output.xsd","companyNS"); - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr doc = xmh->createDocument(comp,"companyNS","company"); - xmh->save(doc,"saveopen-output.xml"); - - return comparefiles("saveopen-output.xml","saveopen-output.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ERROR in SaveOpen" << e << endl; - return 0; - } -} - -int sdotest::loadOpen() -{ - try - { - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("saveopen-output.xsd"); - - - //cout << "TYPES LOADED FROM COMPANY XSD" << endl; - //int i; - //TypeList tl = mdg->getTypes(); - //for (i=0;i< tl.size(); i++) - //{ - // cout << tl[i].getURI() << ":" << tl[i].getName() << endl; - //} - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - - - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("partial.xml", "companyNS"); - - - - // so, we now expect that the openboolean and openstring props will - // be of type boolean and Bytes, and the openlist will be a list of integers. - // The dataobjectlist an dataobject will be of the correct OpenType - - // we need a test for data objects, and that we are writing out xsi:type - // correctly. - DataObjectPtr comp = myXMLDocument->getRootDataObject(); - DataObjectList& dl = comp->getList("departments"); - DataObjectPtr dept = dl[0]; - DataObjectList& dl2 = dept->getList("employees"); - DataObjectPtr emp = dl2[0]; - - if (strcmp(emp->getProperty("openboolean").getType().getName(), - "Boolean")) - { - if (!silent)cout << "OpenLoad failure - bool property not boolean" << endl; - return 0; - - } - if (emp->getBoolean("openboolean") != true) - { - if (!silent)cout << "OpenLoad failure - bool property not true" << endl; - return 0; - } - - if (strcmp(emp->getProperty("openstring").getType().getName(), - "Bytes")) - { - if (!silent)cout << "OpenLoad failure - bytes property not bytes" << endl; - return 0; - - } - if (strcmp(emp->getCString("openstring"),"Value Of Open String")) - { - if (!silent)cout << "OpenLoad failure - string value is" << - emp->getCString("openstring") << endl; - return 0; - } - - - DataObjectList& dl3 = emp->getList("openintlist"); - - if (strcmp(emp->getProperty("openintlist").getType().getName(), - "Short")) - { - if (!silent)cout << "OpenLoad failure - IntegerList not Short " << - emp->getProperty("openintlist").getType().getName() << endl; - return 0; - } - - if (dl3.getInteger(0) != 45) - { - if (!silent)cout << "OpenLoad failure - Integer value is" << - dl.getInteger(0) << endl; - return 0; - } - - if (strcmp(emp->getProperty("opendataobjectlist").getType().getName(), - "OpenType")) - { - if (!silent)cout << "OpenLoad failure - OpenTypeList not OpenType" << endl; - return 0; - } - - DataObjectList& dl4 = emp->getList("opendataobjectlist"); - - if (strcmp(dl4[0]->getCString("name"),"MyOpenName")) - { - if (!silent)cout << "OpenLoad failure - list element name is " << - dl4[0]->getCString("name") << endl; - return 0; - } - - if (strcmp(emp->getProperty("opendataobject").getType().getName(), - "OpenType")) - { - if (!silent)cout << "OpenLoad failure - OpenType not OpenType" << endl; - return 0; - } - - DataObjectPtr dob2 = emp->getDataObject("opendataobject"); - - if (strcmp(dob2->getCString("name"),"MyOpenName")) - { - if (!silent)cout << "OpenLoad failure - open value name is " << - dob2->getCString("name") << endl; - return 0; - } - - - myXMLHelper->save(myXMLDocument->getRootDataObject(), - 0, "company", "loadload-output.xml"); - return comparefiles("loadload-output.xml","loadload-output.txt"); - - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "LoadOpen FAILED" << e << endl; - return 0; - } - -} - -int sdotest::loadOpenNS() -{ - try - { - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("openloadNS.xsd"); - xsh->defineFile("openloadNS2.xsd"); - - - //cout << "TYPES LOADED FROM COMPANY XSD" << endl; - //int i; - //TypeList tl = mdg->getTypes(); - //for (i=0;i< tl.size(); i++) - //{ - // cout << tl[i].getURI() << ":" << tl[i].getName() << endl; - //} - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - - - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("openloadNS.xml", "companyNS"); - - - - // so, we now expect that the openboolean and openstring props will - // be of type boolean and Bytes, and the openlist will be a list of integers. - // The dataobjectlist an dataobject will be of the correct OpenType - - // we need a test for data objects, and that we are writing out xsi:type - // correctly. - DataObjectPtr comp = myXMLDocument->getRootDataObject(); - DataObjectList& dl = comp->getList("departments"); - DataObjectPtr dept = dl[0]; - DataObjectList& dl2 = dept->getList("employees"); - DataObjectPtr emp = dl2[0]; - - if (strcmp(emp->getProperty("openboolean").getType().getName(), - "Boolean")) - { - if (!silent)cout << "OpenLoadNS failure - bool property not boolean" << endl; - return 0; - - } - if (emp->getBoolean("openboolean") != true) - { - if (!silent)cout << "OpenLoadNS failure - bool property not true" << endl; - return 0; - } - - if (strcmp(emp->getProperty("openstring").getType().getName(), - "Bytes")) - { - if (!silent)cout << "OpenLoadNS failure - bytes property not bytes" << endl; - return 0; - - } - if (strcmp(emp->getCString("openstring"),"Value Of Open String")) - { - if (!silent)cout << "OpenLoadNS failure - string value is" << - emp->getCString("openstring") << endl; - return 0; - } - - - DataObjectList& dl3 = emp->getList("openintlist"); - - if (strcmp(emp->getProperty("openintlist").getType().getName(), - "Short")) - { - if (!silent)cout << "OpenLoadNS failure - IntegerList not Short " << - emp->getProperty("openintlist").getType().getName() << endl; - return 0; - } - - if (dl3.getInteger(0) != 45) - { - if (!silent)cout << "OpenLoadNS failure - Integer value is" << - dl.getInteger(0) << endl; - return 0; - } - - - - myXMLHelper->save(myXMLDocument->getRootDataObject(), - 0, "company", "openloadNSout.xml"); - - if (!comparefiles("openloadNSout.xml","openloadNSout.txt"))return 0; - - - // now try exactly the same, but with NS which doesnt exist - XMLDocumentPtr myXMLDocument2 = myXMLHelper->loadFile("openloadNS2.xml", "companyNS"); - - - - // so, we now expect that the openboolean and openstring props will - // be of type boolean and Bytes, and the openlist will be a list of integers. - // The dataobjectlist an dataobject will be of the correct OpenType - - // we need a test for data objects, and that we are writing out xsi:type - // correctly. - DataObjectPtr comp2 = myXMLDocument2->getRootDataObject(); - DataObjectList& dld = comp2->getList("departments"); - DataObjectPtr dept2 = dld[0]; - DataObjectList& dl22 = dept2->getList("employees"); - DataObjectPtr emp2 = dl22[0]; - - if (strcmp(emp2->getProperty("openboolean").getType().getName(), - "Bytes")) - { - if (!silent)cout << "OpenLoadNS2 failure - bool property not bytes" << endl; - return 0; - - } - if (emp2->getBoolean("openboolean") != true) - { - if (!silent)cout << "OpenLoadNS2 failure - bool property not true" << endl; - return 0; - } - - if (strcmp(emp2->getProperty("openstring").getType().getName(), - "Bytes")) - { - if (!silent)cout << "OpenLoadNS2 failure - bytes property not bytes" << endl; - return 0; - - } - if (strcmp(emp2->getCString("openstring"),"Value Of Open String")) - { - if (!silent)cout << "OpenLoadNS failure - string value is" << - emp2->getCString("openstring") << endl; - return 0; - } - - - DataObjectList& dl32 = emp2->getList("openintlist"); - - if (strcmp(emp2->getProperty("openintlist").getType().getName(), - "OpenDataObject")) - { - if (!silent)cout << "OpenLoadNS2 failure - IntegerList not OpenDataObject " << - emp2->getProperty("openintlist").getType().getName() << endl; - return 0; - } - - if (atoi(dl32.getDataObject(0)->getSequence()->getCStringValue(0)) != 45) - { - if (!silent)cout << "OpenLoadNS2 failure - Integer value is" << - dl32.getInteger(0) << endl; - return 0; - } - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "LoadOpenNS FAILED" << e << endl; - return 0; - } - -} - -int sdotest::loadManyOpen() -{ - try - { - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("many.xsd"); - - - //cout << "TYPES LOADED FROM COMPANY XSD" << endl; - //int i; - //TypeList tl = mdg->getTypes(); - //for (i=0;i< tl.size(); i++) - //{ - // cout << tl[i].getURI() << ":" << tl[i].getName() << endl; - //} - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - - - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("many.xml", "companyNS"); - - - - // so, we now expect that the openboolean and openstring props will - // be of type boolean and Bytes, and the openlist will be a list of integers. - // The dataobjectlist an dataobject will be of the correct OpenType - - // we need a test for data objects, and that we are writing out xsi:type - // correctly. - DataObjectPtr comp = myXMLDocument->getRootDataObject(); - DataObjectList& dl = comp->getList("departments"); - DataObjectPtr dept = dl[0]; - DataObjectList& dl2 = dept->getList("employees"); - DataObjectPtr emp = dl2[0]; - - - DataObjectList& dl3 = emp->getList("openlist"); - - // change to match spec - now an open data object - // the list should contain a single data object with a sequence of three text elements - - if (strcmp(emp->getProperty("openlist").getType().getName(), - "OpenDataObject")) - { - if (!silent)cout << "OpenManyLoad failure - BytesList not OpenDataObject " << - emp->getProperty("openlist").getType().getName() << endl; - return 0; - } - - if (dl3.size() != 3) - { - if (!silent)cout << "OpenManyLoad failure - size is " << - dl3.size() << endl; - return 0; - } - - SequencePtr sq = dl3[0]->getSequence(); - if (strcmp(sq->getCStringValue(0),"Three member")) return 0; - - SequencePtr sq2 = dl3[1]->getSequence(); - if (strcmp(sq2->getCStringValue(0),"Open bytes")) return 0; - - SequencePtr sq3 = dl3[2]->getSequence(); - if (strcmp(sq3->getCStringValue(0),"List is complete")) return 0; - - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "LoadOpen FAILED" << e << endl; - return 0; - } - -} - -int sdotest::csload2() -{ - //cout << "TEST: CSLoad2 ===============================================" << endl; - try - { - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("company.xsd"); - - //cout << "TYPES LOADED FROM COMPANY XSD" << endl; - - //TypeList tl = mdg->getTypes(); - //for (int i=0;i< tl.size(); i++) - //{ - // cout << tl[i].getURI() << ":" << tl[i].getName() << endl; - //} - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("cssave2-output.xml", "companyNS"); - myXMLHelper->save(myXMLDocument->getRootDataObject(), - 0, "company", "csload2-output.xml"); - - if (!comparefiles("csload2-output.xml","csload2-output.txt")) return 0; - - XMLDocumentPtr myXMLDocument2 = myXMLHelper->loadFile("csload2-output.xml", "companyNS"); - myXMLHelper->save(myXMLDocument2->getRootDataObject(), - 0, "company", "csload3-output.xml"); - - return comparefiles("csload3-output.xml","csload3-output.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ERROR in CsLoad2" << e << endl; - return 0; - } -} - -int sdotest::bug1() -{ - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - try { - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("bugs/1/company.xsd"); - - //TypeList tl = mdg->getTypes(); - //for (int i=0;i< tl.size(); i++) - //{ - // cout << tl[i].getURI() << ":" << tl[i].getName() << endl; - //} - - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("bugs/1/company.xml", - "http://www.mycompanyinc.com"); - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ERROR in Bug1" << e << endl; - return 0; - } - return 1; -} - -int sdotest::setnull() -{ - - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("NullNS","NullMainType"); - mdg->addType("NullNS","NullSubType"); - - /* Now add the properties to the types...*/ - - const Type& tstring = mdg->getType("commonj.sdo","String"); - const Type& tint = mdg->getType("commonj.sdo","Integer"); - const Type& tbool = mdg->getType("commonj.sdo","Boolean"); - const Type& tcs = mdg->getType("commonj.sdo","ChangeSummary"); - const Type& tmain = mdg->getType("NullNS","NullMainType"); - const Type& tsub = mdg->getType("NullNS","NullSubType"); - - - mdg->addPropertyToType(tmain,"name",tstring); - mdg->addPropertyToType(tmain,"subs",tsub, true); // many - mdg->addPropertyToType(tmain,"asub",tsub, false); // single - mdg->addPropertyToType(tmain,"bsub",tsub, false); // single - - mdg->addPropertyToType(tmain,"cs",tcs); // change summary - - mdg->addPropertyToType(tsub,"name",tstring); - mdg->addPropertyToType(tsub,"number",tint); - mdg->addPropertyToType(tsub,"bool",tbool); - - - // create a graph, then save it - - DataObjectPtr main1 = mdg->create((Type&)tmain); - main1->setCString("name","MainObject"); - - // asub is initially set - DataObjectPtr sub0 = main1->createDataObject("asub"); - // bsub is not set. - - DataObjectPtr sub1 = mdg->create((Type&)tsub); - DataObjectPtr sub2 = mdg->create((Type&)tsub); - DataObjectPtr sub3 = mdg->create((Type&)tsub); - - DataObjectList& dol = main1->getList("subs"); - - dol.append(sub1); - dol.append(sub2); - dol.append(sub3); - - // sub1 has all values set initially - - sub1->setCString("name","All Initially set"); - sub1->setInteger("number",100); - sub1->setBoolean("bool",false); - - // sub2 has no values set at all - - - // sub3 has all values set to null - sub3->setNull("name"); - sub3->setNull("number"); - sub3->setNull("bool"); - - - // report - - if (main1->isNull("asub")) return 0; - - if (!main1->isSet("asub")) return 0; - - if (main1->isNull("bsub")) return 0; - - if (main1->isSet("bsub")) return 0; - -// dol0 is set, not null - - if (dol[0]->isNull("name")) return 0; - - if (dol[0]->isNull("number")) return 0; - - if (dol[0]->isNull("bool")) return 0; - - if (!dol[0]->isSet("name")) return 0; - - if (!dol[0]->isSet("number")) return 0; - - if (!dol[0]->isSet("bool")) return 0; - -// dol1 is all unset , so no nulls - - if (dol[1]->isNull("name")) return 0; - - if (dol[1]->isNull("number")) return 0; - - if (dol[1]->isNull("bool")) return 0; - - if (dol[1]->isSet("name")) return 0; - - if (dol[1]->isSet("number")) return 0; - - if (dol[1]->isSet("bool")) return 0; - -// dol2 is all nulls, so all set - - if (!dol[2]->isNull("name")) return 0; - - if (!dol[2]->isNull("number")) return 0; - - if (!dol[2]->isNull("bool")) return 0; - - if (!dol[2]->isSet("name")) return 0; - - if (!dol[2]->isSet("number")) return 0; - - if (!dol[2]->isSet("bool")) return 0; - - ChangeSummaryPtr cs = main1->getChangeSummary(); - - cs->beginLogging(); - - main1->setNull("asub"); - main1->setNull("bsub"); - - dol[0]->setNull("name"); - dol[0]->setNull("number"); - dol[0]->setNull("bool"); - - dol[1]->setNull("bool"); - - dol[2]->setCString("name","NewName"); - dol[2]->setInteger("number",100); - dol[2]->setBoolean("bool",true); - - - cs->endLogging(); - - // what would we expect from the change summary? - - //cout << "==============Expected in Change Summary=================" << endl; - //cout << "change to main1 - object asub set to null, oldvalue asub (set)" << endl; - //cout << "change to main1 - object bsub set to null, oldvalue null (unset)" << endl; - //cout << "change to sub1 - name asub set to null, oldvalue \"All Initially Set\" (set)" << endl; - //cout << "change to sub1 - number asub set to null, oldvalue 100 (set)" << endl; - //cout << "change to sub1 - bool asub set to null, oldvalue false (set)" << endl; - //cout << "change to sub2 - bool asub set to null, oldvalue false (unset)" << endl; - //cout << "change to sub3 - name asub set to \"NewName\", oldvalue null, set" << endl; - //cout << "change to sub3 - number asub set to 100, oldvalue null, set" << endl; - //cout << "change to sub3 - bool asub set to true, oldvalue null, set" << endl; - //cout << "==============End Expected in Change Summary=============" << endl; - - FILE* f = fopen("setnull.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open setnull.dat" << endl; - return 0; - } - - dumpchangesummary(f, cs); - - fclose(f); - - if (!comparefiles("setnull.dat","setnull.txt")) return 0; - - // report - - if (!main1->isNull("asub")) return 0; - - if (!main1->isSet("asub")) return 0; - - if (!main1->isNull("bsub")) return 0; - - if (!main1->isSet("bsub")) return 0; - -// dol0 is set to null - - if (!dol[0]->isNull("name")) return 0; - - if (!dol[0]->isNull("number")) return 0; - - if (!dol[0]->isNull("bool")) return 0; - - if (!dol[0]->isSet("name")) return 0; - - if (!dol[0]->isSet("number")) return 0; - - if (!dol[0]->isSet("bool")) return 0; - -// dol1 is all unset except bool which is null - - if (dol[1]->isNull("name")) return 0; - - if (dol[1]->isNull("number")) return 0; - - if (!dol[1]->isNull("bool")) return 0; - - if (dol[1]->isSet("name")) return 0; - - if (dol[1]->isSet("number")) return 0; - - if (!dol[1]->isSet("bool")) return 0; - -// dol2 is all set non-null, so all set - - if (dol[2]->isNull("name")) return 0; - - if (dol[2]->isNull("number")) return 0; - - if (dol[2]->isNull("bool")) return 0; - - if (!dol[2]->isSet("name")) return 0; - - if (!dol[2]->isSet("number")) return 0; - - if (!dol[2]->isSet("bool")) return 0; - - - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Exception in setnull" << e << endl; - return 0; - } -} - - -int sdotest::testsubs() -{ - - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("companyNS","MainType"); - - mdg->addType("companyNS","SubType"); - mdg->addType("companyNS","SuperType"); - mdg->addType("companyNS","SubstituteType"); - mdg->addType("companyNS","UnrelatedType"); - - /* Now add the properties to the types...*/ - - - 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& tmain = mdg->getType("companyNS","MainType"); - const Type& sub = mdg->getType("companyNS","SubType"); - const Type& super = mdg->getType("companyNS","SuperType"); - const Type& subst = mdg->getType("companyNS","SubstituteType"); - const Type& unrel = mdg->getType("companyNS","UnrelatedType"); - - - mdg->addPropertyToType(tmain,"name",tstring); - mdg->addPropertyToType(tmain,"sub",super, false); - mdg->addPropertyToType(tmain,"subs",super, true); - - - mdg->setPropertySubstitute(tmain, "sub","wilbur", subst); - mdg->setPropertySubstitute(tmain, "subs","wilburs", subst); - - mdg->setBaseType(sub,super); - - //now sub and subs should accept all the three types - - DataObjectPtr main = mdg->create((Type&)tmain); - main->setCString("name","SubstituteTest"); - - DataObjectList& dol = main->getList("subs"); - - DataObjectPtr sub1 = mdg->create(sub); - DataObjectPtr super1 = mdg->create(super); - DataObjectPtr subst1 = mdg->create(subst); - DataObjectPtr unrel1 = mdg->create(unrel); - - dol.append(sub1); - dol.append(super1); - dol.append(subst1); - try - { - dol.append(unrel1); - return 0; - } - catch (SDOInvalidConversionException e) - { - //cout << "Normal failure to append wrong type" << endl; - } - - dol.remove(0); - dol.remove(0); - dol.remove(0); - - DataObjectList& dol2 = main->getList("wilburs"); - - dol2.append(sub1); - dol2.append(super1); - dol2.append(subst1); - try - { - dol2.append(unrel1); - return 0; - } - catch (SDOInvalidConversionException e) - { - //cout << "Normal failure to append wrong type" << endl; - } - - main->setDataObject("sub",sub1); - main->setDataObject("sub",super1); - main->setDataObject("sub",subst1); - - main->setDataObject("wilbur",sub1); - main->setDataObject("wilbur",super1); - main->setDataObject("wilbur",subst1); - - try - { - main->setDataObject("sub", unrel1); - return 0; - } - catch (SDOInvalidConversionException e) - { - //cout << "Normal failure to set wrong type" << endl; - } - return 1; - } - - catch (SDORuntimeException e) - { - if (!silent)cout << "Substitute test failed" << endl << e << endl; - return 0; - } -} - - -int sdotest::merle1() -{ - - try { - - // Dynamic setup of the metadata - - FILE *f = fopen("merle1.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open merle1.dat" << endl; - return 0; - } - - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("axis.xsd"); - - // or dynamically create, but that would get attributes for the strings, not elements - //mdg->addType("axis","ItemSearch",true); // sequenced - //mdg->addType("axis","ItemSearchRequest",true); // sequenced - - const Type& tstring = mdg->getType("commonj.sdo","String"); - const Type& tsearch = mdg->getType("axis","ItemSearch"); - const Type& treq = mdg->getType("axis","ItemSearchRequest"); - - //mdg->addPropertyToType(tsearch,"SubscriptionId",tstring); - //mdg->addPropertyToType(tsearch,"AssociateTag",tstring); - //mdg->addPropertyToType(tsearch,"XMLEscaping",tstring); - //mdg->addPropertyToType(tsearch,"Validate",tstring); - //mdg->addPropertyToType(tsearch,"Shared",treq, false, false, true); - //mdg->addPropertyToType(tsearch,"Request",treq, true, false, true); - - //mdg->addPropertyToType(treq,"Keywords",tstring); - //mdg->addPropertyToType(treq,"SearchIndex",tstring); - - // dynamic creation of the data - - DataObjectPtr search = mdg->create((Type&)tsearch); - - search->setCString("SubscriptionId","I am the subscription ID string"); - search->setCString("AssociateTag","I am the associate Tag string"); - search->setCString("XMLEscaping","I am the XML escaping string"); - search->setCString("Validate","I am the Validate string"); - - DataObjectPtr shared = search->createDataObject("Shared"); - shared->setCString("Keywords","SharedKeywordsString"); - shared->setCString("SearchIndex","SearchIndexString"); - - DataObjectList& requests = search->getList("Request"); - DataObjectPtr request1 = mdg->create(treq); - requests.append(request1); - request1->setCString("Keywords","RequestKeywords"); - request1->setCString("SearchIndex","RequestSearchIndex"); - - // Read the data and put it into XML: - - PropertyList properties = search->getInstanceProperties(); - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - - for (int i=0;i<properties.size();i++) - { - Property& prop = properties[i]; - switch (prop.getTypeEnum()) - { - - case Type::StringType: - fprintf(f,"<%s>%s</%s>\n",prop.getName(), search->getCString(prop), - prop.getName()); - break; - - case Type::DataObjectType: - if (prop.isMany()) - { - // many valued property, such as Requests , so get the list - DataObjectList& rq = search->getList(prop); - for (int j=0;j<rq.size();j++) - { - DataObjectPtr dob = rq[j]; - if (dob != 0) - { - XMLDocumentPtr doc = myXMLHelper->createDocument(dob, - "axis", prop.getName()); - doc->setXMLDeclaration(false); - char* dobXML = myXMLHelper->save(doc); - fprintf(f,"DataObject \"%s\" as XML:\n",prop.getName()); - fprintf(f,"%s\n", dobXML); - } // if dob - } // for - } // if many - else - { - DataObjectPtr dob = search->getDataObject(prop); - if (dob != 0) - { - XMLDocumentPtr doc = myXMLHelper->createDocument(dob, - "axis", prop.getName()); - doc->setXMLDeclaration(false); - char* dobXML = myXMLHelper->save(doc); - fprintf(f,"DataObject \"%s\" as XML:\n",prop.getName()); - fprintf(f, "%s\n", dobXML); - } // if - } // else - break; - - default: - break; - - } // switch - } // for - fclose(f); - return comparefiles("merle1.dat","merle1.txt"); - } // try - catch (SDORuntimeException e) - { - if (!silent)cout << "Merle 1 failed" << endl << e << endl; - return 0; - } -} - - -int sdotest::graham3() -{ - try { - - // Dynamic setup of the metadata - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("graham3.xsd"); - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Graham1 failed " << e << endl; - return 0; - } -} - -int sdotest::graham1() -{ - try { - - // Dynamic setup of the metadata - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("graham1.xsd"); - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Graham1 failed " << e << endl; - return 0; - } -} -int sdotest::graham2() -{ - try { - - // Dynamic setup of the metadata - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("graham2.xsd"); - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Graham2 failed " << e << endl; - return 0; - } -} - - -int sdotest::b46613() -{ - try { - - // Dynamic setup of the metadata - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->create("rubbish","MyObject"); - - return 0; - - } - catch (SDOTypeNotFoundException e) - { - //cout << "b46613 gave the correct exception" << endl; - return 1; - } -} - -int sdotest::doctest() -{ - try { - - FILE *f = fopen("doctest.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open doctest.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("doctest.xsd"); - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("doctest.xml", - "companyNS"); - fprintf(f,"RootURI=%s\n",myXMLDocument->getRootElementURI()); - fprintf(f,"RootName=%s\n",myXMLDocument->getRootElementName()); - fclose(f); - return comparefiles("doctest.dat","doctest.txt"); - } - catch (SDOTypeNotFoundException e) - { - if (!silent)cout << "doctest failed" << endl; - return 0; - } - -} - - -int sdotest::b46634() -{ - try { - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("company_with_nillable_SN.xsd"); - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("company_with_nillable_SN.xml", - "companyNS"); - - DataObjectPtr dob = myXMLDocument->getRootDataObject(); - DataObjectList& dol = dob->getList("departments"); - DataObjectPtr dept = dol[0]; - DataObjectList& dol2 = dept->getList("employees"); - DataObjectPtr emp = dol2[0]; - - if (!emp->isSet("SN")) - { - if (!silent)cout << "B46634 WRONG - isSet should be true" << endl; - return 0; - } - if (!emp->isNull("SN")) - { - if (!silent)cout << "B46634 WRONG - isNull should be true" << endl; - return 0; - } - - // now write out the nill value and check its still nil - myXMLHelper->save(myXMLDocument->getRootDataObject(), - 0, "company", "b46634_out.xml"); - return comparefiles("b46634_out.xml","b46634_out.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "b46634 failed" << endl; - return 0; - } - -} - -int sdotest::testErrors() -{ - try { - - int i,j; - - FILE *f = fopen("testerrors.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open testerrors.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->defineFile("error1.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - fprintf(f,"XSD reported some errors:\n"); - for (j=0;j<i;j++) - { - const char* m = xsh->getErrorMessage(j); - if (m != 0) fprintf(f,"%s\n", m); - } - } - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("error1.xml", - "companyNS"); - - if ((i = myXMLHelper->getErrorCount()) > 0) - { - fprintf(f,"XML reported some errors:\n"); - for (j=0;j<i;j++) - { - const char *m = myXMLHelper->getErrorMessage(j); - if (m != 0) fprintf(f,"%s\n",m); - } - } - - fclose(f); - return comparefiles("testerrors.dat","testerrors.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "testErrors failed" << endl << e << endl; - return 0; - } - -} - -int sdotest::b46734() -{ - try { - - int i,j; - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("wsdl.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "WSDL XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - xsh->defineFile("wsdl-soap.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "WSDL SOAP XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char* m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - xsh->defineFile("wsdl-http.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "WSDL HTTP XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char* m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("StockQuoteService.wsdl" - ); - - if ((i = myXMLHelper->getErrorCount()) > 0) - { - if (!silent) - { - cout << "XML reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char * m = myXMLHelper->getErrorMessage(j); - if (m != 0)cout << m; - cout << endl; - } - } - return 0; - } - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "b46734 failed" << endl << e << endl; - return 0; - } - -} - -int sdotest::b46693() -{ - try { - - int i,j; - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("b46693.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "b46693 XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char* m = xsh->getErrorMessage(j); - if (m != 0)cout << m; - cout << endl; - } - } - return 0; - } - - // XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - // XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("b46693.xsd" - // ); - - // if ((i = myXMLHelper->getErrorCount()) > 0) - // { - // cout << "b46693 reported some errors:" << endl; - // for (j=0;j<i;j++) - // { - // const char* m = myXMLHelper->getErrorMessage(j); - // if (m != 0)cout << m; - // cout << endl; - // } - // } - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "b46693 failed" << endl << e << endl; - return 0; - } - -} - -int sdotest::clonetest() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("companyNS","CompanyType"); - mdg->addType("companyNS","DepartmentType"); - mdg->addType("companyNS","EmployeeType"); - - - 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"); - - mdg->addPropertyToType(tcomp,"name",tstring); - mdg->addPropertyToType(tcomp,"departments",tdept,true,false,true); - mdg->addPropertyToType(tcomp,"employeeOfTheMonth",temp,false,false,false); - mdg->addPropertyToType(tcomp,"CEO",temp,false,false,true); - - mdg->addPropertyToType(tdept,"employees",temp,true,false,true); - mdg->addPropertyToType(tdept,"name",tstring,false,false,true); - mdg->addPropertyToType(tdept,"location",tstring,false,false,true); - mdg->addPropertyToType(tdept,"number",tstring,false,false,true); - - mdg->addPropertyToType(temp,"name",tstring,false,false,true); - mdg->addPropertyToType(temp,"SN",tstring,false,false,true); - mdg->addPropertyToType(temp,"manager",tbool,false,false,true); - - - DataObjectPtr comp = mdg->create((Type&)tcomp); - comp->setCString("name","The Company"); - - DataObjectPtr dept = mdg->create((Type&)tdept); - - DataObjectList& dol = comp->getList("departments"); - dol.append(dept); - - dept->setCString("name","The Department"); - dept->setCString("location","Botley"); - dept->setCString("number","123"); - - - // now clone the data factory, and add more types - - DataFactoryPtr df2 = mdg->clone(); - - df2->addType("otherNS","DataSet"); - - df2->addPropertyToType("companyNS","DepartmentType","dataset", - "otherNS","DataSet", false, false, true); - - const Type& tstring2 = df2->getType("commonj.sdo","String"); - const Type& tbool2 = df2->getType("commonj.sdo","Boolean"); - const Type& tcs2 = df2->getType("commonj.sdo","ChangeSummary"); - const Type& tcomp2 = df2->getType("companyNS","CompanyType"); - const Type& tdept2 = df2->getType("companyNS","DepartmentType"); - const Type& temp2 = df2->getType("companyNS","EmployeeType"); - - DataObjectPtr comp2 = df2->create((Type&)tcomp2); - comp->setCString("name","The Company"); - - DataObjectPtr dept2 = df2->create((Type&)tdept2); - - DataObjectList& dol2 = comp2->getList("departments"); - dol2.append(dept2); - - dept2->setCString("name","The Other Department"); - dept2->setCString("location","Not Botley"); - dept2->setCString("number","321"); - - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "clone failed " << e << endl; - return 0; - } - - -} - -int sdotest::testUtil() -{ - try { - - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - - mdg->addType("companyNS","CompanyType"); - // employee will be an open type... - mdg->addType("companyNS","EmployeeType", /*seq*/false, - /*open*/true, - /*abs */ false, - /*data*/ false); - - mdg->addType("companyNS","DepartmentType"); - - mdg->addType("companyNS","OpenType"); - - /* Now add the properties to the types...*/ - - - 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"); - const Type& topen = mdg->getType("companyNS","OpenType"); - - - mdg->addPropertyToType(tcomp,"name",tstring); - // not containment... - mdg->addPropertyToType(tcomp,"employeeOfTheMonth",temp, false,false,false); - mdg->addPropertyToType(tcomp,"departments",tdept, true); - mdg->addPropertyToType(tcomp,"cs",tcs); - - mdg->addPropertyToType(tdept,"name",tstring); - mdg->addPropertyToType(tdept,"location",tstring); - mdg->addPropertyToType(tdept,"number",tstring); - mdg->addPropertyToType(tdept,"employees",temp,true); - - mdg->addPropertyToType(temp, "name",tstring); - mdg->addPropertyToType(temp, "SN", tstring); - mdg->addPropertyToType(temp, "manager", tbool); - - mdg->addPropertyToType(topen,"name",tstring); - - 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"); - - DataObjectList& emps = dept->getList("employees"); - - DataObjectPtr emp1 = mdg->create(temp); - DataObjectPtr emp2 = mdg->create(temp); - DataObjectPtr emp3 = mdg->create(temp); - - emps.append(emp1); - emps.append(emp2); - emps.append(emp3); - - emp1->setCString("name","Albert"); - emp1->setCString("SN","E0001"); - - emp2->setCString("name","Boris"); - emp2->setCString("SN","E0002"); - emp2->setBoolean("manager",true); - - emp3->setCString("name","Carl"); - emp3->setCString("SN","E0003"); - - emp1->setCString("openstring","Value Of Open String"); - emp1->setBoolean("openboolean",true); - - const char* c = emp1->getCString("openstring"); - - bool b = emp1->getBoolean("openboolean"); - - // unknown list type at present.. - DataObjectList& dl = emp1->getList("openintlist"); - - int i = 45; - dl.append((short)i); // now the list must be primitive and short!! - - // unknown list type at present.. - DataObjectList& dl2 = emp1->getList("opendataobjectlist"); - - DataObjectPtr myopen = mdg->create("companyNS","OpenType"); - myopen->setCString("name","MyOpenName"); - dl2.append(myopen); // now the list must be of data objects - - emp1->setDataObject("opendataobject", myopen); - - filebuf fb; - fb.open ("testutils.dat",ios::out); - ostream os(&fb); - SDOUtils::printDataObject(os, comp); - fb.close(); - return comparefiles("testutils.dat","testutils.txt"); - - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ERROR in UTILS test" << e << endl; - return 0; - } - -} - -int sdotest::printset(FILE *f, ChangeSummaryPtr cs) -{ - ChangedDataObjectList& cdl = cs->getChangedDataObjects(); - - // here there should be a creation of Ed, and a change to dept, which has a - // bool previously unset, and a int list previuously unset and an employees list - // previously unset - - for (int i=0;i< cdl.size();i++) - { - if (cs->isModified(cdl[i])) - { - - fprintf(f,"A modified of type %s#%s\n",cdl[i]->getType().getURI() - ,cdl[i]->getType().getName()); - - SettingList& sl = cs->getOldValues(cdl[i]); - if (sl.size() == 0) - { - fprintf(f,"No Settings found\n"); - } - else - { - for (int j=0;j< sl.size(); j++) - { - fprintf(f,"Property %s",sl[j].getProperty().getName()); - // this could be a many-valued property, and could be one which is - // a data object or a data type... - if (sl[j].getProperty().isMany()) - { - fprintf(f,"[%s]",sl[j].getIndex()); - } - if (!sl[j].isSet()) - { - fprintf(f," was unset before the change\n"); - } - else - { - fprintf(f," was set before the change !!\n"); - } - } - } - } - } - return 1; -} - - -int sdotest::b46633() -{ - try { - - FILE *f = fopen("b46633.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open b46633.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addPropertyToType("myspace","Root","cs", - "commonj.sdo","ChangeSummary", false, false, false); - - mdg->addType("myspace","Company"); - mdg->addType("myspace","Department"); - mdg->addType("myspace","Manager"); - mdg->addType("myspace","Employee"); - - - mdg->addPropertyToType("myspace","Company","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","Root","company", - "myspace","Company", false, false, true); - - mdg->addPropertyToType("myspace","Company","departments", - "myspace","Department", true, false, true); - - - mdg->addPropertyToType("myspace","Department","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Department","ints", - "commonj.sdo","Integer", true, false, false); - - - mdg->addPropertyToType("myspace","Department","bool", - "commonj.sdo","Boolean", false, false, false); - - mdg->addPropertyToType("myspace","Department","manager", - "myspace","Manager", false, false, true); - - mdg->addPropertyToType("myspace","Department","employees", - "myspace","Employee", true, false, true); - - mdg->addPropertyToType("myspace","Manager","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Employee","name", - "commonj.sdo","String", false, false, false); - - const Type& tcc = mdg->getType("myspace","Root"); - - DataObjectPtr dor = mdg->create((Type&)tcc); - - ChangeSummaryPtr cs = dor->getChangeSummary(); - - DataObjectPtr com = dor->createDataObject("company"); - com->setCString("name","IBM"); - - DataObjectPtr dept = com->createDataObject("departments"); - dept->setCString("name","JTC"); - - // employees initally unset - - cs->beginLogging(); - - DataObjectPtr emp = dept->createDataObject("employees"); - emp->setCString("name","Ed"); - - - - DataObjectList& dl = dept->getList("ints"); - dl.append((long)400); - - dept->setBoolean("bool", true); - - printset(f,cs); - - cs->endLogging(); - - // unset them all , restart logging, and get the same results - - dept->unset("bool"); - dept->unset("ints"); - dept->unset("employees"); - - cs->beginLogging(); - - DataObjectPtr emp2 = dept->createDataObject("employees"); - emp2->setCString("name","Ed2"); - - dl.append((long)600); - - dept->setBoolean("bool", true); - - printset(f, cs); - - cs->endLogging(); - - fclose(f); - - return comparefiles("b46633.dat","b46633.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "b46633 failed " << e << endl; - return 0; - } - -} - - - -int sdotest::testLoad() -{ - try - { - int i,j; - DataFactoryPtr mdg = DataFactory::getDataFactory(); - FILE* f = fopen("company_with_nillable_SN.xsd","r+"); - char* buffer = new char[4000]; - j = 0; - while ((i = fgetc(f)) != EOF) - { - buffer[j++] = (char)i; - } - buffer[j] = 0; - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - xsh->define(buffer); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) { - cout << "XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - FILE* f2 = fopen("company_with_nillable_SN.xml","r+"); - j = 0; - while ((i = fgetc(f2)) != EOF) - { - buffer[j++] = (char)i; - } - buffer[j] = 0; - - XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr myXMLDocument = myXMLHelper->load(buffer); - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Exception in testDAS " << e << endl; - return 0; - } -} - -int sdotest::includetest() -{ - try - { - int i,j; - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("include.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "INCLUDE XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - xsh->defineFile("../test/test/includeother.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "INCLUDE XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Exception in include test" << e << endl; - return 0; - } -} - -int sdotest::detachtest() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - - mdg->addType("myspace","Company"); - mdg->addType("myspace","Department"); - mdg->addType("myspace","Manager"); - mdg->addType("myspace","Employee"); - - - mdg->addPropertyToType("myspace","Company","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","Root","company", - "myspace","Company", false, false, true); - - mdg->addPropertyToType("myspace","Company","departments", - "myspace","Department", true, false, true); - - - mdg->addPropertyToType("myspace","Department","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","Department","manager", - "myspace","Manager", false, false, true); - - mdg->addPropertyToType("myspace","Department","employees", - "myspace","Employee", true, false, true); - - mdg->addPropertyToType("myspace","Manager","name", - "commonj.sdo","String", false, false, false); - - mdg->addPropertyToType("myspace","Employee","name", - "commonj.sdo","String", false, false, false); - - const Type& tcc = mdg->getType("myspace","Root"); - - DataObjectPtr dor = mdg->create((Type&)tcc); - - DataObjectPtr com = dor->createDataObject("company"); - com->setCString("name","IBM"); - - DataObjectPtr dept = com->createDataObject("departments"); - - dept->setCString("name","JTC"); - - - DataObjectPtr emp = dept->createDataObject("employees"); - emp->setCString("name","Ed"); - - DataObjectPtr emp2 = dept->createDataObject("employees"); - emp2->setCString("name","Tom"); - - DataObjectList& dol = dept->getList("employees"); - - DataObjectPtr e = dol[0]; - e->detach(); - - DataObjectPtr cont = emp->getContainer(); - - if (cont != 0) - { - if (!silent)cout << "EMP STILL ATTACHED - problem" << endl; - return 0; - } - - DataObjectPtr cont2 = dol[0]->getContainer(); - - if (cont2 == 0) - { - if (!silent)cout << "SECOND DETACHED - problem" << endl; - return 0; - } - - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "detach failed " << e << endl; - return 0; - } - -} - - -int sdotest::leak() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - - - mdg->addPropertyToType("myspace","Root","ints", - "commonj.sdo","Integer", true, false, false); - - - const Type& tcc = mdg->getType("myspace","Root"); - - DataObjectPtr dor = mdg->create((Type&)tcc); - - - if (dor->isSet("ints")) return 0; - - DataObjectList& dl = dor->getList("ints"); - - if (dor->isSet("ints")) return 0; - - dl.append((long)400); - - if (!dor->isSet("ints")) return 0; - - dl.remove(0); - - if (dor->isSet("ints")) return 0; - - dl.append((long)400); - - if (!dor->isSet("ints")) return 0; - - dor->unset("ints"); - - if (dor->isSet("ints")) return 0; - - dl.append((long)600); - - if (!dor->isSet("ints")) return 0; - - return 1; - - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "leak failed " << e << endl; - return 0; - } - -} - -int sdotest::twolists() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - - mdg->addPropertyToType("myspace","Root","ints", - "commonj.sdo","Integer", true, false, false); - - mdg->addPropertyToType("myspace","Root","ints2", - "commonj.sdo","Integer", true, false, false); - - - const Type& tcc = mdg->getType("myspace","Root"); - - DataObjectPtr dor = mdg->create((Type&)tcc); - - DataObjectList& dl2 = dor->getList("ints2"); - dl2.append((long)400); - - - DataObjectList& dl = dor->getList("ints"); - dl.append((long)400); - return 1; - - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "twolists failed " << e << endl; - return 0; - } - -} - - -int sdotest::graham4() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addType("myspace","ListItem"); - - - mdg->addPropertyToType("myspace","ListItem","name", - "commonj.sdo","String", false, false, false); - - - mdg->addPropertyToType("myspace","Root","ints", - "commonj.sdo","Integer", true, false, false); - - mdg->addPropertyToType("myspace","Root","items", - "myspace","ListItem", true, false, true); - - - const Type& tcc = mdg->getType("myspace","Root"); - - DataObjectPtr dor = mdg->create((Type&)tcc); - - - // first try with no elements in lists - - try { - DataObjectPtr pitem = dor->getDataObject("items[name=\"hello\"]"); - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - //cout << "Normal exception in Graham4" << endl; - } - - try { - int inty = dor->getInteger("ints[1]"); - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - //cout << "Normal exception in Graham4" << endl; - } - - // now populate them - - DataObjectPtr myitem = dor->createDataObject("items"); - myitem->setCString("name","not hello"); - - try { - DataObjectPtr pitem2 = dor->getDataObject("items[name=\"hello\"]"); - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - //cout << "Normal exception in Graham4" << endl; - } - - DataObjectList& dl = dor->getList("ints"); - dl.append((long)100); - - try { - int inty2 = dor->getInteger("ints[2]"); - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - //cout << "Normal exception in Graham4" << endl; - } - - try - { - DataObjectPtr pitem2 = dor->getDataObject("items[name=\"not hello\"]"); - } - catch (SDORuntimeException e) - { - if (!silent)cout << "ABNORMAL exception in Graham4" << endl; - return 0; - } - - try { - int inty2 = dor->getInteger("ints[1]"); - //cout << "Integer is " << inty2 << endl; - return 1; - } - catch (SDOIndexOutOfRangeException e) - { - - if (!silent)cout << "ABNORMAL exception in Graham4" << endl; - return 0; - } - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "twolists failed " << e << endl; - return 0; - } - -} - - -int sdotest::graham5() -{ - try - { - int i,j; - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("Order.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "INCLUDE XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - return 1; - } - catch (SDORuntimeException r) - { - if (!silent)cout << "Graham5 failed " << r << endl; - return 0; - } -} - -int sdotest::graham6() -{ - try - { - int i,j; - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("g/Order.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "INCLUDE XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - XMLDocumentPtr doc = xmh->loadFile("g/order.xml", "orderNS"); - - char* str = xmh->save(doc); - FILE* f = fopen("g/string-output.xml","w+"); - if (f != 0) - { - fputs(str,f); - fclose(f); - } - - xmh->save(doc,"g/graham6-output.xml"); - - // now get the root and try that - DataObjectPtr dob = doc->getRootDataObject(); - char* str2 = xmh->save(dob,"orderNS","order"); - FILE* f2 = fopen("g/string-output-2.xml","w+"); - if (f2 != 0) - { - fputs(str2,f2); - fclose(f2); - } - - xmh->save(dob,"orderNS","order", "g/graham6-output-2.xml"); - - if (!comparefiles("g/string-output.xml","g/string-output.txt"))return 0; - if (!comparefiles("g/graham6-output.xml","g/graham6-output.txt")) return 0; - if (!comparefiles("g/string-output-2.xml","g/string-output-2.txt")) return 0; - return 1; - - } - catch (SDORuntimeException r) - { - if (!silent)cout << "Graham6 failed " << r << endl; - return 0; - } -} - -int sdotest::b47137() -{ - - try - { - FILE *f = fopen("b47137.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open b47137.dat" << endl; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("b47137.xsd"); - - DataObjectPtr dob = mdg->create("","guid"); - - const Type& t = dob->getType(); - - PropertyList pl = t.getProperties(); - - for (int i=0;i<pl.size();i++) - { - fprintf(f,"Property:%s\n", pl[i].getName()); - } - - dob->setCString("value","Hello"); - dob->setBoolean("isPermaLink",true); - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - xmh->save(dob,"","fluid","b47137_out.xml"); - - // now try to read back the file .. - - XMLDocumentPtr doc = xmh->loadFile("b47137_out.xml", ""); - - DataObjectPtr dob2 = doc->getRootDataObject(); - - const Type& t2 = dob2->getType(); - - PropertyList pl2 = t2.getProperties(); - - for (int j=0;j<pl2.size();j++) - { - fprintf(f,"Property:%s\n",pl2[j].getName()); - fprintf(f, "Value:%s\n", dob2->getCString(pl2[j])); - } - - fclose(f); - return comparefiles("b47137.dat","b47137.txt"); - } - catch (SDORuntimeException e) - { - if (!silent)cout << "B47137 failed " << e << endl; - return 0; - } -} - -int sdotest::b47137b() -{ - int i,j; - try - { - - FILE *f = fopen("b47137b.dat","w+"); - if (f == 0) - { - if (!silent) cout << "Unable to open b47137b.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("b47137b.xsd"); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "INCLUDE XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - TypeList tl = mdg->getTypes(); - for (int k=0;k<tl.size();k++) - { - fprintf(f,"Type:%s#%s\n",tl[k].getURI(),tl[k].getName()); - } - - DataObjectPtr dob = mdg->create("companyNS","CompanyType"); - - const Type& t = dob->getType(); - - PropertyList pl = t.getProperties(); - - for (int i=0;i<pl.size();i++) - { - fprintf(f, "Property:%s\n",pl[i].getName()); - } - - DataObjectPtr dobguid = dob->createDataObject("guid"); - - dobguid->setCString("value","Wilbur"); - dobguid->setBoolean("isPermaLink",true); - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - xmh->save(dob,"","company","b47137b_out.xml"); - - // now try to read back the file .. - - XMLDocumentPtr doc = xmh->loadFile("b47137b_out.xml", ""); - - DataObjectPtr dob2 = doc->getRootDataObject(); - - const Type& t2 = dob2->getType(); - - PropertyList pl2 = t2.getProperties(); - - for (int j=0;j<pl2.size();j++) - { - - fprintf(f,"Property:%s\n",pl2[j].getName()); - if (!strcmp(pl2[j].getName(),"guid")) - { - DataObjectPtr dobguid2 = dob2->getDataObject("guid"); - if (dobguid2 != 0) - { - fprintf(f,"guid Value:%s\n",dobguid2->getCString("value")); - fprintf(f,"guid isPermaLink:",dobguid2->getCString("isPermaLink")); - } - else - { - fprintf(f,"GUID is empty\n"); - } - } - } - fclose(f); - return comparefiles("b47137b.dat","b47137b.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "B47137b failed " << e << endl; - return 0; - } -} - -int sdotest::b47293() -{ - int i,j,k; - try - { - FILE *f = fopen("b47293.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open b47293.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("47293Catalog.xsd"); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "47293 XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - TypeList tl = mdg->getTypes(); - for ( k=0;k<tl.size();k++) - { - fprintf(f,"Type:%s#%s",tl[k].getURI(),tl[k].getName()); - } - - xsh->generateFile(tl,"47293Catalog-out.xsd","catalogNS",0); - - DataFactoryPtr mdg2 = DataFactory::getDataFactory(); - - XSDHelperPtr xsh2 = HelperProvider::getXSDHelper(mdg2); - - xsh2->defineFile("47293Catalog-out.xsd"); - - if ((i = xsh2->getErrorCount()) > 0) - { - if (!silent) - { - cout << "47293-out XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh2->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - TypeList tl2 = mdg2->getTypes(); - for (k=0;k<tl2.size();k++) - { - fprintf(f,"Type:%s#%s\n",tl2[k].getURI(),tl2[k].getName()); - } - fclose(f); - return comparefiles("b47293.dat","b47293.txt"); - } - catch (SDORuntimeException e) - { - if (!silent)cout << "B47137b failed " << e << endl; - return 0; - } -} - - -int sdotest::b47802() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addType("myspace","ListItem"); - - mdg->addPropertyToType("myspace","Root","ints", - "commonj.sdo","Integer", true, false, false); - - mdg->addPropertyToType("myspace","Root","items", - "myspace","ListItem", true, false, true); - - - const Type& tcc = mdg->getType("myspace","Root"); - const Type& tcl = mdg->getType("myspace","ListItem"); - - DataObjectPtr dor = mdg->create((Type&)tcc); - - DataObjectList& dol1 = dor->getList("ints"); - - DataObjectList& dol2 = dor->getList("items"); - - - dol1.append((long)34); - dol1.append((long)56); - - DataObjectPtr li1 = mdg->create(tcl); - DataObjectPtr li2 = mdg->create(tcl); - - dol2.append(li1); - dol2.append(li2); - - dor->unset("ints[1]"); // should work - dor->unset("items.0"); // should work - - try { - - dor->unset("ints[2]"); // should not work - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - //cout << "Normal index oor in 47802" << endl; - } - - try { - dor->unset("items.1"); // should not work - return 0; - } - catch (SDOIndexOutOfRangeException e) - { - // cout << "Normal index oor in 47802" << endl; - } - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Problem in b47802" << e << endl; - return 0; - } -} - - -int sdotest::b47663() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - DataFactoryPtr mdg2 = DataFactory::getDataFactory(); - - mdg->addType("myspace","Root"); - mdg->addType("myspace","ListItem"); - mdg->addType("myspace","Item"); - - mdg->addPropertyToType("myspace","Root","itemref", - "myspace","Item", false, false, false); - - mdg->addPropertyToType("myspace","Root","itemcont", - "myspace","Item", false, false, true); - - mdg->addPropertyToType("myspace","Root","items", - "myspace","ListItem", true, false, true); - - mdg2->addType("myspace","Root"); - mdg2->addType("myspace","ListItem"); - mdg2->addType("myspace","Item"); - - mdg2->addPropertyToType("myspace","Root","itemref", - "myspace","Item", false, false, false); - - mdg2->addPropertyToType("myspace","Root","itemcont", - "myspace","Item", false, false, true); - - mdg2->addPropertyToType("myspace","Root","items", - "myspace","ListItem", true, false, true); - - - - const Type& tcc = mdg->getType("myspace","Root"); - const Type& tcl = mdg->getType("myspace","ListItem"); - const Type& tci = mdg->getType("myspace","Item"); - - DataObjectPtr dor = mdg->create((Type&)tcc); - DataObjectPtr it1 = mdg->create((Type&)tci); - DataObjectList& dol1 = dor->getList("items"); - DataObjectPtr li11 = mdg->create(tcl); - DataObjectPtr li12 = mdg->create(tcl); - - - const Type& tcc2 = mdg2->getType("myspace","Root"); - const Type& tcl2 = mdg2->getType("myspace","ListItem"); - const Type& tci2 = mdg2->getType("myspace","Item"); - DataObjectPtr dor2 = mdg2->create((Type&)tcc2); - DataObjectPtr it2 = mdg2->create((Type&)tci2); - DataObjectList& dol2 = dor2->getList("items"); - DataObjectPtr li21 = mdg2->create(tcl2); - DataObjectPtr li22 = mdg2->create(tcl2); - - - try - { - // append from wrong factory to list - dol1.append(li21); - //cout << "ERROR - 47764 should not append from wrong factory" << endl; - //cout << "Updated test case: Correctly used data object from compatible factory" << - // endl; - } - catch (SDOInvalidConversionException e) - { - if (!silent)cout << "ERROR: Incorrect invalid conversion exception" << e << endl; - return 0; - } - - try - { - // add object from wrong factory to reference. - dor2->setDataObject("itemref",it1); - return 0; - } - catch (SDOUnsupportedOperationException e) - { - // expected ,as a reference cannot be outside the graph - } - - try - { - // add object from wrong factory to reference. - dor2->setDataObject("itemcont",it1); - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Add contained object from second factory not OK" << endl; - return 0; - } - - - dol2.append(li22); // OK - - try - { - dol2.insert(0,li11); - //cout << "Updated test case: Correctly used data object from compatible factory" << - // endl; - //cout << "ERROR - 47764 should not insert from wrong factory" << endl; - } - catch (SDOInvalidConversionException e) - { - if (!silent)cout << "Incorrect invalid conversion exception" << e << endl; - return 0; - } - - try - { - dol2.setDataObject(0,li12); - //cout << "Updated test case: Correctly used data object from compatible factory" << - // endl; - // cout << "ERROR - 47764 should not set in list from wrong factory" << endl; - } - catch (SDOInvalidConversionException e) - { - if (!silent)cout << "Incorrect invalid conversion exception" << e << endl; - return 0; - } - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Problem in b47663" << e << endl; - return 0; - } -} - - -int sdotest::bunique() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("test","Root"); - mdg->addType("test","Duplicate"); - mdg->addType("nottest","Duplicate"); - mdg->addType("test","Unique"); - mdg->addType("test","Object"); - - mdg->addPropertyToType("test","Root","duplicate", - "test","Duplicate", false, false, true); - - mdg->addPropertyToType("test","Root","duplicate2", - "nottest","Duplicate", false, false, true); - - mdg->addPropertyToType("test","Root","unique", - "test","Unique", false, false, true); - - mdg->addPropertyToType("test","Root","duplicatelist", - "test","Duplicate", true, false, true); - - mdg->addPropertyToType("test","Root","duplicatelist2", - "nottest","Duplicate", true, false, true); - - mdg->addPropertyToType("test","Root","uniquelist", - "test","Unique", true, false, true); - - mdg->addPropertyToType("test","Duplicate","id", - "commonj.sdo","Integer", false, false, false); - - mdg->addPropertyToType("nottest","Duplicate","id", - "commonj.sdo","Integer", false, false, false); - - mdg->addPropertyToType("test","Unique","id", - "commonj.sdo","Integer", false, false, false); - - mdg->addPropertyToType("test","Duplicate","ob", - "test","Object", false, false, true); - - mdg->addPropertyToType("nottest","Duplicate","ob", - "test","Object", false, false, true); - - mdg->addPropertyToType("test","Unique","ob", - "test","Object", false, false, true); - - const Type& troot = mdg->getType("test","Root"); - const Type& tdup1 = mdg->getType("test","Duplicate"); - const Type& tdup2 = mdg->getType("nottest","Duplicate"); - const Type& tuniq = mdg->getType("test","Unique"); - const Type& tob = mdg->getType("test","Object"); - - DataObjectPtr rooty = mdg->create(troot); - - DataObjectPtr dup1 = mdg->create(tdup1); - dup1->setInteger("id",1); - DataObjectPtr dup2 = mdg->create(tdup1); - dup2->setInteger("id",2); - DataObjectPtr dup3 = mdg->create(tdup2); - dup3->setInteger("id",3); - DataObjectPtr dup4 = mdg->create(tdup2); - dup4->setInteger("id",4); - DataObjectPtr uni1 = mdg->create(tuniq); - uni1->setInteger("id",5); - DataObjectPtr uni2 = mdg->create(tuniq); - uni2->setInteger("id",6); - - DataObjectPtr ob1 = mdg->create(tob); - dup1->setDataObject("ob",ob1); - DataObjectPtr ob2 = mdg->create(tob); - dup2->setDataObject("ob",ob2); - DataObjectPtr ob3 = mdg->create(tob); - uni1->setDataObject("ob",ob3); - - DataObjectList& dl1 = rooty->getList("duplicatelist"); - DataObjectList& dl2 = rooty->getList("duplicatelist2"); - DataObjectList& dl3 = rooty->getList("uniquelist"); - - rooty->setDataObject("duplicate",dup1); - dl1.append(dup2); - - rooty->setDataObject("duplicate2",dup3); - dl2.append(dup4); - - rooty->setDataObject("unique",uni1); - - dl3.append(uni2); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - TypeList tl = mdg->getTypes(); - - xsh->generateFile(tl,"bunique-out.xsd","test"); - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - xmh->save(rooty,"","rooty","bunique-out.xml"); - - if (!comparefiles("bunique-out.xsd","bunique-out.txt")) return 0; - if (!comparefiles("bunique-out.xml","bunique-outxml.txt")) return 0; - return 1; - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Problem in bunique" << e << endl; - return 0; - } -} - -int sdotest::buniqueread() -{ - try { - - int i,j,k; - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("bunique-out.xsd"); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "47293 XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - return 0; - } - } - - TypeList tl = mdg->getTypes(); - for ( k=0;k<tl.size();k++) - { - //cout << "Type:" << tl[k].getURI() << "#" << tl[k].getName() << endl; - } - - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->loadFile("bunique-out.xml", "rooty"); - - DataObjectPtr rooty = doc->getRootDataObject(); - - xsh->generateFile(tl,"buniqueread-out.xsd","test"); - - xmh->save(rooty,"","rooty","buniqueread-out.xml"); - - return comparefiles("buniqueread-out.xml","buniqueread-out.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Problem in buniqueread" << e << endl; - return 0; - } -} - - -int sdotest::testwsdl() -{ - try { - - int i,j; - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("wsdl.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "WSDL XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - - } - return 0; - } - xsh->defineFile("wsdl-soap.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "WSDL SOAP XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char* m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - - } - return 0; - } - xsh->defineFile("wsdl-http.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "WSDL HTTP XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char* m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - TypeList tl = mdg->getTypes(); - - for (i=0;i<tl.size();i++) - { - //cout << "TYPE:" << tl[i].getURI() << "#" << tl[i].getName() << endl; - } - - DataObjectPtr root = mdg->create("http://schemas.xmlsoap.org/wsdl/","tDefinitions"); - - - DataObjectPtr mess = mdg->create("http://schemas.xmlsoap.org/wsdl/","tMessage"); - mess->setCString("name","testRequest"); - - DataObjectPtr part = mdg->create("http://schemas.xmlsoap.org/wsdl/","tPart"); - part->setCString("name","name"); - part->setCString("type","http://www.w3.org/2001/XMLSchema-instance#string"); - - DataObjectPtr part2 = mdg->create("http://schemas.xmlsoap.org/wsdl/","tPart"); - part2->setCString("name","name"); - part2->setCString("type","http://I want/this/added/to/the/urls#string"); - - - DataObjectList& dol = root->getList("message"); - - dol.append(mess); - - DataObjectList& dol2 = mess->getList("part"); - - dol2.append(part); - dol2.append(part2); - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - xmh->save(root,"","definitions","testwsdl.xml"); - - return comparefiles("testwsdl.xml","testwsdl.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "testwsdl failed" << endl << e << endl; - return 0; - } - -} - - - -int sdotest::travel() -{ - try { - - int i,j; - - FILE *f = fopen("travel.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open travel.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("TravelBookingSchema.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "WSDL XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - TypeList tl = mdg->getTypes(); - - fprintf(f, "*******************************TYPES**********************\n"); - - for (i=0;i<tl.size();i++) - { - fprintf(f,"TYPE:%s#%s\n",tl[i].getURI(),tl[i].getName()); - } - fprintf(f, "*******************************END TYPES******************\n"); - - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->loadFile("TravelBookingUsingSchema.xml"); - - DataObjectPtr rooty = doc->getRootDataObject(); - - fprintf(f, "*******************************DATA**********************\n"); - printDataObject(f, rooty); - fprintf(f,"***************************END DATA**********************\n"); - - fclose(f); - return comparefiles("travel.dat","travel.txt"); - - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "travel failed" << endl << e << endl; - return 0; - } - -} - - -int sdotest::oddchars() -{ - try { - - int i,j; - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("OddChars.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "ODDCHARS XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->loadFile("OddChars.xml"); - - if ((i = xmh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "OddChars reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xmh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - DataObjectPtr rooty = doc->getRootDataObject(); - - FILE *f = fopen ("oddchars.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open oddchars.dat" << endl; - return 0; - } - printDataObject(f, rooty); - - fclose(f); - return comparefiles("oddchars.dat","oddchars.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "oddchars failed" << endl << e << endl; - return 0; - } - -} - -int sdotest::unsetlist() -{ - try { - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - mdg->addType("test","Root"); - mdg->addType("test","ListItem"); - - mdg->addPropertyToType("test","Root","list", - "test","ListItem", true, false, true); - - const Type& troot = mdg->getType("test","Root"); - const Type& tlist = mdg->getType("test","ListItem"); - - DataObjectPtr rooty = mdg->create(troot); - - DataObjectList& dl = rooty->getList("list"); - - - DataObjectPtr li1 = mdg->create(tlist); - DataObjectPtr li2 = mdg->create(tlist); - DataObjectPtr li3 = mdg->create(tlist); - - - dl.append(li1); - dl.append(li2); - dl.append(li3); - - rooty->unset("list[3]"); - - dl.append(li3); - - rooty->unset("list.2"); - - return 1; - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Problem in unsetlist" << e << endl; - return 0; - } -} - - -int sdotest::notns() -{ - try { - - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - - mdg->addType("","Root"); - mdg->addType("","ListItem"); - - mdg->addPropertyToType("","Root","list", - "","ListItem", true, false, true); - - const Type& troot = mdg->getType("","Root"); - const Type& tlist = mdg->getType("","ListItem"); - - DataObjectPtr rooty = mdg->create(troot); - - DataObjectList& dl = rooty->getList("list"); - - - DataObjectPtr li1 = mdg->create(tlist); - DataObjectPtr li2 = mdg->create(tlist); - DataObjectPtr li3 = mdg->create(tlist); - - - dl.append(li1); - dl.append(li2); - dl.append(li3); - - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - xmh->save(rooty,"","root","notns.xml"); - - return comparefiles("notns.xml","notns.txt"); - - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "notns" << endl << e << endl; - return 0; - } - -} - -int sdotest::badelement() -{ - try { - - int i,j; - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("BadElement.xsd"); - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "PROBLEM: BADELEMENT XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->loadFile("BadElement.xml"); - - if ((i = xmh->getErrorCount()) > 0) - { - FILE *f = fopen("badelement.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open badelement.dat" << endl; - return 0; - } - fprintf(f,"BADELEMENT correctly found errors:\n"); - for (j=0;j<i;j++) - { - const char *m = xmh->getErrorMessage(j); - if (m != 0) fprintf(f,"%s\n", m); - } - fclose (f); - return comparefiles("badelement.dat","badelement.txt"); - } - else - { - if (!silent)cout << "Expected errors, got none" << endl; - return 0; - } - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "badelement" << endl << e << endl; - return 0; - } - -} - - -int sdotest::testastyle(FILE *f, const char* style) -{ - - int i,j; - - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile(style); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "PROBLEM: TESTSTYLES XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - TypeList tl = mdg->getTypes(); - - fprintf(f,"*****STYLE %s\n",style); - - for (i=0;i<tl.size();i++) - { - fprintf(f,"Type: %s#%s\n", tl[i].getURI(),tl[i].getName()); - if (!strcmp(tl[i].getName(),"library")) - { - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - fprintf(f,"Property:%s\n",pl[j].getName()); - } - } - } - - fprintf(f, "*************\n"); - - // now try creating elements... - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->createDocument(); // with no name, URI - uses first in schema - - DataObjectPtr root = doc->getRootDataObject(); - - fprintf(f,"Root is:%s#%s\n",root->getType().getURI(), - root->getType().getName()); - - - XMLDocumentPtr doc1 = xmh->createDocument("library"); // with no URI - uses first in schema - - DataObjectPtr root1 = doc1->getRootDataObject(); - - fprintf(f,"Root is:%s#%s\n",root1->getType().getURI(), - root1->getType().getName()); - - XMLDocumentPtr doc2 = xmh->createDocument("library","libraryNS"); // with URI - - DataObjectPtr root2 = doc2->getRootDataObject(); - - fprintf(f, "Root is:%s#%s\n",root2->getType().getURI(), - root2->getType().getName()); - return 1; - - -} - -int sdotest::teststyles() -{ - try - { - - FILE *f = fopen("teststyles.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open teststyles.dat" << endl; - return 0; - } - testastyle(f,"Style1.xsd"); - testastyle(f,"Style2.xsd"); - testastyle(f,"Style3.xsd"); - //testastyle("Style4.xsd"); = groups not supported yet. - fclose(f); - return comparefiles("teststyles.dat","teststyles.txt"); - } - catch (SDORuntimeException e) - { - if (!silent)cout << "teststyles" << endl << e << endl; - return 0; - } - -} - - -int sdotest::testinc2(const char* inc, const char* name1, const char* name2) -{ - - - int i,j; - - try { - - FILE *f = fopen(name1,"w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open " << name1 << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile(inc); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "PROBLEM: TestInc2 XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - TypeList tl = mdg->getTypes(); - - //cout << "***** CALCULATOR ***************************************" << endl; - - for (i=0;i<tl.size();i++) - { - fprintf(f, "Type:%s#%s\n", tl[i].getURI(),tl[i].getName()); - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - fprintf(f,"Property:%s\n",pl[j].getName()); - } - } - - //cout << "*******************************END TYPES******************" << endl; - fclose(f); - return comparefiles((char*)name1, (char*)name2); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Exception in testinc2" << endl; - return 0; - } - -} - - - -int sdotest::b48300() -{ - return testany("bug48300.xsd",0,"bug48300.xml",0); -} - - -int sdotest::testOrder(const char* x1, const char* x2, const char* name1, - const char* name2) -{ - - int i,j; - - try { - - FILE *f = fopen(name1,"w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open " << name1 << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile(x1); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "PROBLEM: Order XSD1 reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - fclose(f); - return 0; - } - - xsh->defineFile(x2); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "PROBLEM: Order XSD2 reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - fclose(f); - return 0; - } - - TypeList tl = mdg->getTypes(); - - //cout << "***** TESTORDER ****************************************" << endl; - - for (i=0;i<tl.size();i++) - { - if (!strcmp(tl[i].getURI(),"commonj.sdo")) continue; - fprintf(f,"Type:%s#%s\n",tl[i].getURI(),tl[i].getName()); - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - fprintf(f,"Property:%s\n", pl[j].getName()); - } - } - - //cout << "*******************************END TYPES******************" << endl; - - fclose(f); - return comparefiles((char*)name1, (char*)name2); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Exception in TestOrder" << e << endl; - return 0; - } -} - -int sdotest::simple() -{ - - - int i,j; - - try { - - FILE *f = fopen("simple.dat","w+"); - if (f == 0) - { - if (!silent)cout << "Unable to open simple.dat" << endl; - return 0; - } - - DataFactoryPtr mdg = DataFactory::getDataFactory(); - - XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); - - xsh->defineFile("simple.xsd"); - - if ((i = xsh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "PROBLEM: Order simple.xsd reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - - TypeList tl = mdg->getTypes(); - - //cout << "***** SIMPLE ****************************************" << endl; - - for (i=0;i<tl.size();i++) - { - if (!strcmp(tl[i].getURI(),"commonj.sdo")) continue; - fprintf(f, "Type:%s#%s\n",tl[i].getURI(),tl[i].getName()); - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - fprintf(f,"Property:%s\n",pl[j].getName()); - fprintf(f, "Type of property:%s\n",pl[j].getType().getName()); - fprintf(f, "IsMany?%d\n",pl[j].isMany()); - } - } - - //cout << "*******************************SIMPLE******************" << endl; - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->loadFile("simple.xml"); - - if ((i = xmh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "Simple found errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xmh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - return 0; - } - - DataObjectPtr dob = doc->getRootDataObject(); - - printDataObject(f, dob); - - fclose(f); - return comparefiles("simple.dat","simple.txt"); - - } - catch (SDORuntimeException e) - { - if (!silent)cout << "Exception in TestAny" << e << endl; - return 0; - } -} - - - - - diff --git a/branches/cpp-M1/sdo/runtime/core/test/sdotest.h b/branches/cpp-M1/sdo/runtime/core/test/sdotest.h deleted file mode 100644 index aaf309e2de..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sdotest.h +++ /dev/null @@ -1,192 +0,0 @@ -/* - * - * 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: sdotest.h,v 1.21 2006/03/16 12:21:04 slattery Exp $ */ - -#include "commonj/sdo/SDO.h" -using namespace commonj::sdo; - - -// test - -class sdotest { - public: - - static bool silent; - static bool ramping; - - /* utilities */ - - static int printseq(FILE *f, SequencePtr sptr); - static void printDataStructure(FILE *f,DataFactory* dd); - static void printDataObject(FILE *f, DataObjectPtr dol); - static void printValue(FILE *f, DataObjectPtr dob, const Property& prop); - static void printList(FILE *f, DataObjectPtr dob, const Property& prop); - static void printOldValues(FILE *f, ChangeSummaryPtr cs, DataObjectPtr dob); - static void dumpchangesummary(FILE *f, ChangeSummaryPtr cs); - static int comparefiles(char* fn1, char*fn2); - static int dumpproperties(FILE *f, DataObjectPtr root); - static int printset(FILE *f, ChangeSummaryPtr cs); - - static int xsdtosdo(); - - static void changeSummaryHeader(ChangeSummaryPtr cs); - static void changeSummaryFooter(); - static void changeSummaryChange(int level, ChangeSummaryPtr cs, DataObjectPtr dob); - static void changeSummaryDeletedObject(int indent, const char* name, ChangeSummaryPtr cs, DataObjectPtr dob); - static void changeSummaryElements(int indent, ChangeSummaryPtr cs, DataObjectPtr dob); - static void changeSummarySetting(Setting& s); - static bool changeSummaryAttributes(ChangeSummaryPtr cs, DataObjectPtr dol); - static char* convert(const char* uri); - - /* work in progress - generation of structures */ - - static void generate(DataFactoryPtr fac); - - /* tests */ - static int xhtml1(); - static int definetest(); - static int stocktest(); - - static int scopetest(); - static DataObjectPtr scopetest2(); - - - static int pete(); - static int testgenerate(const char* xsd, const char* output); - static int emptycs(); - static int compatiblefactory(); - static int transferto(DataObjectPtr d, DataFactoryPtr f, bool expecterror); - static int openseq(); - static int testanytwo(const char* xsd, - const char* xsd2, const char* xml); - static int testany(const char* xsd, - const char* acceptedxsderror, - const char* xml, - const char* acceptedxmlerror); - static int testOrder(const char* x1, const char* x2, - const char* name1, const char* name2); - static int simple(); - static int testinc2(const char* inc, const char* name1, - const char* name2); - static int testastyle(FILE *f, const char* style); - static int teststyles(); - static int badelement(); - static int oddchars(); - static int notns(); - static int unsetlist(); - static int travel(); - static int testwsdl(); - static int bunique(); - static int buniqueread(); - static int propdefaulttest(); - static int showdefault(FILE *f, const Type& tm); - static int graham6(); - static int graham5(); - static int graham4(); - static int leak(); - static int twolists(); - static int detachtest(); - static int includetest(); - static int testLoad(); - static int clonetest(); - static int testUtil(); - static int testErrors(); - static int doctest(); - static int notfound(); - static int serializeChangeSummary(ChangeSummaryPtr cs); - static int cssave(); - static int csload(); - static int cssave2(); - static int csload2(); - static int bug1(); - static int bug2(); - static int setnull(); - static int testsubsload(); - static int testabstract(); - static int testsubs(); - static int testSCA(); - static int testOpen(); - static int saveOpen(); - static int loadOpen(); - static int testui(); - static int merle1(); - static int graham1(); - static int graham2(); - static int graham3(); - static int loadManyOpen(); - static int loadOpenNS(); - - - static int eqhelpertest(); - static int cohelpertest(); - static int datetest(); - static int matttest1(); - static int adddeletetest(); - static int carotest3(); - static int carotest2(); - static int carotest(); - static int setmany(); - static int noncontest(); - static int versiontest(); - static int defaulttest(); - static int defaulttest_strobj(); - static int querytest(); - static int getproptest(); - static int nulltest(); - static int usertest(); - static int rcptest(); - static int boolbug(); - static int scope1(); - static int scope2(); - static int scope3(); - static int conversiontest(); - static int changesummarytest(); - static int scenario1(); - static int scenario2(); - static int scenario3(); - static int scenario4(); - static int scenario5(); - static int seqtest(); - static int printDataObject(DataObjectPtr dol); - static int printValue(DataObjectPtr dob, const Property& prop); - static int printList(DataObjectPtr dob, const Property& prop); - static int printOldValues(ChangeSummaryPtr cs, DataObjectPtr dob); - static int testGetters(DataObjectPtr dor); - static int testGetter(DataObjectPtr dor, char* str); - static int maintest(); - - static int b48602(); - static int b48736(); - static int b48686(); - static int b48601(); - static int b48300(); - static int b47663(); - static int b47764(); - static int b47802(); - static int b47293(); - static int b47137(); - static int b47137b(); - static int b46633(); - static int b46734(); - static int b46693(); - static int b46634(); - static int b46613(); - static int b46617(); - static int b46617b(); - static int b45933(); -}; diff --git a/branches/cpp-M1/sdo/runtime/core/test/sdotest2.cpp b/branches/cpp-M1/sdo/runtime/core/test/sdotest2.cpp deleted file mode 100644 index 28892994cc..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sdotest2.cpp +++ /dev/null @@ -1,1445 +0,0 @@ -/* - * - * 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 <stdio.h> - -#pragma warning(disable:4786) - -#include <iostream> -#include <fstream> -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;j<i;j++) - { - const char *m = xsh->getErrorMessage(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;j<i;j++) - { - if (!strcmp(acceptedxsderror,xsh->getErrorMessage(j))) - { - fclose(f1); - delete name1; - delete name3; - return 1; - } - } - } - if (!silent) - { - cout << "PROBLEM: Testany XSD reported some errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xsh->getErrorMessage(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;i<tl.size();i++) - { - fprintf(f1,"Type:%s#%s\n",tl[i].getURI(),tl[i].getName()); - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - fprintf(f1,"Property:%s ",pl[j].getName()); - if (pl[j].isMany()) - fprintf(f1, "(many) "); - fprintf(f1, " of type %s\n",pl[j].getType().getName()); - } - } - - fprintf(f1, "*******************************END TYPES******************\n"); - - fclose(f1); - - - rc = comparefiles(name1,name3); - - delete name1; - delete name3; - - if (rc == 0)return rc; - - } - - if (xml == 0 || strlen(xml) == 0) return 1; - - char * name2 = new char[strlen(xml)+5]; - char * name4 = new char[strlen(xml)+5]; - strcpy(name2,xml); - while ((c = strchr(name2,'.')) != 0)*c = '_'; - strcpy(name4,name2); - - strcat(name2,".dat"); - strcat(name4,".txt"); - - FILE *f2 = fopen(name2,"w+"); - if (f2 == 0) - { - if (!silent)cout << "Unable to open " << name2 << endl; - delete name2; - delete name4; - return 0; - } - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->loadFile(xml); - - if ((i = xmh->getErrorCount()) > 0) - { - if (acceptedxmlerror != 0) - { - for (j=0;j<i;j++) - { - if (!strcmp(acceptedxmlerror,xmh->getErrorMessage(j))) - { - fclose(f2); - delete name2; - delete name4; - return 1; - } - } - } - if (!silent) - { - cout << "TestAny XML found errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xmh->getErrorMessage(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;i<tl.size();i++) - { - fprintf(f2,"Type:%s#%s\n",tl[i].getURI(),tl[i].getName()); - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - fprintf(f2, "Property:%s ",pl[j].getName()); - if (pl[j].isMany()) - fprintf(f2, "(many) "); - fprintf(f2, " of type %s\n",pl[j].getType().getName()); - } - } - - fprintf(f2, "*******************************END TYPES******************\n"); - - - DataObjectPtr dob = doc->getRootDataObject(); - 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;j<i;j++) - { - const char *m = xsh->getErrorMessage(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;j<i;j++) - { - const char *m = xsh->getErrorMessage(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;i<tl.size();i++) - { - fprintf(f1,"Type:%s#%s\n",tl[i].getURI(),tl[i].getName()); - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - fprintf(f1,"Property:%s ",pl[j].getName()); - if (pl[j].isMany()) - fprintf(f1, "(many) "); - fprintf(f1, " of type %s\n",pl[j].getType().getName()); - } - } - - fprintf(f1,"*******************************END TYPES******************\n"); - - fclose(f1); - - if (!comparefiles(name1,name3)) return 0; - - } - - - if (xml == 0 || strlen(xml) == 0) return 1; - - - FILE *f2 = fopen(name2,"w+"); - if (f2 == 0) - { - if (!silent)cout << "Unable to open " << name2 << endl; - return 0; - } - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->loadFile(xml); - - if ((i = xmh->getErrorCount()) > 0) - { - if (!silent) - { - cout << "TestAny XML found errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xmh->getErrorMessage(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;j<i;j++) - { - const char *m = xsh->getErrorMessage(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;j<i;j++) - { - const char *m = xsh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - } - - TypeList tl = mdg->getTypes(); - - printf("***** TYPES BEFORE RESOLVE **********************************\n"); - - for (i=0;i<tl.size();i++) - { - printf("Type:%s#%s\n",tl[i].getURI(),tl[i].getName()); - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - printf("Property:%s ",pl[j].getName()); - if (pl[j].isMany()) - printf("(many) "); - printf(" of type %s\n",pl[j].getType().getName()); - } - } - - printf("*******************************END TYPES******************\n"); - - - - XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); - - XMLDocumentPtr doc = xmh->loadFile("stock.xml"); - - if ((i = xmh->getErrorCount()) > 0) - { - cout << "TestAny XML found errors:" << endl; - for (j=0;j<i;j++) - { - const char *m = xmh->getErrorMessage(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;j<i;j++) - { - const char *m = xsh->getErrorMessage(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;j<i;j++) - { - const char *m = xmh->getErrorMessage(j); - if (m != 0) cout << m; - cout << endl; - } - return 0; - } - - TypeList tl = mdg->getTypes(); - - //printf("***** TYPES **********************************************\n"); - - for (i=0;i<tl.size();i++) - { - //printf("Type:%s#%s\n",tl[i].getURI(),tl[i].getName()); - PropertyList pl = tl[i].getProperties(); - for (int j=0;j<pl.size();j++) - { - //printf("Property:%s ",pl[j].getName()); - //if (pl[j].isMany()) - //printf( "(many) "); - //printf( " of type %s\n",pl[j].getType().getName()); - } - } - - //printf( "*******************************END TYPES******************\n"); - - - DataObjectPtr dob = doc->getRootDataObject(); - 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;j<i;j++) - { - const char *m = xsh->getErrorMessage(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;j<i;j++) - { - const char *m = xmh->getErrorMessage(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; - } -} diff --git a/branches/cpp-M1/sdo/runtime/core/test/sequence.txt b/branches/cpp-M1/sdo/runtime/core/test/sequence.txt deleted file mode 100644 index 1a616a3d16..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/sequence.txt +++ /dev/null @@ -1,45 +0,0 @@ -====================================== -====================================== -====================================== -I am Item 1 of string -====================================== -====================================== -I am Item 1 of string -I am the first free text -====================================== -====================================== -I am Item 1 of string -I am the first free text -I am Item 2 of string -====================================== -====================================== -I am Item 1 of string -I am free text which has been modified -I am Item 2 of string - -====================================== -====================================== -I am Item 1 of string -I am free text which has been modified -I am Item 2 of string -department1 -====================================== -====================================== -I am Item 1 of string -I am free text which has been modified -I am Item 2 of string -department1 -====================================== -====================================== -I am Item 1 of string -I am free text which has been modified -I am Item 2 of string -department1 -====================================== -====================================== -I am Item 1 of string -I am free text which has been modified -I am Item 2 of string -department1 -department2 -====================================== diff --git a/branches/cpp-M1/sdo/runtime/core/test/setmany.txt b/branches/cpp-M1/sdo/runtime/core/test/setmany.txt deleted file mode 100644 index 083ebf6b62..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/setmany.txt +++ /dev/null @@ -1,24 +0,0 @@ - School :King Norberts - Address1:The Place - Address2:1 The Avenue - Address3:Murchester - Address4:England - Class :Primary - Teacher :Mr Philbert Chloroform - Pupil1 :Witherspoon Jnr - Pupil2 :Snape - Pupil3 :Thannet - Class :Secondary - Teacher :Mr Brian Onasis - Pupil1 :Grimbling - Pupil2 :Snagget Minor - Pupil3 :Van Den Bograt -Expected path not found exception caught -Indexed as expected -Indexed as expected -Indexed as expected -Indexed as expected -Indexed as expected -Normal index out of range caught -Debatable behaviour - appended - Address4 :PostCode diff --git a/branches/cpp-M1/sdo/runtime/core/test/setnull.txt b/branches/cpp-M1/sdo/runtime/core/test/setnull.txt deleted file mode 100644 index f6fe0633e1..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/setnull.txt +++ /dev/null @@ -1,42 +0,0 @@ -===== Modified Object Starts -Xpath:#/ -The modified objects type is NullNS#NullMainType -===== Old Property Values Begin -Property asub of type DataObject object still exists - -Property bsub(UNSET) of type DataObject - object null or unset - -===== Old Property Values End -=====Modified Object Ends -===== Modified Object Starts -Xpath:#/subs.0 -The modified objects type is NullNS#NullSubType -===== Old Property Values Begin -Property name of type String:All Initially set - -Property number of type Integer:100 - -Property bool of type Boolean:0 - -===== Old Property Values End -=====Modified Object Ends -===== Modified Object Starts -Xpath:#/subs.1 -The modified objects type is NullNS#NullSubType -===== Old Property Values Begin -Property bool(UNSET) of type Boolean:0 - -===== Old Property Values End -=====Modified Object Ends -===== Modified Object Starts -Xpath:#/subs.2 -The modified objects type is NullNS#NullSubType -===== Old Property Values Begin -Property name(ISNULL) of type String: - -Property number(ISNULL) of type Integer:0 - -Property bool(ISNULL) of type Boolean:0 - -===== Old Property Values End -=====Modified Object Ends diff --git a/branches/cpp-M1/sdo/runtime/core/test/showdefault1.txt b/branches/cpp-M1/sdo/runtime/core/test/showdefault1.txt deleted file mode 100644 index f49e95dd58..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/showdefault1.txt +++ /dev/null @@ -1,15 +0,0 @@ -Boolean default is : 0 -Boolean default as a string is false -Byte default is : 0 -Byte default as a string is 0 -Character default is : 0 -Character default as a string is 0 -Short default is : 0 -Integer default is : 0 -Integer many default is : 0 -Long default is : 0 -Float default is : 0.000 -Double default is : 0.000 -Date default is : 0 -String default is zero length -Bytes default is zero length diff --git a/branches/cpp-M1/sdo/runtime/core/test/showdefault2.txt b/branches/cpp-M1/sdo/runtime/core/test/showdefault2.txt deleted file mode 100644 index a7bd1cba92..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/showdefault2.txt +++ /dev/null @@ -1,18 +0,0 @@ -Boolean default is : 1 -Boolean default as a string is true -Byte default is : 100 -Byte default as a string is 100 -Character default is : 101 -Character default as a string is 101 -Short default is : 300 -Integer default is : 400 -Integer many default is : 800 -Long default is : 500 -Float default is : 600.000 -Double default is : 700.000 -Date default is : 900 -String default length is 4 -HELP -String default as a string is HELP -Bytes default length is 4 -HELP diff --git a/branches/cpp-M1/sdo/runtime/core/test/simple.txt b/branches/cpp-M1/sdo/runtime/core/test/simple.txt deleted file mode 100644 index 0b143e19a9..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/simple.txt +++ /dev/null @@ -1,8 +0,0 @@ -Type:#RootType -Property:person -Type of property:String -IsMany?0 -===== DataObject contents ===== -person:string:someone - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/simple.xml b/branches/cpp-M1/sdo/runtime/core/test/simple.xml deleted file mode 100644 index 4a3c7acce8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/simple.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<person>someone</person> diff --git a/branches/cpp-M1/sdo/runtime/core/test/simple.xsd b/branches/cpp-M1/sdo/runtime/core/test/simple.xsd deleted file mode 100644 index 771ec558fb..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/simple.xsd +++ /dev/null @@ -1,19 +0,0 @@ - -<!-- - 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. - --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> -<xs:element name="person" type="xs:string"/> -</xs:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/stock.wsdl b/branches/cpp-M1/sdo/runtime/core/test/stock.wsdl deleted file mode 100644 index daa5342656..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/stock.wsdl +++ /dev/null @@ -1,387 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://ws.invesbot.com/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://ws.invesbot.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://ws.invesbot.com/">
- <s:element name="GetQuotes">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="symbols" type="s:string" />
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="GetQuotesResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="GetQuotesResult">
- <s:complexType mixed="true">
- <s:sequence>
- <s:any />
- </s:sequence>
- </s:complexType>
- </s:element>
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="GetQuote">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="symbol" type="s:string" />
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="GetQuoteResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="GetQuoteResult">
- <s:complexType mixed="true">
- <s:sequence>
- <s:any />
- </s:sequence>
- </s:complexType>
- </s:element>
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="GetMarketIndex">
- <s:complexType />
- </s:element>
- <s:element name="GetMarketIndexResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="GetMarketIndexResult">
- <s:complexType mixed="true">
- <s:sequence>
- <s:any />
- </s:sequence>
- </s:complexType>
- </s:element>
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="GetECNQuotes">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="symbols" type="s:string" />
- </s:sequence>
- </s:complexType>
- </s:element>
- <s:element name="GetECNQuotesResponse">
- <s:complexType>
- <s:sequence>
- <s:element minOccurs="0" maxOccurs="1" name="GetECNQuotesResult">
- <s:complexType mixed="true">
- <s:sequence>
- <s:any />
- </s:sequence>
- </s:complexType>
- </s:element>
- </s:sequence>
- </s:complexType>
- </s:element>
- </s:schema>
- </wsdl:types>
- <wsdl:message name="GetQuotesSoapIn">
- <wsdl:part name="parameters" element="tns:GetQuotes" />
- </wsdl:message>
- <wsdl:message name="GetQuotesSoapOut">
- <wsdl:part name="parameters" element="tns:GetQuotesResponse" />
- </wsdl:message>
- <wsdl:message name="GetQuoteSoapIn">
- <wsdl:part name="parameters" element="tns:GetQuote" />
- </wsdl:message>
- <wsdl:message name="GetQuoteSoapOut">
- <wsdl:part name="parameters" element="tns:GetQuoteResponse" />
- </wsdl:message>
- <wsdl:message name="GetMarketIndexSoapIn">
- <wsdl:part name="parameters" element="tns:GetMarketIndex" />
- </wsdl:message>
- <wsdl:message name="GetMarketIndexSoapOut">
- <wsdl:part name="parameters" element="tns:GetMarketIndexResponse" />
- </wsdl:message>
- <wsdl:message name="GetECNQuotesSoapIn">
- <wsdl:part name="parameters" element="tns:GetECNQuotes" />
- </wsdl:message>
- <wsdl:message name="GetECNQuotesSoapOut">
- <wsdl:part name="parameters" element="tns:GetECNQuotesResponse" />
- </wsdl:message>
- <wsdl:message name="GetQuotesHttpGetIn">
- <wsdl:part name="symbols" type="s:string" />
- </wsdl:message>
- <wsdl:message name="GetQuotesHttpGetOut">
- <wsdl:part name="Body" />
- </wsdl:message>
- <wsdl:message name="GetQuoteHttpGetIn">
- <wsdl:part name="symbol" type="s:string" />
- </wsdl:message>
- <wsdl:message name="GetQuoteHttpGetOut">
- <wsdl:part name="Body" />
- </wsdl:message>
- <wsdl:message name="GetMarketIndexHttpGetIn" />
- <wsdl:message name="GetMarketIndexHttpGetOut">
- <wsdl:part name="Body" />
- </wsdl:message>
- <wsdl:message name="GetECNQuotesHttpGetIn">
- <wsdl:part name="symbols" type="s:string" />
- </wsdl:message>
- <wsdl:message name="GetECNQuotesHttpGetOut">
- <wsdl:part name="Body" />
- </wsdl:message>
- <wsdl:message name="GetQuotesHttpPostIn">
- <wsdl:part name="symbols" type="s:string" />
- </wsdl:message>
- <wsdl:message name="GetQuotesHttpPostOut">
- <wsdl:part name="Body" />
- </wsdl:message>
- <wsdl:message name="GetQuoteHttpPostIn">
- <wsdl:part name="symbol" type="s:string" />
- </wsdl:message>
- <wsdl:message name="GetQuoteHttpPostOut">
- <wsdl:part name="Body" />
- </wsdl:message>
- <wsdl:message name="GetMarketIndexHttpPostIn" />
- <wsdl:message name="GetMarketIndexHttpPostOut">
- <wsdl:part name="Body" />
- </wsdl:message>
- <wsdl:message name="GetECNQuotesHttpPostIn">
- <wsdl:part name="symbols" type="s:string" />
- </wsdl:message>
- <wsdl:message name="GetECNQuotesHttpPostOut">
- <wsdl:part name="Body" />
- </wsdl:message>
- <wsdl:portType name="StockQuotesSoap">
- <wsdl:operation name="GetQuotes">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter symbols, seperated by space, Quotes delayed in 20 minutes.</wsdl:documentation>
- <wsdl:input message="tns:GetQuotesSoapIn" />
- <wsdl:output message="tns:GetQuotesSoapOut" />
- </wsdl:operation>
- <wsdl:operation name="GetQuote">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter one symbol, quote delayed in 20 minutes.</wsdl:documentation>
- <wsdl:input message="tns:GetQuoteSoapIn" />
- <wsdl:output message="tns:GetQuoteSoapOut" />
- </wsdl:operation>
- <wsdl:operation name="GetMarketIndex">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Dow, Nasdaq, S&P500 index.</wsdl:documentation>
- <wsdl:input message="tns:GetMarketIndexSoapIn" />
- <wsdl:output message="tns:GetMarketIndexSoapOut" />
- </wsdl:operation>
- <wsdl:operation name="GetECNQuotes">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter symbols, seperated by space, Real-Time ECN quote.</wsdl:documentation>
- <wsdl:input message="tns:GetECNQuotesSoapIn" />
- <wsdl:output message="tns:GetECNQuotesSoapOut" />
- </wsdl:operation>
- </wsdl:portType>
- <wsdl:portType name="StockQuotesHttpGet">
- <wsdl:operation name="GetQuotes">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter symbols, seperated by space, Quotes delayed in 20 minutes.</wsdl:documentation>
- <wsdl:input message="tns:GetQuotesHttpGetIn" />
- <wsdl:output message="tns:GetQuotesHttpGetOut" />
- </wsdl:operation>
- <wsdl:operation name="GetQuote">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter one symbol, quote delayed in 20 minutes.</wsdl:documentation>
- <wsdl:input message="tns:GetQuoteHttpGetIn" />
- <wsdl:output message="tns:GetQuoteHttpGetOut" />
- </wsdl:operation>
- <wsdl:operation name="GetMarketIndex">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Dow, Nasdaq, S&P500 index.</wsdl:documentation>
- <wsdl:input message="tns:GetMarketIndexHttpGetIn" />
- <wsdl:output message="tns:GetMarketIndexHttpGetOut" />
- </wsdl:operation>
- <wsdl:operation name="GetECNQuotes">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter symbols, seperated by space, Real-Time ECN quote.</wsdl:documentation>
- <wsdl:input message="tns:GetECNQuotesHttpGetIn" />
- <wsdl:output message="tns:GetECNQuotesHttpGetOut" />
- </wsdl:operation>
- </wsdl:portType>
- <wsdl:portType name="StockQuotesHttpPost">
- <wsdl:operation name="GetQuotes">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter symbols, seperated by space, Quotes delayed in 20 minutes.</wsdl:documentation>
- <wsdl:input message="tns:GetQuotesHttpPostIn" />
- <wsdl:output message="tns:GetQuotesHttpPostOut" />
- </wsdl:operation>
- <wsdl:operation name="GetQuote">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter one symbol, quote delayed in 20 minutes.</wsdl:documentation>
- <wsdl:input message="tns:GetQuoteHttpPostIn" />
- <wsdl:output message="tns:GetQuoteHttpPostOut" />
- </wsdl:operation>
- <wsdl:operation name="GetMarketIndex">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get Dow, Nasdaq, S&P500 index.</wsdl:documentation>
- <wsdl:input message="tns:GetMarketIndexHttpPostIn" />
- <wsdl:output message="tns:GetMarketIndexHttpPostOut" />
- </wsdl:operation>
- <wsdl:operation name="GetECNQuotes">
- <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Enter symbols, seperated by space, Real-Time ECN quote.</wsdl:documentation>
- <wsdl:input message="tns:GetECNQuotesHttpPostIn" />
- <wsdl:output message="tns:GetECNQuotesHttpPostOut" />
- </wsdl:operation>
- </wsdl:portType>
- <wsdl:binding name="StockQuotesSoap" type="tns:StockQuotesSoap">
- <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="GetQuotes">
- <soap:operation soapAction="http://ws.invesbot.com/GetQuotes" style="document" />
- <wsdl:input>
- <soap:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetQuote">
- <soap:operation soapAction="http://ws.invesbot.com/GetQuote" style="document" />
- <wsdl:input>
- <soap:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetMarketIndex">
- <soap:operation soapAction="http://ws.invesbot.com/GetMarketIndex" style="document" />
- <wsdl:input>
- <soap:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetECNQuotes">
- <soap:operation soapAction="http://ws.invesbot.com/GetECNQuotes" style="document" />
- <wsdl:input>
- <soap:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- </wsdl:binding>
- <wsdl:binding name="StockQuotesSoap12" type="tns:StockQuotesSoap">
- <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="GetQuotes">
- <soap12:operation soapAction="http://ws.invesbot.com/GetQuotes" style="document" />
- <wsdl:input>
- <soap12:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap12:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetQuote">
- <soap12:operation soapAction="http://ws.invesbot.com/GetQuote" style="document" />
- <wsdl:input>
- <soap12:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap12:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetMarketIndex">
- <soap12:operation soapAction="http://ws.invesbot.com/GetMarketIndex" style="document" />
- <wsdl:input>
- <soap12:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap12:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetECNQuotes">
- <soap12:operation soapAction="http://ws.invesbot.com/GetECNQuotes" style="document" />
- <wsdl:input>
- <soap12:body use="literal" />
- </wsdl:input>
- <wsdl:output>
- <soap12:body use="literal" />
- </wsdl:output>
- </wsdl:operation>
- </wsdl:binding>
- <wsdl:binding name="StockQuotesHttpGet" type="tns:StockQuotesHttpGet">
- <http:binding verb="GET" />
- <wsdl:operation name="GetQuotes">
- <http:operation location="/GetQuotes" />
- <wsdl:input>
- <http:urlEncoded />
- </wsdl:input>
- <wsdl:output>
- <mime:content part="Body" type="text/xml" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetQuote">
- <http:operation location="/GetQuote" />
- <wsdl:input>
- <http:urlEncoded />
- </wsdl:input>
- <wsdl:output>
- <mime:content part="Body" type="text/xml" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetMarketIndex">
- <http:operation location="/GetMarketIndex" />
- <wsdl:input>
- <http:urlEncoded />
- </wsdl:input>
- <wsdl:output>
- <mime:content part="Body" type="text/xml" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetECNQuotes">
- <http:operation location="/GetECNQuotes" />
- <wsdl:input>
- <http:urlEncoded />
- </wsdl:input>
- <wsdl:output>
- <mime:content part="Body" type="text/xml" />
- </wsdl:output>
- </wsdl:operation>
- </wsdl:binding>
- <wsdl:binding name="StockQuotesHttpPost" type="tns:StockQuotesHttpPost">
- <http:binding verb="POST" />
- <wsdl:operation name="GetQuotes">
- <http:operation location="/GetQuotes" />
- <wsdl:input>
- <mime:content type="application/x-www-form-urlencoded" />
- </wsdl:input>
- <wsdl:output>
- <mime:content part="Body" type="text/xml" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetQuote">
- <http:operation location="/GetQuote" />
- <wsdl:input>
- <mime:content type="application/x-www-form-urlencoded" />
- </wsdl:input>
- <wsdl:output>
- <mime:content part="Body" type="text/xml" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetMarketIndex">
- <http:operation location="/GetMarketIndex" />
- <wsdl:input>
- <mime:content type="application/x-www-form-urlencoded" />
- </wsdl:input>
- <wsdl:output>
- <mime:content part="Body" type="text/xml" />
- </wsdl:output>
- </wsdl:operation>
- <wsdl:operation name="GetECNQuotes">
- <http:operation location="/GetECNQuotes" />
- <wsdl:input>
- <mime:content type="application/x-www-form-urlencoded" />
- </wsdl:input>
- <wsdl:output>
- <mime:content part="Body" type="text/xml" />
- </wsdl:output>
- </wsdl:operation>
- </wsdl:binding>
- <wsdl:service name="StockQuotes">
- <wsdl:port name="StockQuotesSoap" binding="tns:StockQuotesSoap">
- <soap:address location="http://ws.invesbot.com/stockquotes.asmx" />
- </wsdl:port>
- <wsdl:port name="StockQuotesSoap12" binding="tns:StockQuotesSoap12">
- <soap12:address location="http://ws.invesbot.com/stockquotes.asmx" />
- </wsdl:port>
- <wsdl:port name="StockQuotesHttpGet" binding="tns:StockQuotesHttpGet">
- <http:address location="http://ws.invesbot.com/stockquotes.asmx" />
- </wsdl:port>
- <wsdl:port name="StockQuotesHttpPost" binding="tns:StockQuotesHttpPost">
- <http:address location="http://ws.invesbot.com/stockquotes.asmx" />
- </wsdl:port>
- </wsdl:service>
-</wsdl:definitions>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/stock.xml b/branches/cpp-M1/sdo/runtime/core/test/stock.xml deleted file mode 100644 index 28061c84b8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/stock.xml +++ /dev/null @@ -1,41 +0,0 @@ - -<!-- - 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. - --> -<GetQuotesResponse xmlns="http://ws.invesbot.com/"> -<GetQuotesResult> -<StockQuotes> -<StockQuote> -<Symbol>IBM</Symbol> -<Price><big><b>82.72</b></big></Price> -<Time>11:41AM ET</Time> -<Change><img width="10" height="14" border="0" src="http://us.i1.yimg.com/us.yimg.com/i/us/fi/03rd/down_r.gif" alt="Down">&nbsp;<b style="color:#cc0000;">0.17 (0.21%)</b></Change> -<PrevClose>82.89</PrevClose> -<Open>82.49</Open> -<Bid>N/A</Bid> -<Ask>N/A</Ask> -<YearTarget>95.94</YearTarget> -<DayRange>82.40 - 82.80</DayRange> -<YearRange>72.50 - 89.94</YearRange> -<Volume>1,568,200</Volume> -<AvgVol>5,301,380</AvgVol> -<MarketCap>128.25B</MarketCap> -<PE>16.15</PE> -<EPS>5.12</EPS> -<DivYield>1.20 (1.40%)</DivYield> -</StockQuote> -</StockQuotes> -</GetQuotesResult> -</GetQuotesResponse> diff --git a/branches/cpp-M1/sdo/runtime/core/test/stock_wsdl.txt b/branches/cpp-M1/sdo/runtime/core/test/stock_wsdl.txt deleted file mode 100644 index 47a11b4d3b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/stock_wsdl.txt +++ /dev/null @@ -1,47 +0,0 @@ -***** TYPES BEFORE RESOLVE ********************************** -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://ws.invesbot.com/#GetECNQuotes -Property:symbols of type String -Type:http://ws.invesbot.com/#GetECNQuotesResponse -Property:GetECNQuotesResult of type GetECNQuotesResult -Type:http://ws.invesbot.com/#GetECNQuotesResult -Type:http://ws.invesbot.com/#GetMarketIndex -Type:http://ws.invesbot.com/#GetMarketIndexResponse -Property:GetMarketIndexResult of type GetMarketIndexResult -Type:http://ws.invesbot.com/#GetMarketIndexResult -Type:http://ws.invesbot.com/#GetQuote -Property:symbol of type String -Type:http://ws.invesbot.com/#GetQuoteResponse -Property:GetQuoteResult of type GetQuoteResult -Type:http://ws.invesbot.com/#GetQuoteResult -Type:http://ws.invesbot.com/#GetQuotes -Property:symbols of type String -Type:http://ws.invesbot.com/#GetQuotesResponse -Property:GetQuotesResult of type GetQuotesResult -Type:http://ws.invesbot.com/#GetQuotesResult -Type:http://ws.invesbot.com/#RootType -Property:GetQuotes of type GetQuotes -Property:GetQuotesResponse of type GetQuotesResponse -Property:GetQuote of type GetQuote -Property:GetQuoteResponse of type GetQuoteResponse -Property:GetMarketIndex of type GetMarketIndex -Property:GetMarketIndexResponse of type GetMarketIndexResponse -Property:GetECNQuotes of type GetECNQuotes -Property:GetECNQuotesResponse of type GetECNQuotesResponse -*******************************END TYPES****************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/stock_xml.txt b/branches/cpp-M1/sdo/runtime/core/test/stock_xml.txt deleted file mode 100644 index 6aa493dfa3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/stock_xml.txt +++ /dev/null @@ -1,127 +0,0 @@ -***** TYPES AFTER RESOLVE********************************* -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#OpenDataObject -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://ws.invesbot.com/#GetECNQuotes -Property:symbols of type String -Type:http://ws.invesbot.com/#GetECNQuotesResponse -Property:GetECNQuotesResult of type GetECNQuotesResult -Type:http://ws.invesbot.com/#GetECNQuotesResult -Type:http://ws.invesbot.com/#GetMarketIndex -Type:http://ws.invesbot.com/#GetMarketIndexResponse -Property:GetMarketIndexResult of type GetMarketIndexResult -Type:http://ws.invesbot.com/#GetMarketIndexResult -Type:http://ws.invesbot.com/#GetQuote -Property:symbol of type String -Type:http://ws.invesbot.com/#GetQuoteResponse -Property:GetQuoteResult of type GetQuoteResult -Type:http://ws.invesbot.com/#GetQuoteResult -Type:http://ws.invesbot.com/#GetQuotes -Property:symbols of type String -Type:http://ws.invesbot.com/#GetQuotesResponse -Property:GetQuotesResult of type GetQuotesResult -Type:http://ws.invesbot.com/#GetQuotesResult -Type:http://ws.invesbot.com/#RootType -Property:GetQuotes of type GetQuotes -Property:GetQuotesResponse of type GetQuotesResponse -Property:GetQuote of type GetQuote -Property:GetQuoteResponse of type GetQuoteResponse -Property:GetMarketIndex of type GetMarketIndex -Property:GetMarketIndexResponse of type GetMarketIndexResponse -Property:GetECNQuotes of type GetECNQuotes -Property:GetECNQuotesResponse of type GetECNQuotesResponse -*******************************END TYPES****************** -===== DataObject contents ===== -GetQuotesResult:dataObject -===== Sequenced DataObject contents ===== -Setting of DO property StockQuotes[0]= -===== Sequenced DataObject contents ===== -Setting of DO property StockQuote[0]= -===== Sequenced DataObject contents ===== -Setting of DO property Symbol[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:IBM -===== End Sequenced DataObject contents = -Setting of DO property Price[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:<big><b>82.72</b></big> -===== End Sequenced DataObject contents = -Setting of DO property Time[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:11:41AM ET -===== End Sequenced DataObject contents = -Setting of DO property Change[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:<img width="10" height="14" border="0" src="http://us.i1.yimg.com/us.yimg.com/i/us/fi/03rd/down_r.gif" alt="Down"> <b style="color:#cc0000;">0.17 (0.21%)</b> -===== End Sequenced DataObject contents = -Setting of DO property PrevClose[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:82.89 -===== End Sequenced DataObject contents = -Setting of DO property Open[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:82.49 -===== End Sequenced DataObject contents = -Setting of DO property Bid[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:N/A -===== End Sequenced DataObject contents = -Setting of DO property Ask[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:N/A -===== End Sequenced DataObject contents = -Setting of DO property YearTarget[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:95.94 -===== End Sequenced DataObject contents = -Setting of DO property DayRange[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:82.40 - 82.80 -===== End Sequenced DataObject contents = -Setting of DO property YearRange[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:72.50 - 89.94 -===== End Sequenced DataObject contents = -Setting of DO property Volume[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:1,568,200 -===== End Sequenced DataObject contents = -Setting of DO property AvgVol[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:5,301,380 -===== End Sequenced DataObject contents = -Setting of DO property MarketCap[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:128.25B -===== End Sequenced DataObject contents = -Setting of DO property PE[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:16.15 -===== End Sequenced DataObject contents = -Setting of DO property EPS[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:5.12 -===== End Sequenced DataObject contents = -Setting of DO property DivYield[0]= -===== Sequenced DataObject contents ===== -TEXT ELEMENT:1.20 (1.40%) -===== End Sequenced DataObject contents = -===== End Sequenced DataObject contents = -===== End Sequenced DataObject contents = -===== End Sequenced DataObject contents = - -===== End DataObject ===== diff --git a/branches/cpp-M1/sdo/runtime/core/test/t2/include3.xsd b/branches/cpp-M1/sdo/runtime/core/test/t2/include3.xsd deleted file mode 100644 index b6ec93f0ba..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/t2/include3.xsd +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/t2/includeother.xsd b/branches/cpp-M1/sdo/runtime/core/test/t2/includeother.xsd deleted file mode 100644 index fd0b9a61f4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/t2/includeother.xsd +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:include schemaLocation = "includeother1.xsd"/> - <xsd:include schemaLocation = "./includeother2.xsd"/> - <xsd:include schemaLocation = "../Debug/includeother3.xsd"/> - - - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/t2/includeother1.xsd b/branches/cpp-M1/sdo/runtime/core/test/t2/includeother1.xsd deleted file mode 100644 index 9cbc5d9d27..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/t2/includeother1.xsd +++ /dev/null @@ -1,34 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/t2/includeother2.xsd b/branches/cpp-M1/sdo/runtime/core/test/t2/includeother2.xsd deleted file mode 100644 index 329fd17761..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/t2/includeother2.xsd +++ /dev/null @@ -1,33 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/test/include3.xsd b/branches/cpp-M1/sdo/runtime/core/test/test/include3.xsd deleted file mode 100644 index b6ec93f0ba..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/test/include3.xsd +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/test/includeother.xsd b/branches/cpp-M1/sdo/runtime/core/test/test/includeother.xsd deleted file mode 100644 index 5ecbdab1ca..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/test/includeother.xsd +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:include schemaLocation = "includeother1.xsd"/> - <xsd:include schemaLocation = "./includeother2.xsd"/> - <xsd:include schemaLocation = "../test2/includeother3.xsd"/> - - - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/test/includeother1.xsd b/branches/cpp-M1/sdo/runtime/core/test/test/includeother1.xsd deleted file mode 100644 index 9cbc5d9d27..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/test/includeother1.xsd +++ /dev/null @@ -1,34 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:element name="company" type="company:CompanyType"/> - <xsd:complexType name="CompanyType"> - <xsd:sequence> - <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> - <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/test/includeother2.xsd b/branches/cpp-M1/sdo/runtime/core/test/test/includeother2.xsd deleted file mode 100644 index 329fd17761..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/test/includeother2.xsd +++ /dev/null @@ -1,33 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:complexType name="DepartmentType"> - <xsd:sequence> - <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="location" type="xsd:string"/> - <xsd:attribute name="number" type="xsd:int"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/test2/includeother3.xsd b/branches/cpp-M1/sdo/runtime/core/test/test2/includeother3.xsd deleted file mode 100644 index b6ec93f0ba..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/test2/includeother3.xsd +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- - 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. - --> - <xsd:schema - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:sdo="commonj.sdo" - xmlns:sdoxml="commonj.sdo/xml" - xmlns:company="companyNS" - targetNamespace="companyNS"> - - <xsd:complexType name="EmployeeType"> - <xsd:attribute name="name" type="xsd:string"/> - <xsd:attribute name="SN" type="xsd:ID"/> - <xsd:attribute name="manager" type="xsd:boolean"/> - </xsd:complexType> - </xsd:schema> - diff --git a/branches/cpp-M1/sdo/runtime/core/test/testabstract.txt b/branches/cpp-M1/sdo/runtime/core/test/testabstract.txt deleted file mode 100644 index 80c1d03afe..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testabstract.txt +++ /dev/null @@ -1,5 +0,0 @@ -Normal unsupportedoperation for creation of abstract type -Publication is of type BookType -Publication is of type MagazineType -Book is of type BookType -Magazine is of type MagazineType diff --git a/branches/cpp-M1/sdo/runtime/core/test/testerrors.txt b/branches/cpp-M1/sdo/runtime/core/test/testerrors.txt deleted file mode 100644 index 6cfce57b31..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testerrors.txt +++ /dev/null @@ -1,7 +0,0 @@ -XSD reported some errors: -Opening and ending tag mismatch: complexType line 40 and schema - -Premature end of data in tag schema line 18 - -XML reported some errors: -Parser found unknown element company diff --git a/branches/cpp-M1/sdo/runtime/core/test/testinc2.txt b/branches/cpp-M1/sdo/runtime/core/test/testinc2.txt deleted file mode 100644 index 837559562e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testinc2.txt +++ /dev/null @@ -1,21 +0,0 @@ -Type:commonj.sdo#BigDecimal -Type:commonj.sdo#BigInteger -Type:commonj.sdo#Boolean -Type:commonj.sdo#Byte -Type:commonj.sdo#Bytes -Type:commonj.sdo#ChangeSummary -Type:commonj.sdo#Character -Type:commonj.sdo#DataObject -Type:commonj.sdo#Date -Type:commonj.sdo#Double -Type:commonj.sdo#Float -Type:commonj.sdo#Integer -Type:commonj.sdo#Long -Type:commonj.sdo#Short -Type:commonj.sdo#String -Type:commonj.sdo#URI -Type:http://example.org/Calculator#RootType -Type:http://example.org/CalculatorTypes#AddArguments -Property:a -Property:b -Type:http://example.org/CalculatorTypes#RootType diff --git a/branches/cpp-M1/sdo/runtime/core/test/testopen.txt b/branches/cpp-M1/sdo/runtime/core/test/testopen.txt deleted file mode 100644 index 7d7b816e6d..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testopen.txt +++ /dev/null @@ -1,24 +0,0 @@ -Normal exception for setting null on undefined prop -Open Type string value: Value Of Open String -Open Type boolean value: 1 -EMP1 type property: name ( many? 0) of type String -EMP1 type property: SN ( many? 0) of type String -EMP1 type property: manager ( many? 0) of type Boolean -EMP1 inst property: name (many? 0) of type String -EMP1 inst property: SN (many? 0) of type String -EMP1 inst property: manager (many? 0) of type Boolean -EMP1 inst property: openstring (many? 0) of type Bytes -EMP1 inst property: openboolean (many? 0) of type Boolean -EMP1 inst property: opentypelist (many? 1) of type Short -EMP1 inst property: name (many? 0) of type String -EMP1 inst property: SN (many? 0) of type String -EMP1 inst property: manager (many? 0) of type Boolean -EMP1 inst property: openboolean (many? 0) of type Boolean -EMP1 inst property: opentypelist (many? 1) of type Short -EMP1 inst property: name (many? 0) of type String -EMP1 inst property: SN (many? 0) of type String -EMP1 inst property: manager (many? 0) of type Boolean -EMP1 inst property: opentypelist (many? 1) of type Short -EMP1 inst property: name (many? 0) of type String -EMP1 inst property: SN (many? 0) of type String -EMP1 inst property: manager (many? 0) of type Boolean diff --git a/branches/cpp-M1/sdo/runtime/core/test/testopen3.xml b/branches/cpp-M1/sdo/runtime/core/test/testopen3.xml deleted file mode 100644 index 57dfb96ec4..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testopen3.xml +++ /dev/null @@ -1,17 +0,0 @@ - -<!-- - 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. - --> -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sdo="commonj.sdo" xmlns:sdoxml="commonj.sdo/xml" xmlns:tns="companyNS" targetNamespace="companyNS"><xsd:element name="companyType" type="tns:CompanyType"/><xsd:complexType name="CompanyType" sdo:aliasName="TheFirm TheBigFirm"><xsd:sequence><xsd:element name="departments" type="tns:DepartmentType" minOccurs="0" maxOccurs="unbounded" sdo:aliasName="TheDepartments MYDepartments"/></xsd:sequence><xsd:element name="changeSummary" type="sdo:ChangeSummaryType"/><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="employeeOfTheMonth" sdoxml:propertyType="tns:EmployeeType" type="xsd:anyURI"/></xsd:complexType><xsd:element name="departmentType" type="tns:DepartmentType"/><xsd:complexType name="DepartmentType"><xsd:sequence><xsd:element name="employees" type="tns:EmployeeType" minOccurs="0" maxOccurs="unbounded"/></xsd:sequence><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="location" type="xsd:String"/><xsd:attribute name="number" type="xsd:String"/></xsd:complexType><xsd:element name="employeeType" type="tns:EmployeeType"/><xsd:complexType name="EmployeeType"><xsd:attribute name="name" type="xsd:String"/><xsd:attribute name="SN" type="xsd:String"/><xsd:attribute name="manager" type="xsd:boolean"/><xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/><xsd:anyAttribute namespace="##any" processContents="lax"/></xsd:complexType><xsd:element name="openType" type="tns:OpenType"/><xsd:complexType name="OpenType"><xsd:attribute name="name" type="xsd:String"/></xsd:complexType><xsd:attribute name="openboolean" type="xsd:boolean"/><xsd:element name="opendataobject" type="tns:OpenType" minOccurs="0"/><xsd:element name="opendataobjectlist" type="tns:OpenType" minOccurs="0" maxOccurs="unbounded"/><xsd:element name="openintlist" type="xsd:short" minOccurs="0" maxOccurs="unbounded"/><xsd:attribute name="openstring" type="xsd:hexBinary"/></xsd:schema>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/testorder.txt b/branches/cpp-M1/sdo/runtime/core/test/testorder.txt deleted file mode 100644 index 4f46cbfecf..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testorder.txt +++ /dev/null @@ -1,19 +0,0 @@ -Type:#Address -Property:name -Property:street -Property:city -Type:#RootType -Property:employee -Type:#UKAddress -Property:value -Property:postcode -Type:#USAddress -Property:value -Property:zip -Type:#fullpersoninfo -Property:address -Property:city -Property:country -Type:#personinfo -Property:firstname -Property:lastname diff --git a/branches/cpp-M1/sdo/runtime/core/test/teststyles.txt b/branches/cpp-M1/sdo/runtime/core/test/teststyles.txt deleted file mode 100644 index 52de3ffc6a..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/teststyles.txt +++ /dev/null @@ -1,93 +0,0 @@ -*****STYLE Style1.xsd -Type: commonj.sdo#BigDecimal -Type: commonj.sdo#BigInteger -Type: commonj.sdo#Boolean -Type: commonj.sdo#Byte -Type: commonj.sdo#Bytes -Type: commonj.sdo#ChangeSummary -Type: commonj.sdo#Character -Type: commonj.sdo#DataObject -Type: commonj.sdo#Date -Type: commonj.sdo#Double -Type: commonj.sdo#Float -Type: commonj.sdo#Integer -Type: commonj.sdo#Long -Type: commonj.sdo#OpenDataObject -Type: commonj.sdo#Short -Type: commonj.sdo#String -Type: commonj.sdo#URI -Type: libraryNS#RootType -Type: libraryNS#author -Type: libraryNS#available -Type: libraryNS#book -Type: libraryNS#character -Type: libraryNS#isbn -Type: libraryNS#library -Property:book -Type: libraryNS#title -************* -Root is:libraryNS#character -Root is:libraryNS#library -Root is:libraryNS#library -*****STYLE Style2.xsd -Type: commonj.sdo#BigDecimal -Type: commonj.sdo#BigInteger -Type: commonj.sdo#Boolean -Type: commonj.sdo#Byte -Type: commonj.sdo#Bytes -Type: commonj.sdo#ChangeSummary -Type: commonj.sdo#Character -Type: commonj.sdo#DataObject -Type: commonj.sdo#Date -Type: commonj.sdo#Double -Type: commonj.sdo#Float -Type: commonj.sdo#Integer -Type: commonj.sdo#Long -Type: commonj.sdo#OpenDataObject -Type: commonj.sdo#Short -Type: commonj.sdo#String -Type: commonj.sdo#URI -Type: libraryNS#RootType -Type: libraryNS#author -Type: libraryNS#available -Type: libraryNS#book -Type: libraryNS#character -Type: libraryNS#isbn -Type: libraryNS#library -Property:book -Type: libraryNS#title -************* -Root is:libraryNS#character -Root is:libraryNS#library -Root is:libraryNS#library -*****STYLE Style3.xsd -Type: commonj.sdo#BigDecimal -Type: commonj.sdo#BigInteger -Type: commonj.sdo#Boolean -Type: commonj.sdo#Byte -Type: commonj.sdo#Bytes -Type: commonj.sdo#ChangeSummary -Type: commonj.sdo#Character -Type: commonj.sdo#DataObject -Type: commonj.sdo#Date -Type: commonj.sdo#Double -Type: commonj.sdo#Float -Type: commonj.sdo#Integer -Type: commonj.sdo#Long -Type: commonj.sdo#OpenDataObject -Type: commonj.sdo#Short -Type: commonj.sdo#String -Type: commonj.sdo#URI -Type: libraryNS#RootType -Type: libraryNS#author -Type: libraryNS#available -Type: libraryNS#bookType -Type: libraryNS#character -Type: libraryNS#isbn -Type: libraryNS#library -Property:book -Type: libraryNS#title -************* -Root is:libraryNS#character -Root is:libraryNS#library -Root is:libraryNS#library diff --git a/branches/cpp-M1/sdo/runtime/core/test/testsubsload.txt b/branches/cpp-M1/sdo/runtime/core/test/testsubsload.txt deleted file mode 100644 index 43c16114c3..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testsubsload.txt +++ /dev/null @@ -1,7 +0,0 @@ -TEST: TestSubsLoad ========================================== -Publication is of type PublicationType -Publication is of type BookType -Publication is of type MagazineType -Book is of type BookType -Magazine is of type MagazineType -END TEST: TestSubsLoad ====================================== diff --git a/branches/cpp-M1/sdo/runtime/core/test/testutils.txt b/branches/cpp-M1/sdo/runtime/core/test/testutils.txt deleted file mode 100644 index dd86813b90..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testutils.txt +++ /dev/null @@ -1,100 +0,0 @@ ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO -DataObject type: companyNS#CompanyType - Property: name - Property Type: commonj.sdo#String - Property Value: ACME - Property: employeeOfTheMonth - Property Type: companyNS#EmployeeType - Property Value: not set - Property: departments - Property Type: companyNS#DepartmentType - Value 0 ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO - DataObject type: companyNS#DepartmentType - Property: name - Property Type: commonj.sdo#String - Property Value: Advanced Technologies - Property: location - Property Type: commonj.sdo#String - Property Value: NY - Property: number - Property Type: commonj.sdo#String - Property Value: 123 - Property: employees - Property Type: companyNS#EmployeeType - Value 0 ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO - DataObject type: companyNS#EmployeeType - Property: name - Property Type: commonj.sdo#String - Property Value: Albert - Property: SN - Property Type: commonj.sdo#String - Property Value: E0001 - Property: manager - Property Type: commonj.sdo#Boolean - Property Value: not set - Property: openstring - Property Type: commonj.sdo#Bytes - Property Value: Value Of Open String - Property: openboolean - Property Type: commonj.sdo#Boolean - Property Value: true - Property: openintlist - Property Type: commonj.sdo#Short - Value 0 ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO - DataObject type: commonj.sdo#Short -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do - - Property: opendataobjectlist - Property Type: companyNS#OpenType - Value 0 ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO - DataObject type: companyNS#OpenType - Property: name - Property Type: commonj.sdo#String - Property Value: MyOpenName -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do - - Property: opendataobject - Property Type: companyNS#OpenType ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO - DataObject type: companyNS#OpenType - Property: name - Property Type: commonj.sdo#String - Property Value: MyOpenName -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do - - Value 1 ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO - DataObject type: companyNS#EmployeeType - Property: name - Property Type: commonj.sdo#String - Property Value: Boris - Property: SN - Property Type: commonj.sdo#String - Property Value: E0002 - Property: manager - Property Type: commonj.sdo#Boolean - Property Value: true -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do - - Value 2 ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> start of DO - DataObject type: companyNS#EmployeeType - Property: name - Property Type: commonj.sdo#String - Property Value: Carl - Property: SN - Property Type: commonj.sdo#String - Property Value: E0003 - Property: manager - Property Type: commonj.sdo#Boolean - Property Value: not set -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do - -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do - -<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end of do diff --git a/branches/cpp-M1/sdo/runtime/core/test/testwsdl.txt b/branches/cpp-M1/sdo/runtime/core/test/testwsdl.txt deleted file mode 100644 index 025b797d96..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testwsdl.txt +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xsi:type="tDefinitions" xmlns:tns2="http://I want/this/added/to/the/urls" xmlns:tns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><message name="testRequest"><part name="name" type="xsi:string"/><part name="name" type="tns2:string"/></message></definitions> diff --git a/branches/cpp-M1/sdo/runtime/core/test/testwsdl.xml b/branches/cpp-M1/sdo/runtime/core/test/testwsdl.xml deleted file mode 100644 index 5fe93371ca..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/testwsdl.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - --> - -<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xsi:type="tDefinitions" xmlns:tns2="http://I want/this/added/to/the/urls" xmlns:tns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><message name="testRequest"><part name="name" type="xsi:string"/><part name="name" type="tns2:string"/></message></definitions> diff --git a/branches/cpp-M1/sdo/runtime/core/test/travel.txt b/branches/cpp-M1/sdo/runtime/core/test/travel.txt deleted file mode 100644 index 5311a919f8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/travel.txt +++ /dev/null @@ -1,146 +0,0 @@ -*******************************TYPES********************** -TYPE:#Client -TYPE:#Excursion -TYPE:#Flight -TYPE:#Holiday -TYPE:#Hotel -TYPE:#Party -TYPE:#Person -TYPE:#Room -TYPE:#RootType -TYPE:commonj.sdo#BigDecimal -TYPE:commonj.sdo#BigInteger -TYPE:commonj.sdo#Boolean -TYPE:commonj.sdo#Byte -TYPE:commonj.sdo#Bytes -TYPE:commonj.sdo#ChangeSummary -TYPE:commonj.sdo#Character -TYPE:commonj.sdo#DataObject -TYPE:commonj.sdo#Date -TYPE:commonj.sdo#Double -TYPE:commonj.sdo#Float -TYPE:commonj.sdo#Integer -TYPE:commonj.sdo#Long -TYPE:commonj.sdo#OpenDataObject -TYPE:commonj.sdo#Short -TYPE:commonj.sdo#String -TYPE:commonj.sdo#URI -*******************************END TYPES****************** -*******************************DATA********************** -===== DataObject contents ===== -Flight: list dataObject[0]= -===== DataObject contents ===== -Departure:string:LHR - -Arrival:string:SNG - -flightNo:string:BA243 - -===== End DataObject ===== - -dataObject[1]= -===== DataObject contents ===== -Departure:string:SNG - -Arrival:string:LHR - -flightNo:string:SG561 - -===== End DataObject ===== - -Hotel: list dataObject[0]= -===== DataObject contents ===== -Name:string:Excelsior - -Phone:string:222-3333 - -Room:dataObject -===== DataObject contents ===== -value:string:303 - -booked:boolean:1 - -===== End DataObject ===== - -cardsAccepted:boolean:1 - -===== End DataObject ===== - -dataObject[1]= -===== DataObject contents ===== -Name:string:Seedy Lodge - -Phone:string:888-9999 - -Room:dataObject -===== DataObject contents ===== -value:string:14 - -booked:boolean:1 - -===== End DataObject ===== - -cardsAccepted:boolean:0 - -===== End DataObject ===== - -dataObject[2]= -===== DataObject contents ===== -Name:string:Hilton - -Phone:string:444-5555 - -Room:dataObject -===== DataObject contents ===== -value:string:456 - -booked:boolean:0 - -===== End DataObject ===== - -cardsAccepted:boolean:1 - -===== End DataObject ===== - -Excursion:dataObject -===== DataObject contents ===== -Title:string:Bird Baths of Singapore - -Cost:string:50 - -===== End DataObject ===== - -Client:dataObject -===== DataObject contents ===== -Name:string:Steve - -Address:string:134 Shirley Road - -CreditCard:string:1234-8908-6543-900 - -===== End DataObject ===== - -Party:dataObject -===== DataObject contents ===== -Person: list dataObject[0]= -===== DataObject contents ===== -Name:string:John - -===== End DataObject ===== - -dataObject[1]= -===== DataObject contents ===== -Name:string:Jane - -===== End DataObject ===== - -dataObject[2]= -===== DataObject contents ===== -Name:string:Bill - -===== End DataObject ===== - -===== End DataObject ===== - -===== End DataObject ===== -***************************END DATA********************** diff --git a/branches/cpp-M1/sdo/runtime/core/test/userdata.txt b/branches/cpp-M1/sdo/runtime/core/test/userdata.txt deleted file mode 100644 index e24caba194..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/userdata.txt +++ /dev/null @@ -1,10 +0,0 @@ -Expected 0xF1F1F1F1 F1F1F1F1 -Expected 0xF1F1F1F1 F1F1F1F1 -Expected 0x20 00000020 -Expected 0x40020 00040020 -Expected 0 00000000 -Expected 0 00000000 -Expected 120 00000120 -Expected 0 00000000 -Expected 640 00000640 -Expected 0x740 00000740 diff --git a/branches/cpp-M1/sdo/runtime/core/test/utils.cpp b/branches/cpp-M1/sdo/runtime/core/test/utils.cpp deleted file mode 100644 index 4b13998c6b..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/utils.cpp +++ /dev/null @@ -1,551 +0,0 @@ -/* - * - * 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: utils.cpp,v 1.1 2006/03/16 10:54:16 slattery Exp $ */ - -#include <stdio.h> - -#pragma warning(disable:4786) - -#include <iostream> -using namespace std; - -#include "sdotest.h" - -bool sdotest::silent = true; -bool sdotest::ramping = false; - -void sdotest::printOldValues(FILE *f, ChangeSummaryPtr cs, DataObjectPtr dol) -{ - fprintf(f,"===== Old Property Values Begin\n"); - SettingList& sl = cs->getOldValues(dol); - if (sl.size() == 0) - { - fprintf(f,"No Settings found\n"); - } - else - { - for (int j=0;j< sl.size(); j++) - { - fprintf(f,"Property %s",sl[j].getProperty().getName()); - // this could be a many-valued property, and could be one which is - // a data object or a data type... - if (sl[j].getProperty().isMany()) - { - fprintf(f,"[%d]",sl[j].getIndex()); - } - if (!sl[j].isSet()) - { - fprintf(f,"(UNSET)"); - } - if (sl[j].isNull()) - { - fprintf(f,"(ISNULL)"); - } - - fprintf(f," of type "); - switch (sl[j].getProperty().getTypeEnum()) - { - case Type::BooleanType: - fprintf(f,"Boolean:%d\n",sl[j].getBooleanValue()); - break; - case Type::ByteType: - fprintf(f,"Byte:%d\n",sl[j].getByteValue()); - break; - case Type::CharacterType: - fprintf(f,"Character:%d\n",sl[j].getCharacterValue()); - break; - case Type::IntegerType: - fprintf(f,"Integer:%d\n",sl[j].getIntegerValue()); - break; - case Type::ShortType: - fprintf(f,"Short:%d\n",sl[j].getShortValue()); - break; - case Type::DoubleType: - fprintf(f,"Double:%.3f\n",(float)sl[j].getDoubleValue()); - break; - case Type::FloatType: - fprintf(f,"Float:%.3f\n",sl[j].getFloatValue()); - break; - case Type::LongType: - fprintf(f,"Long:%ld\n",sl[j].getIntegerValue()); - break; - case Type::DateType: - fprintf(f,"Date:%d\n",sl[j].getDateValue().getTime()); - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - fprintf(f,"String:%s\n",sl[j].getCStringValue()); - break; - case Type::BytesType: - fprintf(f,"Bytes:%s\n",sl[j].getCStringValue()); - break; - case Type::OtherTypes: - case Type::DataObjectType: - case Type::ChangeSummaryType: - { - fprintf(f,"DataObject "); - DataObjectPtr dob = sl[j].getDataObjectValue(); - if (!dob) - { - fprintf(f," - object null or unset\n"); - } - else - { - DataObjectPtr mydo = sl[j].getDataObjectValue(); - if (cs->isDeleted(mydo)) - { - fprintf(f," - object deleted \n"); - printOldValues(f, cs,mydo); - } - else - { - fprintf(f," object still exists \n"); - } - } - } - break; - default: - { - fprintf(f,"Unknown object type\n"); - } - break; - } - fprintf(f,"\n"); - } - } - fprintf(f,"===== Old Property Values End \n"); - return; -} - - -void sdotest::printDataStructure(FILE *f , DataFactory* dd) -{ - TypeList tt = dd->getTypes(); - fprintf(f,"Printing Types\n"); - for (int i = 0; i < tt.size(); ++i) - { - fprintf(f,"Type %s\n",tt[i].getName()); - PropertyList pl = tt[i].getProperties(); - for (int j = 0; j < pl.size() ; j++) - { - fprintf(f,"Has Property %s of type %s\n", - pl[j].getName(),pl[j].getType().getName()); - } - } -} - - -void sdotest::printValue(FILE *f, DataObjectPtr dp, const Property& p) -{ - switch (p.getTypeEnum()) - { - case Type::BooleanType: - fprintf(f,"boolean:%d\n",dp->getBoolean(p)); - break; - case Type::ByteType: - fprintf(f,"Byte:%d\n",dp->getByte(p)); - break; - case Type::CharacterType: - fprintf(f,"character:%d\n",dp->getCharacter(p)); - break; - case Type::IntegerType: - fprintf(f,"integer:%d\n",dp->getInteger(p)); - break; - case Type::ShortType: - fprintf(f,"short:%d\n",dp->getShort(p)); - break; - case Type::DoubleType: - fprintf(f,"double:%.3f\n",(float)dp->getDouble(p)); - break; - case Type::FloatType: - fprintf(f,"float:%.3f\n", dp->getFloat(p)); - break; - case Type::LongType: - fprintf(f,"long:%ld\n",dp->getInteger(p)); - break; - case Type::DateType: - fprintf(f,"date:%d\n",dp->getDate(p).getTime()); - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - fprintf(f,"string:%s\n", dp->getCString(p)); - break; - case Type::BytesType: - fprintf(f,"bytes:%s\n",dp->getCString(p)); - break; - case Type::OpenDataObjectType: - case Type::DataObjectType: - { - fprintf(f,"dataObject\n" ); - DataObjectPtr dob = dp->getDataObject(p); - if (!dob) - { - fprintf(f," - null or unset\n"); - } - else - { - printDataObject(f, dob); - } - } - break; - case Type::OtherTypes: - case Type::ChangeSummaryType: - default: - { - fprintf(f,"Unknown object type"); - } - break; - } - fprintf(f,"\n"); -} - -void sdotest::printList(FILE *f, DataObjectPtr dp, const Property& p) -{ - DataObjectList& dobl = dp->getList(p); - fprintf(f," list "); - - if (dobl.size() ==0) { - fprintf(f,"(empty)\n"); - return; - } - - for (int i=0;i<dobl.size();i++) { - - switch (p.getTypeEnum()) - { - case Type::BooleanType: - fprintf(f,"boolean[%d]=%d\n",i,dobl.getBoolean(i)); - break; - case Type::ByteType: - fprintf(f,"byte[%d]=%d\n",i,dobl.getByte(i)); - break; - case Type::CharacterType: - fprintf(f,"character[%d]=%d\n",i,dobl.getCharacter(i)); - break; - case Type::IntegerType: - fprintf(f,"integer[%d]=%d\n",i,dobl.getInteger(i)); - break; - case Type::ShortType: - fprintf(f,"short[%d]=%d",i, dobl.getShort(i)); - break; - case Type::DoubleType: - fprintf(f,"double[%d]=%.3f\n",i,(float)dobl.getDouble(i)); - break; - case Type::FloatType: - fprintf(f,"float[%d]=%.3f\n",i,dobl.getFloat(i)); - break; - case Type::LongType: - fprintf(f,"long[%d]=%ld\n",i,dobl.getInteger(i)); - break; - case Type::DateType: - fprintf(f,"date[%d]=%d\n",i,dobl.getDate(i).getTime()); - break; - case Type::BigDecimalType: - case Type::BigIntegerType: - case Type::StringType: - case Type::UriType: - fprintf(f,"string[%d]=%s\n",i,dobl.getCString(i)); - break; - case Type::BytesType: - fprintf(f,"bytes[%d]=%s\n",i,dobl.getCString(i)); - break; - case Type::OpenDataObjectType: - case Type::DataObjectType: - { - fprintf(f,"dataObject[%d]=\n",i); - DataObjectPtr dob = dobl[i]; - if (!dob) - { - fprintf(f," null or unset\n"); - } - else - { - printDataObject(f, dob); - } - } - break; - case Type::OtherTypes: - case Type::ChangeSummaryType: - default: - { - fprintf(f,"Unknown object type\n");; - } - break; - } - fprintf(f,"\n"); - } -} - -void sdotest::printDataObject(FILE *f, DataObjectPtr dol) -{ - if (dol == 0) return; - - if (dol->getType().isSequencedType()) - { - fprintf(f,"===== Sequenced DataObject contents =====\n"); - SequencePtr sq = dol->getSequence(); - if (sq != 0) - { - for (unsigned int k=0;k<sq->size();k++) - { - if (sq->isText(k)) - { - fprintf(f,"TEXT ELEMENT:%s\n",sq->getCStringValue(k)); - } - else - { - const Property& p = sq->getProperty(k); - if (p.isMany()) - { - unsigned int index = sq->getListIndex(k); - DataObjectList& dl = dol->getList(p); - if (p.getType().isDataType()) - { - fprintf(f,"Setting of property %s[%d]=%s\n", - p.getName(),index,dl.getCString(index)); - } - else - { - fprintf(f,"Setting of DO property %s[%d]=\n", - p.getName(),index); - printDataObject(f,dl.getDataObject(index)); - } - } - else - { - if (p.getType().isDataType()) - { - fprintf(f,"Setting of property %s=%s\n", - p.getName(),dol->getCString(p)); - } - else - { - fprintf(f,"Setting of DO property %s=\n", - p.getName()); - printDataObject(f,dol->getDataObject(p)); - } - } - } - } - } - fprintf(f,"===== End Sequenced DataObject contents =\n"); - } - else - { - fprintf(f,"===== DataObject contents =====\n"); - PropertyList pl = dol->getInstanceProperties(); - - for (int j=0;j< pl.size(); j++) - { - fprintf(f,"%s:",pl[j].getName()); - // this could be a many-valued property, and could be one which is - // a data object or a data type... - if (pl[j].isMany()) - { - printList(f, dol,pl[j]); - } - else { - printValue(f, dol,pl[j]); - } - } - fprintf(f,"===== End DataObject =====\n"); - } -} - - - -void sdotest::dumpchangesummary(FILE *f, ChangeSummaryPtr cs) -{ - - ChangedDataObjectList& cdol = cs->getChangedDataObjects(); - - // the changed data object list contains only the objects whose properties have - // been changed. - // a changed and subsequently deleted object will not appear, but necessarily its - // container will appear, so we can rebuild it. - - for (int i=0;i< cdol.size();i++) - { - if (cs->isCreated(cdol[i])) - { - fprintf(f,"Created object in changed list\n"); - // So its in the created list, it must exist in the tree... - fprintf(f,"The object is %s#%s\n", - cdol[i]->getType().getURI(), - cdol[i]->getType().getName()); - } - if (cs->isModified(cdol[i])) - { - fprintf(f,"===== Modified Object Starts\n"); - // get to a DAS data object... - DataObject* temp = cdol[i]; - fprintf(f,"Xpath:%s\n",((DataObject*)temp)->objectToXPath()); - - if (cs->isDeleted(cdol[i])) - { - fprintf(f,"PROBLEM: DELETED OBJECT IN CHANGED LIST: \n"); - // As the item is in the deleted list - its still present.. - fprintf(f,"The type is %s#%s\n", - cdol[i]->getType().getURI(), - cdol[i]->getType().getName()); - } - else { - fprintf(f,"The modified objects type is %s#%s\n", - cdol[i]->getType().getURI(), - cdol[i]->getType().getName()); - - printOldValues(f, cs, cdol[i]); - } - fprintf(f,"=====Modified Object Ends \n"); - } - if (cs->isDeleted(cdol[i])) - { - fprintf(f,"=====Deleted Object Starts \n"); - printOldValues(f, cs, cdol[i]); - fprintf(f,"=====Deleted Object Ends \n"); - } - } -} - - -int sdotest::comparefiles(char* fn1, char*fn2) -{ - FILE *f1, *f2; - f1 = fopen(fn1,"r+"); - if (f1 == 0) - { - if (!silent) cout << "Cannot open file:" << fn1 << endl; - return 0; - } - f2 = fopen(fn2,"r+"); - if (f2 == 0) - { - if (!silent) cout << "Cannot open file:" << fn2 << endl; - if (ramping) - { - cout << "Creating it" << endl; - f2 = fopen(fn2,"w+"); - if (f2 == 0) - { - cout << "Cannot ramp up - failed on " << fn2 << endl; - return 0; - } - int c; - do - { - c = fgetc(f1); - if (!feof(f1)) fputc(c,f2); - else break; - } while (1); - fclose(f1); - fclose(f2); - return 1; - } - else - { - fclose(f1); - return 0; - } - } - - while (!feof(f1)) - { - if (fgetc(f1) != fgetc(f2)) - { - fclose(f1); - fclose(f2); - return 0; - } - } - fclose (f1); - - if (!feof(f2)) - { - fclose(f2); - return 0; - } - - fclose(f2); - return 1; -} - - -int sdotest::printseq(FILE *f, SequencePtr sptr) -{ - fprintf(f, "======================================\n"); - for (int i=0;i< sptr->size();i++) - { - try { - if (!sptr->isText(i)) - { - const Property& prp = sptr->getProperty(i); - if (!strcmp(prp.getType().getName(),"Department")) - { - DataObjectPtr pdep = sptr->getDataObjectValue(i); - if (pdep != 0) - { - const char * cs = pdep->getCString("name"); - if (cs != 0) - { - fprintf(f, "%s\n",cs); - } - else - { - fprintf(f," is empty \n"); - } - } - } - else - { - const char* stx = sptr->getCStringValue(i); - if (stx != 0) - { - fprintf(f,"%s\n",stx); - } - else - { - fprintf(f," is empty \n"); - } - } - } - else - { - const char* st = sptr->getCStringValue(i); - if (st != 0) - { - fprintf(f,"%s\n", st); - } - else - { - fprintf(f," is empty \n"); - } - } - } - catch (SDOPropertyNotSetException) - { - if (!silent) cout << "WRONG - got a property not set exception!!!" << endl; - return 0; - } - } - fprintf(f, "======================================\n"); - return 1; -} diff --git a/branches/cpp-M1/sdo/runtime/core/test/xhtml1.xsd b/branches/cpp-M1/sdo/runtime/core/test/xhtml1.xsd deleted file mode 100644 index 54d78e0366..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/xhtml1.xsd +++ /dev/null @@ -1,2245 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema version="1.0" xml:lang="en" - xmlns:xs="http://www.w3.org/2001/XMLSchema" - targetNamespace="http://www.w3.org/1999/xhtml" - xmlns="http://www.w3.org/1999/xhtml" - xmlns:xml="http://www.w3.org/XML/1998/namespace" - elementFormDefault="qualified"> - - <xs:annotation> - <xs:documentation> - XHTML 1.0 (Second Edition) Strict in XML Schema - - This is the same as HTML 4 Strict except for - changes due to the differences between XML and SGML. - - Namespace = http://www.w3.org/1999/xhtml - - For further information, see: http://www.w3.org/TR/xhtml1 - - Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio), - All Rights Reserved. - - The DTD version is identified by the PUBLIC and SYSTEM identifiers: - - PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" - - $Id: xhtml1-strict.xsd,v 1.2 2002/08/28 08:05:44 mimasa Exp $ - </xs:documentation> - </xs:annotation> - - <!-- <xs:import namespace="http://www.w3.org/XML/1998/namespace" - schemaLocation="xml.xsd"/> --> - - <xs:annotation> - <xs:documentation> - ================ Character mnemonic entities ========================= - - XHTML entity sets are identified by the PUBLIC and SYSTEM identifiers: - - PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" - SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent" - - PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" - SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent" - - PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" - SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent" - </xs:documentation> - </xs:annotation> - - <xs:annotation> - <xs:documentation> - ================== Imported Names ==================================== - </xs:documentation> - </xs:annotation> - - <xs:simpleType name="ContentType"> - <xs:annotation> - <xs:documentation> - media type, as per [RFC2045] - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"/> - </xs:simpleType> - - <xs:simpleType name="ContentTypes"> - <xs:annotation> - <xs:documentation> - comma-separated list of media types, as per [RFC2045] - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"/> - </xs:simpleType> - - <xs:simpleType name="Charset"> - <xs:annotation> - <xs:documentation> - a character encoding, as per [RFC2045] - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"/> - </xs:simpleType> - - <xs:simpleType name="Charsets"> - <xs:annotation> - <xs:documentation> - a space separated list of character encodings, as per [RFC2045] - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"/> - </xs:simpleType> - - <xs:simpleType name="LanguageCode"> - <xs:annotation> - <xs:documentation> - a language code, as per [RFC3066] - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:language"/> - </xs:simpleType> - - <xs:simpleType name="Character"> - <xs:annotation> - <xs:documentation> - a single character, as per section 2.2 of [XML] - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:length value="1" fixed="true"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="Number"> - <xs:annotation> - <xs:documentation> - one or more digits - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:nonNegativeInteger"> - <xs:pattern value="[0-9]+"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="tabindexNumber"> - <xs:annotation> - <xs:documentation> - tabindex attribute specifies the position of the current element - in the tabbing order for the current document. This value must be - a number between 0 and 32767. User agents should ignore leading zeros. - </xs:documentation> - </xs:annotation> - <xs:restriction base="Number"> - <xs:minInclusive value="0"/> - <xs:maxInclusive value="32767"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="LinkTypes"> - <xs:annotation> - <xs:documentation> - space-separated list of link types - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:NMTOKENS"/> - </xs:simpleType> - - <xs:simpleType name="MediaDesc"> - <xs:annotation> - <xs:documentation> - single or comma-separated list of media descriptors - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:pattern value="[^,]+(,\s*[^,]+)*"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="URI"> - <xs:annotation> - <xs:documentation> - a Uniform Resource Identifier, see [RFC2396] - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:anyURI"/> - </xs:simpleType> - - <xs:simpleType name="UriList"> - <xs:annotation> - <xs:documentation> - a space separated list of Uniform Resource Identifiers - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"/> - </xs:simpleType> - - <xs:simpleType name="Datetime"> - <xs:annotation> - <xs:documentation> - date and time information. ISO date format - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:dateTime"/> - </xs:simpleType> - - <xs:simpleType name="Script"> - <xs:annotation> - <xs:documentation> - script expression - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"/> - </xs:simpleType> - - <xs:simpleType name="StyleSheet"> - <xs:annotation> - <xs:documentation> - style sheet data - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"/> - </xs:simpleType> - - <xs:simpleType name="Text"> - <xs:annotation> - <xs:documentation> - used for titles etc. - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"/> - </xs:simpleType> - - <xs:simpleType name="Length"> - <xs:annotation> - <xs:documentation> - nn for pixels or nn% for percentage length - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="MultiLength"> - <xs:annotation> - <xs:documentation> - pixel, percentage, or relative - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)|[1-9]?(\d+)?\*"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="Pixels"> - <xs:annotation> - <xs:documentation> - integer representing length in pixels - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:nonNegativeInteger"/> - </xs:simpleType> - - <xs:annotation> - <xs:documentation> - these are used for image maps - </xs:documentation> - </xs:annotation> - - <xs:simpleType name="Shape"> - <xs:restriction base="xs:token"> - <xs:enumeration value="rect"/> - <xs:enumeration value="circle"/> - <xs:enumeration value="poly"/> - <xs:enumeration value="default"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="Coords"> - <xs:annotation> - <xs:documentation> - comma separated list of lengths - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:pattern - value="[-+]?(\d+|\d+(\.\d+)?%)(,\s*[-+]?(\d+|\d+(\.\d+)?%))*"/> - </xs:restriction> - </xs:simpleType> - - <xs:annotation> - <xs:documentation> - =================== Generic Attributes =============================== - </xs:documentation> - </xs:annotation> - - <xs:attributeGroup name="coreattrs"> - <xs:annotation> - <xs:documentation> - core attributes common to most elements - id document-wide unique id - class space separated list of classes - style associated style info - title advisory title/amplification - </xs:documentation> - </xs:annotation> - <xs:attribute name="id" type="xs:ID"/> - <xs:attribute name="class" type="xs:NMTOKENS"/> - <xs:attribute name="style" type="StyleSheet"/> - <xs:attribute name="title" type="Text"/> - </xs:attributeGroup> - - <xs:attributeGroup name="i18n"> - <xs:annotation> - <xs:documentation> - internationalization attributes - lang language code (backwards compatible) - xml:lang language code (as per XML 1.0 spec) - dir direction for weak/neutral text - </xs:documentation> - </xs:annotation> - <xs:attribute name="lang" type="LanguageCode"/> - <xs:attribute ref="xml:lang"/> - <xs:attribute name="dir"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="ltr"/> - <xs:enumeration value="rtl"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:attributeGroup> - - <xs:attributeGroup name="events"> - <xs:annotation> - <xs:documentation> - attributes for common UI events - onclick a pointer button was clicked - ondblclick a pointer button was double clicked - onmousedown a pointer button was pressed down - onmouseup a pointer button was released - onmousemove a pointer was moved onto the element - onmouseout a pointer was moved away from the element - onkeypress a key was pressed and released - onkeydown a key was pressed down - onkeyup a key was released - </xs:documentation> - </xs:annotation> - <xs:attribute name="onclick" type="Script"/> - <xs:attribute name="ondblclick" type="Script"/> - <xs:attribute name="onmousedown" type="Script"/> - <xs:attribute name="onmouseup" type="Script"/> - <xs:attribute name="onmouseover" type="Script"/> - <xs:attribute name="onmousemove" type="Script"/> - <xs:attribute name="onmouseout" type="Script"/> - <xs:attribute name="onkeypress" type="Script"/> - <xs:attribute name="onkeydown" type="Script"/> - <xs:attribute name="onkeyup" type="Script"/> - </xs:attributeGroup> - - <xs:attributeGroup name="focus"> - <xs:annotation> - <xs:documentation> - attributes for elements that can get the focus - accesskey accessibility key character - tabindex position in tabbing order - onfocus the element got the focus - onblur the element lost the focus - </xs:documentation> - </xs:annotation> - <xs:attribute name="accesskey" type="Character"/> - <xs:attribute name="tabindex" type="tabindexNumber"/> - <xs:attribute name="onfocus" type="Script"/> - <xs:attribute name="onblur" type="Script"/> - </xs:attributeGroup> -<!-- - <xs:attributeGroup name="attrs"> - <xs:attributeGroup ref="coreattrs"/> - <xs:attributeGroup ref="i18n"/> - <xs:attributeGroup ref="events"/> - </xs:attributeGroup> ---> - <xs:attributeGroup name="attrs"> - - <!-- coreattrs attribute group --> - <xs:attribute name="id" type="xs:ID"/> - <xs:attribute name="class" type="xs:NMTOKENS"/> - <xs:attribute name="style" type="StyleSheet"/> - <xs:attribute name="title" type="Text"/> - - <!-- i18n attribute group --> - <xs:attribute name="lang" type="LanguageCode"/> - <xs:attribute ref="xml:lang"/> - <xs:attribute name="dir"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="ltr"/> - <xs:enumeration value="rtl"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - - <!-- events attribute group --> - <xs:attribute name="onclick" type="Script"/> - <xs:attribute name="ondblclick" type="Script"/> - <xs:attribute name="onmousedown" type="Script"/> - <xs:attribute name="onmouseup" type="Script"/> - <xs:attribute name="onmouseover" type="Script"/> - <xs:attribute name="onmousemove" type="Script"/> - <xs:attribute name="onmouseout" type="Script"/> - <xs:attribute name="onkeypress" type="Script"/> - <xs:attribute name="onkeydown" type="Script"/> - <xs:attribute name="onkeyup" type="Script"/> - </xs:attributeGroup> - - - <xs:annotation> - <xs:documentation> - =================== Text Elements ==================================== - </xs:documentation> - </xs:annotation> - - <xs:group name="special.pre"> - <xs:choice> - <xs:element ref="br"/> - <xs:element ref="span"/> - <xs:element ref="bdo"/> - <xs:element ref="map"/> - </xs:choice> - </xs:group> - - <xs:group name="special"> - <xs:choice> - <xs:group ref="special.pre"/> - <xs:element ref="object"/> - <xs:element ref="img"/> - </xs:choice> - </xs:group> - - <xs:group name="fontstyle"> - <xs:choice> - <xs:element ref="tt"/> - <xs:element ref="i"/> - <xs:element ref="b"/> - <xs:element ref="big"/> - <xs:element ref="small"/> - </xs:choice> - </xs:group> - - <xs:group name="phrase"> - <xs:choice> - <xs:element ref="em"/> - <xs:element ref="strong"/> - <xs:element ref="dfn"/> - <xs:element ref="code"/> - <xs:element ref="q"/> - <xs:element ref="samp"/> - <xs:element ref="kbd"/> - <xs:element ref="var"/> - <xs:element ref="cite"/> - <xs:element ref="abbr"/> - <xs:element ref="acronym"/> - <xs:element ref="sub"/> - <xs:element ref="sup"/> - </xs:choice> - </xs:group> - - <xs:group name="inline.forms"> - <xs:choice> - <xs:element ref="input"/> - <xs:element ref="select"/> - <xs:element ref="textarea"/> - <xs:element ref="label"/> - <xs:element ref="button"/> - </xs:choice> - </xs:group> - - <xs:group name="misc.inline"> - <xs:choice> - <xs:element ref="ins"/> - <xs:element ref="del"/> - <xs:element ref="script"/> - </xs:choice> - </xs:group> - - <xs:group name="misc"> - <xs:annotation> - <xs:documentation> - these can only occur at block level - </xs:documentation> - </xs:annotation> - <xs:choice> - <xs:element ref="noscript"/> - <xs:group ref="misc.inline"/> - </xs:choice> - </xs:group> - - <xs:group name="inline"> - <xs:choice> - <xs:element ref="a"/> - <xs:group ref="special"/> - <xs:group ref="fontstyle"/> - <xs:group ref="phrase"/> - <xs:group ref="inline.forms"/> - </xs:choice> - </xs:group> - - <xs:complexType name="Inline" mixed="true"> - <xs:annotation> - <xs:documentation> - "Inline" covers inline or "text-level" elements - </xs:documentation> - </xs:annotation> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:group ref="inline"/> - <xs:group ref="misc.inline"/> - </xs:choice> - </xs:complexType> - - <xs:annotation> - <xs:documentation> - ================== Block level elements ============================== - </xs:documentation> - </xs:annotation> - - <xs:group name="heading"> - <xs:choice> - <xs:element ref="h1"/> - <xs:element ref="h2"/> - <xs:element ref="h3"/> - <xs:element ref="h4"/> - <xs:element ref="h5"/> - <xs:element ref="h6"/> - </xs:choice> - </xs:group> - - <xs:group name="lists"> - <xs:choice> - <xs:element ref="ul"/> - <xs:element ref="ol"/> - <xs:element ref="dl"/> - </xs:choice> - </xs:group> - - <xs:group name="blocktext"> - <xs:choice> - <xs:element ref="pre"/> - <xs:element ref="hr"/> - <xs:element ref="blockquote"/> - <xs:element ref="address"/> - </xs:choice> - </xs:group> - - <xs:group name="block"> - <xs:choice> - <xs:element ref="p"/> - <xs:group ref="heading"/> - <xs:element ref="div"/> - <xs:group ref="lists"/> - <xs:group ref="blocktext"/> - <xs:element ref="fieldset"/> - <xs:element ref="table"/> - </xs:choice> - </xs:group> - - <xs:complexType name="Block"> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:group ref="block"/> - <xs:element ref="form"/> - <xs:group ref="misc"/> - </xs:choice> - </xs:complexType> - - <xs:complexType name="Flow" mixed="true"> - <xs:annotation> - <xs:documentation> - "Flow" mixes block and inline and is used for list items etc. - </xs:documentation> - </xs:annotation> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:group ref="block"/> - <xs:element ref="form"/> - <xs:group ref="inline"/> - <xs:group ref="misc"/> - </xs:choice> - </xs:complexType> - - <xs:annotation> - <xs:documentation> - ================== Content models for exclusions ===================== - </xs:documentation> - </xs:annotation> - - <xs:complexType name="a.content" mixed="true"> - <xs:annotation> - <xs:documentation> - a elements use "Inline" excluding a - </xs:documentation> - </xs:annotation> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:group ref="special"/> - <xs:group ref="fontstyle"/> - <xs:group ref="phrase"/> - <xs:group ref="inline.forms"/> - <xs:group ref="misc.inline"/> - </xs:choice> - </xs:complexType> - - <xs:complexType name="pre.content" mixed="true"> - <xs:annotation> - <xs:documentation> - pre uses "Inline" excluding big, small, sup or sup - </xs:documentation> - </xs:annotation> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:element ref="a"/> - <xs:group ref="fontstyle"/> - <xs:group ref="phrase"/> - <xs:group ref="special.pre"/> - <xs:group ref="misc.inline"/> - <xs:group ref="inline.forms"/> - </xs:choice> - </xs:complexType> - - <xs:complexType name="form.content"> - <xs:annotation> - <xs:documentation> - form uses "Block" excluding form - </xs:documentation> - </xs:annotation> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:group ref="block"/> - <xs:group ref="misc"/> - </xs:choice> - </xs:complexType> - - <xs:complexType name="button.content" mixed="true"> - <xs:annotation> - <xs:documentation> - button uses "Flow" but excludes a, form and form controls - </xs:documentation> - </xs:annotation> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:element ref="p"/> - <xs:group ref="heading"/> - <xs:element ref="div"/> - <xs:group ref="lists"/> - <xs:group ref="blocktext"/> - <xs:element ref="table"/> - <xs:group ref="special"/> - <xs:group ref="fontstyle"/> - <xs:group ref="phrase"/> - <xs:group ref="misc"/> - </xs:choice> - </xs:complexType> - - <xs:annotation> - <xs:documentation> - ================ Document Structure ================================== - </xs:documentation> - </xs:annotation> - - <xs:element name="html"> - <xs:complexType> - <xs:sequence> - <xs:element ref="head"/> - <xs:element ref="body"/> - </xs:sequence> - <xs:attributeGroup ref="i18n"/> - <xs:attribute name="id" type="xs:ID"/> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - ================ Document Head ======================================= - </xs:documentation> - </xs:annotation> - - <xs:group name="head.misc"> - <xs:sequence> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:element ref="script"/> - <xs:element ref="style"/> - <xs:element ref="meta"/> - <xs:element ref="link"/> - <xs:element ref="object"/> - </xs:choice> - </xs:sequence> - </xs:group> - - <xs:element name="head"> - <xs:annotation> - <xs:documentation> - content model is "head.misc" combined with a single - title and an optional base element in any order - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:group ref="head.misc"/> - <xs:choice> - <xs:sequence> - <xs:element ref="title"/> - <xs:group ref="head.misc"/> - <xs:sequence minOccurs="0"> - <xs:element ref="base"/> - <xs:group ref="head.misc"/> - </xs:sequence> - </xs:sequence> - <xs:sequence> - <xs:element ref="base"/> - <xs:group ref="head.misc"/> - <xs:element ref="title"/> - <xs:group ref="head.misc"/> - </xs:sequence> - </xs:choice> - </xs:sequence> - <xs:attributeGroup ref="i18n"/> - <xs:attribute name="id" type="xs:ID"/> - <xs:attribute name="profile" type="URI"/> - </xs:complexType> - </xs:element> - - <xs:element name="title"> - <xs:annotation> - <xs:documentation> - The title element is not considered part of the flow of text. - It should be displayed, for example as the page header or - window title. Exactly one title is required per document. - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:attributeGroup ref="i18n"/> - <xs:attribute name="id" type="xs:ID"/> - </xs:complexType> - </xs:element> - - <xs:element name="base"> - <xs:annotation> - <xs:documentation> - document base URI - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="href" use="required" type="URI"/> - <xs:attribute name="id" type="xs:ID"/> - </xs:complexType> - </xs:element> - - <xs:element name="meta"> - <xs:annotation> - <xs:documentation> - generic metainformation - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attributeGroup ref="i18n"/> - <xs:attribute name="id" type="xs:ID"/> - <xs:attribute name="http-equiv"/> - <xs:attribute name="name"/> - <xs:attribute name="content" use="required"/> - <xs:attribute name="scheme"/> - </xs:complexType> - </xs:element> - - <xs:element name="link"> - <xs:annotation> - <xs:documentation> - Relationship values can be used in principle: - - a) for document specific toolbars/menus when used - with the link element in document head e.g. - start, contents, previous, next, index, end, help - b) to link to a separate style sheet (rel="stylesheet") - c) to make a link to a script (rel="script") - d) by stylesheets to control how collections of - html nodes are rendered into printed documents - e) to make a link to a printable version of this document - e.g. a PostScript or PDF version (rel="alternate" media="print") - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="charset" type="Charset"/> - <xs:attribute name="href" type="URI"/> - <xs:attribute name="hreflang" type="LanguageCode"/> - <xs:attribute name="type" type="ContentType"/> - <xs:attribute name="rel" type="LinkTypes"/> - <xs:attribute name="rev" type="LinkTypes"/> - <xs:attribute name="media" type="MediaDesc"/> - </xs:complexType> - </xs:element> - - <xs:element name="style"> - <xs:annotation> - <xs:documentation> - style info, which may include CDATA sections - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:attributeGroup ref="i18n"/> - <xs:attribute name="id" type="xs:ID"/> - <xs:attribute name="type" use="required" type="ContentType"/> - <xs:attribute name="media" type="MediaDesc"/> - <xs:attribute name="title" type="Text"/> - <xs:attribute ref="xml:space" fixed="preserve"/> - </xs:complexType> - </xs:element> - - <xs:element name="script"> - <xs:annotation> - <xs:documentation> - script statements, which may include CDATA sections - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:attribute name="id" type="xs:ID"/> - <xs:attribute name="charset" type="Charset"/> - <xs:attribute name="type" use="required" type="ContentType"/> - <xs:attribute name="src" type="URI"/> - <xs:attribute name="defer"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="defer"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute ref="xml:space" fixed="preserve"/> - </xs:complexType> - </xs:element> - - <xs:element name="noscript"> - <xs:annotation> - <xs:documentation> - alternate content container for non script-based rendering - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:complexContent> - <xs:extension base="Block"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Document Body ==================================== - </xs:documentation> - </xs:annotation> - - <xs:element name="body"> - <xs:complexType> - <xs:complexContent> - <xs:extension base="Block"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="onload" type="Script"/> - <xs:attribute name="onunload" type="Script"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="div"> - <xs:annotation> - <xs:documentation> - generic language/style container - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Flow"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Paragraphs ======================================= - </xs:documentation> - </xs:annotation> - - <xs:element name="p"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Headings ========================================= - - There are six levels of headings from h1 (the most important) - to h6 (the least important). - </xs:documentation> - </xs:annotation> - - <xs:element name="h1"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="h2"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="h3"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="h4"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="h5"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="h6"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Lists ============================================ - </xs:documentation> - </xs:annotation> - - <xs:element name="ul"> - <xs:annotation> - <xs:documentation> - Unordered list - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="li"/> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - </xs:complexType> - </xs:element> - - <xs:element name="ol"> - <xs:annotation> - <xs:documentation> - Ordered (numbered) list - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="li"/> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - </xs:complexType> - </xs:element> - - <xs:element name="li"> - <xs:annotation> - <xs:documentation> - list item - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Flow"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - definition lists - dt for term, dd for its definition - </xs:documentation> - </xs:annotation> - - <xs:element name="dl"> - <xs:complexType> - <xs:choice maxOccurs="unbounded"> - <xs:element ref="dt"/> - <xs:element ref="dd"/> - </xs:choice> - <xs:attributeGroup ref="attrs"/> - </xs:complexType> - </xs:element> - - <xs:element name="dt"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="dd"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Flow"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Address ========================================== - </xs:documentation> - </xs:annotation> - - <xs:element name="address"> - <xs:annotation> - <xs:documentation> - information on author - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Horizontal Rule ================================== - </xs:documentation> - </xs:annotation> - - <xs:element name="hr"> - <xs:complexType> - <xs:attributeGroup ref="attrs"/> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Preformatted Text ================================ - </xs:documentation> - </xs:annotation> - - <xs:element name="pre"> - <xs:annotation> - <xs:documentation> - content is "Inline" excluding "img|object|big|small|sub|sup" - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="pre.content"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute ref="xml:space" fixed="preserve"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Block-like Quotes ================================ - </xs:documentation> - </xs:annotation> - - <xs:element name="blockquote"> - <xs:complexType> - <xs:complexContent> - <xs:extension base="Block"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="cite" type="URI"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Inserted/Deleted Text ============================ - - ins/del are allowed in block and inline content, but its - inappropriate to include block content within an ins element - occurring in inline content. - </xs:documentation> - </xs:annotation> - - <xs:element name="ins"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Flow"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="cite" type="URI"/> - <xs:attribute name="datetime" type="Datetime"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="del"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Flow"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="cite" type="URI"/> - <xs:attribute name="datetime" type="Datetime"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - ================== The Anchor Element ================================ - </xs:documentation> - </xs:annotation> - - <xs:element name="a"> - <xs:annotation> - <xs:documentation> - content is "Inline" except that anchors shouldn't be nested - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="a.content"> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="focus"/> - <xs:attribute name="charset" type="Charset"/> - <xs:attribute name="type" type="ContentType"/> - <xs:attribute name="name" type="xs:NMTOKEN"/> - <xs:attribute name="href" type="URI"/> - <xs:attribute name="hreflang" type="LanguageCode"/> - <xs:attribute name="rel" type="LinkTypes"/> - <xs:attribute name="rev" type="LinkTypes"/> - <xs:attribute name="shape" default="rect" type="Shape"/> - <xs:attribute name="coords" type="Coords"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - ===================== Inline Elements ================================ - </xs:documentation> - </xs:annotation> - - <xs:element name="span"> - <xs:annotation> - <xs:documentation> - generic language/style container - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="bdo"> - <xs:annotation> - <xs:documentation> - I18N BiDi over-ride - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="coreattrs"/> - <xs:attributeGroup ref="events"/> - <xs:attribute name="lang" type="LanguageCode"/> - <xs:attribute ref="xml:lang"/> - <xs:attribute name="dir" use="required"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="ltr"/> - <xs:enumeration value="rtl"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="br"> - <xs:annotation> - <xs:documentation> - forced line break - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attributeGroup ref="coreattrs"/> - </xs:complexType> - </xs:element> - - <xs:element name="em"> - <xs:annotation> - <xs:documentation> - emphasis - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="strong"> - <xs:annotation> - <xs:documentation> - strong emphasis - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="dfn"> - <xs:annotation> - <xs:documentation> - definitional - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="code"> - <xs:annotation> - <xs:documentation> - program code - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="samp"> - <xs:annotation> - <xs:documentation> - sample - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="kbd"> - <xs:annotation> - <xs:documentation> - something user would type - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="var"> - <xs:annotation> - <xs:documentation> - variable - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="cite"> - <xs:annotation> - <xs:documentation> - citation - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="abbr"> - <xs:annotation> - <xs:documentation> - abbreviation - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="acronym"> - <xs:annotation> - <xs:documentation> - acronym - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="q"> - <xs:annotation> - <xs:documentation> - inlined quote - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="cite" type="URI"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="sub"> - <xs:annotation> - <xs:documentation> - subscript - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="sup"> - <xs:annotation> - <xs:documentation> - superscript - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="tt"> - <xs:annotation> - <xs:documentation> - fixed pitch font - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="i"> - <xs:annotation> - <xs:documentation> - italic font - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="b"> - <xs:annotation> - <xs:documentation> - bold font - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="big"> - <xs:annotation> - <xs:documentation> - bigger font - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="small"> - <xs:annotation> - <xs:documentation> - smaller font - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - ==================== Object ====================================== - - object is used to embed objects as part of HTML pages. - param elements should precede other content. Parameters - can also be expressed as attribute/value pairs on the - object element itself when brevity is desired. - </xs:documentation> - </xs:annotation> - - <xs:element name="object"> - <xs:complexType mixed="true"> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:element ref="param"/> - <xs:group ref="block"/> - <xs:element ref="form"/> - <xs:group ref="inline"/> - <xs:group ref="misc"/> - </xs:choice> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="declare"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="declare"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="classid" type="URI"/> - <xs:attribute name="codebase" type="URI"/> - <xs:attribute name="data" type="URI"/> - <xs:attribute name="type" type="ContentType"/> - <xs:attribute name="codetype" type="ContentType"/> - <xs:attribute name="archive" type="UriList"/> - <xs:attribute name="standby" type="Text"/> - <xs:attribute name="height" type="Length"/> - <xs:attribute name="width" type="Length"/> - <xs:attribute name="usemap" type="URI"/> - <xs:attribute name="name" type="xs:NMTOKEN"/> - <xs:attribute name="tabindex" type="tabindexNumber"/> - </xs:complexType> - </xs:element> - - <xs:element name="param"> - <xs:annotation> - <xs:documentation> - param is used to supply a named property value. - In XML it would seem natural to follow RDF and support an - abbreviated syntax where the param elements are replaced - by attribute value pairs on the object start tag. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attribute name="id" type="xs:ID"/> - <xs:attribute name="name"/> - <xs:attribute name="value"/> - <xs:attribute name="valuetype" default="data"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="data"/> - <xs:enumeration value="ref"/> - <xs:enumeration value="object"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="type" type="ContentType"/> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - =================== Images =========================================== - - To avoid accessibility problems for people who aren't - able to see the image, you should provide a text - description using the alt and longdesc attributes. - In addition, avoid the use of server-side image maps. - Note that in this DTD there is no name attribute. That - is only available in the transitional and frameset DTD. - </xs:documentation> - </xs:annotation> - - <xs:element name="img"> - <xs:complexType> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="src" use="required" type="URI"/> - <xs:attribute name="alt" use="required" type="Text"/> - <xs:attribute name="longdesc" type="URI"/> - <xs:attribute name="height" type="Length"/> - <xs:attribute name="width" type="Length"/> - <xs:attribute name="usemap" type="URI"> - <xs:annotation> - <xs:documentation> - usemap points to a map element which may be in this document - or an external document, although the latter is not widely supported - </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="ismap"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="ismap"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - ================== Client-side image maps ============================ - - These can be placed in the same document or grouped in a - separate document although this isn't yet widely supported - </xs:documentation> - </xs:annotation> - - <xs:element name="map"> - <xs:complexType> - <xs:choice> - <xs:choice maxOccurs="unbounded"> - <xs:group ref="block"/> - <xs:element ref="form"/> - <xs:group ref="misc"/> - </xs:choice> - <xs:element maxOccurs="unbounded" ref="area"/> - </xs:choice> - <xs:attributeGroup ref="i18n"/> - <xs:attributeGroup ref="events"/> - <xs:attribute name="id" use="required" type="xs:ID"/> - <xs:attribute name="class"/> - <xs:attribute name="style" type="StyleSheet"/> - <xs:attribute name="title" type="Text"/> - <xs:attribute name="name" type="xs:NMTOKEN"/> - </xs:complexType> - </xs:element> - - <xs:element name="area"> - <xs:complexType> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="focus"/> - <xs:attribute name="shape" default="rect" type="Shape"/> - <xs:attribute name="coords" type="Coords"/> - <xs:attribute name="href" type="URI"/> - <xs:attribute name="nohref"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="nohref"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="alt" use="required" type="Text"/> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - ================ Forms =============================================== - </xs:documentation> - </xs:annotation> - - <xs:element name="form"> - <xs:complexType> - <xs:complexContent> - <xs:extension base="form.content"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="action" use="required" type="URI"/> - <xs:attribute name="method" default="get"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="get"/> - <xs:enumeration value="post"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="enctype" type="ContentType" - default="application/x-www-form-urlencoded"/> - <xs:attribute name="onsubmit" type="Script"/> - <xs:attribute name="onreset" type="Script"/> - <xs:attribute name="accept" type="ContentTypes"/> - <xs:attribute name="accept-charset" type="Charsets"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="label"> - <xs:annotation> - <xs:documentation> - Each label must not contain more than ONE field - Label elements shouldn't be nested. - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="for" type="xs:IDREF"/> - <xs:attribute name="accesskey" type="Character"/> - <xs:attribute name="onfocus" type="Script"/> - <xs:attribute name="onblur" type="Script"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:simpleType name="InputType"> - <xs:restriction base="xs:token"> - <xs:enumeration value="text"/> - <xs:enumeration value="password"/> - <xs:enumeration value="checkbox"/> - <xs:enumeration value="radio"/> - <xs:enumeration value="submit"/> - <xs:enumeration value="reset"/> - <xs:enumeration value="file"/> - <xs:enumeration value="hidden"/> - <xs:enumeration value="image"/> - <xs:enumeration value="button"/> - </xs:restriction> - </xs:simpleType> - - <xs:element name="input"> - <xs:annotation> - <xs:documentation> - form control - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="focus"/> - <xs:attribute name="type" default="text" type="InputType"/> - <xs:attribute name="name"> - <xs:annotation> - <xs:documentation> - the name attribute is required for all but submit & reset - </xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="value"/> - <xs:attribute name="checked"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="checked"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="disabled"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="disabled"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="readonly"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="readonly"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="size"/> - <xs:attribute name="maxlength" type="Number"/> - <xs:attribute name="src" type="URI"/> - <xs:attribute name="alt"/> - <xs:attribute name="usemap" type="URI"/> - <xs:attribute name="onselect" type="Script"/> - <xs:attribute name="onchange" type="Script"/> - <xs:attribute name="accept" type="ContentTypes"/> - </xs:complexType> - </xs:element> - - <xs:element name="select"> - <xs:annotation> - <xs:documentation> - option selector - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:choice maxOccurs="unbounded"> - <xs:element ref="optgroup"/> - <xs:element ref="option"/> - </xs:choice> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="name"/> - <xs:attribute name="size" type="Number"/> - <xs:attribute name="multiple"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="multiple"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="disabled"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="disabled"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="tabindex" type="tabindexNumber"/> - <xs:attribute name="onfocus" type="Script"/> - <xs:attribute name="onblur" type="Script"/> - <xs:attribute name="onchange" type="Script"/> - </xs:complexType> - </xs:element> - - <xs:element name="optgroup"> - <xs:annotation> - <xs:documentation> - option group - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="option"/> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="disabled"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="disabled"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="label" use="required" type="Text"/> - </xs:complexType> - </xs:element> - - <xs:element name="option"> - <xs:annotation> - <xs:documentation> - selectable choice - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="selected"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="selected"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="disabled"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="disabled"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="label" type="Text"/> - <xs:attribute name="value"/> - </xs:complexType> - </xs:element> - - <xs:element name="textarea"> - <xs:annotation> - <xs:documentation> - multi-line text field - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="focus"/> - <xs:attribute name="name"/> - <xs:attribute name="rows" use="required" type="Number"/> - <xs:attribute name="cols" use="required" type="Number"/> - <xs:attribute name="disabled"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="disabled"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="readonly"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="readonly"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="onselect" type="Script"/> - <xs:attribute name="onchange" type="Script"/> - </xs:complexType> - </xs:element> - - <xs:element name="fieldset"> - <xs:annotation> - <xs:documentation> - The fieldset element is used to group form fields. - Only one legend element should occur in the content - and if present should only be preceded by whitespace. - - NOTE: this content model is different from the XHTML 1.0 DTD, - closer to the intended content model in HTML4 DTD - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:sequence> - <xs:element ref="legend"/> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:group ref="block"/> - <xs:element ref="form"/> - <xs:group ref="inline"/> - <xs:group ref="misc"/> - </xs:choice> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - </xs:complexType> - </xs:element> - - <xs:element name="legend"> - <xs:annotation> - <xs:documentation> - fieldset label - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="accesskey" type="Character"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="button"> - <xs:annotation> - <xs:documentation> - Content is "Flow" excluding a, form and form controls - </xs:documentation> - </xs:annotation> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="button.content"> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="focus"/> - <xs:attribute name="name"/> - <xs:attribute name="value"/> - <xs:attribute name="type" default="submit"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="button"/> - <xs:enumeration value="submit"/> - <xs:enumeration value="reset"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="disabled"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="disabled"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - ======================= Tables ======================================= - - Derived from IETF HTML table standard, see [RFC1942] - </xs:documentation> - </xs:annotation> - - <xs:simpleType name="TFrame"> - <xs:annotation> - <xs:documentation> - The border attribute sets the thickness of the frame around the - table. The default units are screen pixels. - - The frame attribute specifies which parts of the frame around - the table should be rendered. The values are not the same as - CALS to avoid a name clash with the valign attribute. - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:token"> - <xs:enumeration value="void"/> - <xs:enumeration value="above"/> - <xs:enumeration value="below"/> - <xs:enumeration value="hsides"/> - <xs:enumeration value="lhs"/> - <xs:enumeration value="rhs"/> - <xs:enumeration value="vsides"/> - <xs:enumeration value="box"/> - <xs:enumeration value="border"/> - </xs:restriction> - </xs:simpleType> - - <xs:simpleType name="TRules"> - <xs:annotation> - <xs:documentation> - The rules attribute defines which rules to draw between cells: - - If rules is absent then assume: - "none" if border is absent or border="0" otherwise "all" - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:token"> - <xs:enumeration value="none"/> - <xs:enumeration value="groups"/> - <xs:enumeration value="rows"/> - <xs:enumeration value="cols"/> - <xs:enumeration value="all"/> - </xs:restriction> - </xs:simpleType> - - <xs:attributeGroup name="cellhalign"> - <xs:annotation> - <xs:documentation> - horizontal alignment attributes for cell contents - - char alignment char, e.g. char=':' - charoff offset for alignment char - </xs:documentation> - </xs:annotation> - <xs:attribute name="align"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="left"/> - <xs:enumeration value="center"/> - <xs:enumeration value="right"/> - <xs:enumeration value="justify"/> - <xs:enumeration value="char"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <xs:attribute name="char" type="Character"/> - <xs:attribute name="charoff" type="Length"/> - </xs:attributeGroup> - - <xs:attributeGroup name="cellvalign"> - <xs:annotation> - <xs:documentation> - vertical alignment attributes for cell contents - </xs:documentation> - </xs:annotation> - <xs:attribute name="valign"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="top"/> - <xs:enumeration value="middle"/> - <xs:enumeration value="bottom"/> - <xs:enumeration value="baseline"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:attributeGroup> - - <xs:element name="table"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" ref="caption"/> - <xs:choice> - <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/> - <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/> - </xs:choice> - <xs:element minOccurs="0" ref="thead"/> - <xs:element minOccurs="0" ref="tfoot"/> - <xs:choice> - <xs:element maxOccurs="unbounded" ref="tbody"/> - <xs:element maxOccurs="unbounded" ref="tr"/> - </xs:choice> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="summary" type="Text"/> - <xs:attribute name="width" type="Length"/> - <xs:attribute name="border" type="Pixels"/> - <xs:attribute name="frame" type="TFrame"/> - <xs:attribute name="rules" type="TRules"/> - <xs:attribute name="cellspacing" type="Length"/> - <xs:attribute name="cellpadding" type="Length"/> - </xs:complexType> - </xs:element> - - <xs:element name="caption"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Inline"> - <xs:attributeGroup ref="attrs"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:annotation> - <xs:documentation> - Use thead to duplicate headers when breaking table - across page boundaries, or for static headers when - tbody sections are rendered in scrolling panel. - - Use tfoot to duplicate footers when breaking table - across page boundaries, or for static footers when - tbody sections are rendered in scrolling panel. - - Use multiple tbody sections when rules are needed - between groups of table rows. - </xs:documentation> - </xs:annotation> - - <xs:element name="thead"> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="tr"/> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="cellhalign"/> - <xs:attributeGroup ref="cellvalign"/> - </xs:complexType> - </xs:element> - - <xs:element name="tfoot"> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="tr"/> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="cellhalign"/> - <xs:attributeGroup ref="cellvalign"/> - </xs:complexType> - </xs:element> - - <xs:element name="tbody"> - <xs:complexType> - <xs:sequence> - <xs:element maxOccurs="unbounded" ref="tr"/> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="cellhalign"/> - <xs:attributeGroup ref="cellvalign"/> - </xs:complexType> - </xs:element> - - <xs:element name="colgroup"> - <xs:annotation> - <xs:documentation> - colgroup groups a set of col elements. It allows you to group - several semantically related columns together. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/> - </xs:sequence> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="span" default="1" type="Number"/> - <xs:attribute name="width" type="MultiLength"/> - <xs:attributeGroup ref="cellhalign"/> - <xs:attributeGroup ref="cellvalign"/> - </xs:complexType> - </xs:element> - - <xs:element name="col"> - <xs:annotation> - <xs:documentation> - col elements define the alignment properties for cells in - one or more columns. - - The width attribute specifies the width of the columns, e.g. - - width=64 width in screen pixels - width=0.5* relative width of 0.5 - - The span attribute causes the attributes of one - col element to apply to more than one column. - </xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="span" default="1" type="Number"/> - <xs:attribute name="width" type="MultiLength"/> - <xs:attributeGroup ref="cellhalign"/> - <xs:attributeGroup ref="cellvalign"/> - </xs:complexType> - </xs:element> - - <xs:element name="tr"> - <xs:complexType> - <xs:choice maxOccurs="unbounded"> - <xs:element ref="th"/> - <xs:element ref="td"/> - </xs:choice> - <xs:attributeGroup ref="attrs"/> - <xs:attributeGroup ref="cellhalign"/> - <xs:attributeGroup ref="cellvalign"/> - </xs:complexType> - </xs:element> - - <xs:simpleType name="Scope"> - <xs:annotation> - <xs:documentation> - Scope is simpler than headers attribute for common tables - </xs:documentation> - </xs:annotation> - <xs:restriction base="xs:token"> - <xs:enumeration value="row"/> - <xs:enumeration value="col"/> - <xs:enumeration value="rowgroup"/> - <xs:enumeration value="colgroup"/> - </xs:restriction> - </xs:simpleType> - - <xs:annotation> - <xs:documentation> - th is for headers, td for data and for cells acting as both - </xs:documentation> - </xs:annotation> - - <xs:element name="th"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Flow"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="abbr" type="Text"/> - <xs:attribute name="axis"/> - <xs:attribute name="headers" type="xs:IDREFS"/> - <xs:attribute name="scope" type="Scope"/> - <xs:attribute name="rowspan" default="1" type="Number"/> - <xs:attribute name="colspan" default="1" type="Number"/> - <xs:attributeGroup ref="cellhalign"/> - <xs:attributeGroup ref="cellvalign"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - - <xs:element name="td"> - <xs:complexType mixed="true"> - <xs:complexContent> - <xs:extension base="Flow"> - <xs:attributeGroup ref="attrs"/> - <xs:attribute name="abbr" type="Text"/> - <xs:attribute name="axis"/> - <xs:attribute name="headers" type="xs:IDREFS"/> - <xs:attribute name="scope" type="Scope"/> - <xs:attribute name="rowspan" default="1" type="Number"/> - <xs:attribute name="colspan" default="1" type="Number"/> - <xs:attributeGroup ref="cellhalign"/> - <xs:attributeGroup ref="cellvalign"/> - </xs:extension> - </xs:complexContent> - </xs:complexType> - </xs:element> - -</xs:schema> diff --git a/branches/cpp-M1/sdo/runtime/core/test/xhtml_in.xml b/branches/cpp-M1/sdo/runtime/core/test/xhtml_in.xml deleted file mode 100644 index 73e91260a8..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/xhtml_in.xml +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - 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. - --> - - <feed xmlns="http://www.w3.org/2005/Atom"> - <title type="text">dive into mark</title> - <subtitle type="html"> - A <em>lot</em> of effort - went into making this effortless - </subtitle> - <updated>2005-07-31T12:29:29Z</updated> - <id>tag:example.org,2003:3</id> - <link rel="alternate" type="text/html" hreflang="en" href="http://example.org/"/> - <link rel="self" type="application/atom+xml" href="http://example.org/feed.atom"/> - <rights>Copyright (c) 2003, Mark Pilgrim</rights> - <generator uri="http://www.example.com/" version="1.0"> - Example Toolkit - </generator> - <entry> - <title>Atom draft-07 snapshot</title> - <link rel="alternate" type="text/html" href="http://example.org/2005/04/02/atom"/> - <link rel="enclosure" type="audio/mpeg" length="1337" href="http://example.org/audio/ph34r_my_podcast.mp3"/> - <id>tag:example.org,2003:3.2397</id> - <updated>2005-07-31T12:29:29Z</updated> - <published>2003-12-13T08:29:29-04:00</published> - <author> - <name>Mark Pilgrim</name> - <uri>http://example.org/</uri> - <email>f8dy@example.com</email> - </author> - <contributor> - <name>Sam Ruby</name> - </contributor> - <contributor> - <name>Joe Gregorio</name> - </contributor> - <content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/"> - <div xmlns="http://www.w3.org/1999/xhtml"> - <p><i>[Update: The Atom draft is finished.]</i></p> - <div class="myclass"><p>Hello</p></div> - </div> - </content> - </entry> - </feed>
\ No newline at end of file diff --git a/branches/cpp-M1/sdo/runtime/core/test/xhtml_out.txt b/branches/cpp-M1/sdo/runtime/core/test/xhtml_out.txt deleted file mode 100644 index d485768c7e..0000000000 --- a/branches/cpp-M1/sdo/runtime/core/test/xhtml_out.txt +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<feed xmlns="http://www.w3.org/2005/Atom" xsi:type="feedType" xmlns:tns2="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://www.w3.org/2005/Atom"> - <title type="text">dive into mark</title> - <subtitle type="html"> - A <em>lot</em> of effort - went into making this effortless - </subtitle> - <updated>2005-07-31T12:29:29Z</updated> - <id>tag:example.org,2003:3</id> - <link href="http://example.org/" rel="alternate" type="text/html" hreflang="en"></link> - <link href="http://example.org/feed.atom" rel="self" type="application/atom+xml"></link> - <rights>Copyright (c) 2003, Mark Pilgrim</rights> - <generator uri="http://www.example.com/" version="1.0"> - Example Toolkit - </generator> - <entry> - <title>Atom draft-07 snapshot</title> - <link href="http://example.org/2005/04/02/atom" rel="alternate" type="text/html"></link> - <link href="http://example.org/audio/ph34r_my_podcast.mp3" rel="enclosure" type="audio/mpeg" length="1337"></link> - <id>tag:example.org,2003:3.2397</id> - <updated>2005-07-31T12:29:29Z</updated> - <published>2003-12-13T08:29:29-04:00</published> - <author> - <name>Mark Pilgrim</name> - <uri>http://example.org/</uri> - <email>f8dy@example.com</email> - </author> - <contributor> - <name>Sam Ruby</name> - </contributor> - <contributor> - <name>Joe Gregorio</name> - </contributor> - <content type="xhtml" lang="en" base="http://diveintomark.org/"><lang>en</lang><base>http://diveintomark.org/</base> - <tns2:div xsi:type="div"> - <tns2:p><tns2:i>[Update: The Atom draft is finished.]</tns2:i></tns2:p> - <tns2:div class="myclass"><tns2:p>Hello</tns2:p></tns2:div> - </tns2:div> - </content> - </entry> - </feed> |