tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From edslatt...@apache.org
Subject svn commit: r366158 [3/25] - in /incubator/tuscany/cpp/sdo: ./ bin/ dependencies/ include/ include/commonj/ include/commonj/sdo/ lib/ projects/ projects/tuscany_sdo/ projects/tuscany_sdo/sdo_runtime/ projects/tuscany_sdo/sdo_samples/ projects/tuscany_s...
Date Thu, 05 Jan 2006 10:58:55 GMT
Added: incubator/tuscany/cpp/sdo/runtime/core/src/Debug/commonj/sdo/subdir.mk
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/Debug/commonj/sdo/subdir.mk?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/Debug/commonj/sdo/subdir.mk (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/Debug/commonj/sdo/subdir.mk Thu Jan  5 02:55:00 2006
@@ -0,0 +1,239 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables 
+CPP_SRCS += \
+$(ROOT)/commonj/sdo/ChangeSummary.cpp \
+$(ROOT)/commonj/sdo/ChangeSummaryBuilder.cpp \
+$(ROOT)/commonj/sdo/ChangeSummaryImpl.cpp \
+$(ROOT)/commonj/sdo/ChangedDataObjectListImpl.cpp \
+$(ROOT)/commonj/sdo/CopyHelper.cpp \
+$(ROOT)/commonj/sdo/DASProperty.cpp \
+$(ROOT)/commonj/sdo/DASType.cpp \
+$(ROOT)/commonj/sdo/DASValue.cpp \
+$(ROOT)/commonj/sdo/DASValues.cpp \
+$(ROOT)/commonj/sdo/DataFactory.cpp \
+$(ROOT)/commonj/sdo/DataFactoryImpl.cpp \
+$(ROOT)/commonj/sdo/DataGraph.cpp \
+$(ROOT)/commonj/sdo/DataGraphImpl.cpp \
+$(ROOT)/commonj/sdo/DataObject.cpp \
+$(ROOT)/commonj/sdo/DataObjectImpl.cpp \
+$(ROOT)/commonj/sdo/DataObjectInstance.cpp \
+$(ROOT)/commonj/sdo/DataObjectList.cpp \
+$(ROOT)/commonj/sdo/DataObjectListImpl.cpp \
+$(ROOT)/commonj/sdo/DefaultLogWriter.cpp \
+$(ROOT)/commonj/sdo/EqualityHelper.cpp \
+$(ROOT)/commonj/sdo/HelperProvider.cpp \
+$(ROOT)/commonj/sdo/LogWriter.cpp \
+$(ROOT)/commonj/sdo/Logger.cpp \
+$(ROOT)/commonj/sdo/ParserErrorSetter.cpp \
+$(ROOT)/commonj/sdo/Property.cpp \
+$(ROOT)/commonj/sdo/PropertyDefinition.cpp \
+$(ROOT)/commonj/sdo/PropertyImpl.cpp \
+$(ROOT)/commonj/sdo/PropertyList.cpp \
+$(ROOT)/commonj/sdo/PropertySetting.cpp \
+$(ROOT)/commonj/sdo/RefCountingObject.cpp \
+$(ROOT)/commonj/sdo/RefCountingPointer.cpp \
+$(ROOT)/commonj/sdo/SAX2Attribute.cpp \
+$(ROOT)/commonj/sdo/SAX2Attributes.cpp \
+$(ROOT)/commonj/sdo/SAX2Namespaces.cpp \
+$(ROOT)/commonj/sdo/SAX2Parser.cpp \
+$(ROOT)/commonj/sdo/SDODate.cpp \
+$(ROOT)/commonj/sdo/SDORuntimeException.cpp \
+$(ROOT)/commonj/sdo/SDOSAX2Parser.cpp \
+$(ROOT)/commonj/sdo/SDOSchemaSAX2Parser.cpp \
+$(ROOT)/commonj/sdo/SDOUtils.cpp \
+$(ROOT)/commonj/sdo/SDOXMLBufferWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXMLFileWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXMLStreamWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXMLString.cpp \
+$(ROOT)/commonj/sdo/SDOXMLWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXSDBufferWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXSDFileWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXSDStreamWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXSDWriter.cpp \
+$(ROOT)/commonj/sdo/SchemaInfo.cpp \
+$(ROOT)/commonj/sdo/SdoCheck.cpp \
+$(ROOT)/commonj/sdo/SdoRuntime.cpp \
+$(ROOT)/commonj/sdo/Sequence.cpp \
+$(ROOT)/commonj/sdo/SequenceImpl.cpp \
+$(ROOT)/commonj/sdo/Setting.cpp \
+$(ROOT)/commonj/sdo/SettingList.cpp \
+$(ROOT)/commonj/sdo/Type.cpp \
+$(ROOT)/commonj/sdo/TypeDefinition.cpp \
+$(ROOT)/commonj/sdo/TypeDefinitions.cpp \
+$(ROOT)/commonj/sdo/TypeImpl.cpp \
+$(ROOT)/commonj/sdo/TypeList.cpp \
+$(ROOT)/commonj/sdo/XMLDocument.cpp \
+$(ROOT)/commonj/sdo/XMLDocumentImpl.cpp \
+$(ROOT)/commonj/sdo/XMLHelper.cpp \
+$(ROOT)/commonj/sdo/XMLHelperImpl.cpp \
+$(ROOT)/commonj/sdo/XMLQName.cpp \
+$(ROOT)/commonj/sdo/XSDHelper.cpp \
+$(ROOT)/commonj/sdo/XSDHelperImpl.cpp \
+$(ROOT)/commonj/sdo/XSDPropertyInfo.cpp \
+$(ROOT)/commonj/sdo/XSDTypeInfo.cpp \
+$(ROOT)/commonj/sdo/XpathHelper.cpp 
+
+OBJS += \
+./commonj/sdo/ChangeSummary.o \
+./commonj/sdo/ChangeSummaryBuilder.o \
+./commonj/sdo/ChangeSummaryImpl.o \
+./commonj/sdo/ChangedDataObjectListImpl.o \
+./commonj/sdo/CopyHelper.o \
+./commonj/sdo/DASProperty.o \
+./commonj/sdo/DASType.o \
+./commonj/sdo/DASValue.o \
+./commonj/sdo/DASValues.o \
+./commonj/sdo/DataFactory.o \
+./commonj/sdo/DataFactoryImpl.o \
+./commonj/sdo/DataGraph.o \
+./commonj/sdo/DataGraphImpl.o \
+./commonj/sdo/DataObject.o \
+./commonj/sdo/DataObjectImpl.o \
+./commonj/sdo/DataObjectInstance.o \
+./commonj/sdo/DataObjectList.o \
+./commonj/sdo/DataObjectListImpl.o \
+./commonj/sdo/DefaultLogWriter.o \
+./commonj/sdo/EqualityHelper.o \
+./commonj/sdo/HelperProvider.o \
+./commonj/sdo/LogWriter.o \
+./commonj/sdo/Logger.o \
+./commonj/sdo/ParserErrorSetter.o \
+./commonj/sdo/Property.o \
+./commonj/sdo/PropertyDefinition.o \
+./commonj/sdo/PropertyImpl.o \
+./commonj/sdo/PropertyList.o \
+./commonj/sdo/PropertySetting.o \
+./commonj/sdo/RefCountingObject.o \
+./commonj/sdo/RefCountingPointer.o \
+./commonj/sdo/SAX2Attribute.o \
+./commonj/sdo/SAX2Attributes.o \
+./commonj/sdo/SAX2Namespaces.o \
+./commonj/sdo/SAX2Parser.o \
+./commonj/sdo/SDODate.o \
+./commonj/sdo/SDORuntimeException.o \
+./commonj/sdo/SDOSAX2Parser.o \
+./commonj/sdo/SDOSchemaSAX2Parser.o \
+./commonj/sdo/SDOUtils.o \
+./commonj/sdo/SDOXMLBufferWriter.o \
+./commonj/sdo/SDOXMLFileWriter.o \
+./commonj/sdo/SDOXMLStreamWriter.o \
+./commonj/sdo/SDOXMLString.o \
+./commonj/sdo/SDOXMLWriter.o \
+./commonj/sdo/SDOXSDBufferWriter.o \
+./commonj/sdo/SDOXSDFileWriter.o \
+./commonj/sdo/SDOXSDStreamWriter.o \
+./commonj/sdo/SDOXSDWriter.o \
+./commonj/sdo/SchemaInfo.o \
+./commonj/sdo/SdoCheck.o \
+./commonj/sdo/SdoRuntime.o \
+./commonj/sdo/Sequence.o \
+./commonj/sdo/SequenceImpl.o \
+./commonj/sdo/Setting.o \
+./commonj/sdo/SettingList.o \
+./commonj/sdo/Type.o \
+./commonj/sdo/TypeDefinition.o \
+./commonj/sdo/TypeDefinitions.o \
+./commonj/sdo/TypeImpl.o \
+./commonj/sdo/TypeList.o \
+./commonj/sdo/XMLDocument.o \
+./commonj/sdo/XMLDocumentImpl.o \
+./commonj/sdo/XMLHelper.o \
+./commonj/sdo/XMLHelperImpl.o \
+./commonj/sdo/XMLQName.o \
+./commonj/sdo/XSDHelper.o \
+./commonj/sdo/XSDHelperImpl.o \
+./commonj/sdo/XSDPropertyInfo.o \
+./commonj/sdo/XSDTypeInfo.o \
+./commonj/sdo/XpathHelper.o 
+
+DEPS += \
+${addprefix ./commonj/sdo/, \
+ChangeSummary.d \
+ChangeSummaryBuilder.d \
+ChangeSummaryImpl.d \
+ChangedDataObjectListImpl.d \
+CopyHelper.d \
+DASProperty.d \
+DASType.d \
+DASValue.d \
+DASValues.d \
+DataFactory.d \
+DataFactoryImpl.d \
+DataGraph.d \
+DataGraphImpl.d \
+DataObject.d \
+DataObjectImpl.d \
+DataObjectInstance.d \
+DataObjectList.d \
+DataObjectListImpl.d \
+DefaultLogWriter.d \
+EqualityHelper.d \
+HelperProvider.d \
+LogWriter.d \
+Logger.d \
+ParserErrorSetter.d \
+Property.d \
+PropertyDefinition.d \
+PropertyImpl.d \
+PropertyList.d \
+PropertySetting.d \
+RefCountingObject.d \
+RefCountingPointer.d \
+SAX2Attribute.d \
+SAX2Attributes.d \
+SAX2Namespaces.d \
+SAX2Parser.d \
+SDODate.d \
+SDORuntimeException.d \
+SDOSAX2Parser.d \
+SDOSchemaSAX2Parser.d \
+SDOUtils.d \
+SDOXMLBufferWriter.d \
+SDOXMLFileWriter.d \
+SDOXMLStreamWriter.d \
+SDOXMLString.d \
+SDOXMLWriter.d \
+SDOXSDBufferWriter.d \
+SDOXSDFileWriter.d \
+SDOXSDStreamWriter.d \
+SDOXSDWriter.d \
+SchemaInfo.d \
+SdoCheck.d \
+SdoRuntime.d \
+Sequence.d \
+SequenceImpl.d \
+Setting.d \
+SettingList.d \
+Type.d \
+TypeDefinition.d \
+TypeDefinitions.d \
+TypeImpl.d \
+TypeList.d \
+XMLDocument.d \
+XMLDocumentImpl.d \
+XMLHelper.d \
+XMLHelperImpl.d \
+XMLQName.d \
+XSDHelper.d \
+XSDHelperImpl.d \
+XSDPropertyInfo.d \
+XSDTypeInfo.d \
+XpathHelper.d \
+}
+
+
+# Each subdirectory must supply rules for building sources it contributes
+commonj/sdo/%.o: $(ROOT)/commonj/sdo/%.cpp
+	@echo 'Building file: $<'
+	@echo 'Invoking: GCC C++ Compiler'
+	@echo g++ -D_DEBUG -I${SDO4CPP_HOME}/runtime/core/src -I/usr/include/libxml2 -O0 -g3 -c -fmessage-length=0 -o$@ $<
+	@g++ -D_DEBUG -I${SDO4CPP_HOME}/runtime/core/src -I/usr/include/libxml2 -O0 -g3 -c -fmessage-length=0 -o$@ $< && \
+	echo -n $(@:%.o=%.d) $(dir $@) > $(@:%.o=%.d) && \
+	g++ -MM -MG -P -w -D_DEBUG -I${SDO4CPP_HOME}/runtime/core/src -I/usr/include/libxml2 -O0 -g3 -c -fmessage-length=0  $< >> $(@:%.o=%.d)
+	@echo 'Finished building: $<'
+	@echo ' '
+
+

Added: incubator/tuscany/cpp/sdo/runtime/core/src/Debug/makefile
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/Debug/makefile?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/Debug/makefile (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/Debug/makefile Thu Jan  5 02:55:00 2006
@@ -0,0 +1,43 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+ROOT := ..
+
+-include $(ROOT)/makefile.init
+
+RM := rm -rf
+
+# All of the sources participating in the build are defined here
+-include sources.mk
+-include $(SUBDIRS:%=%/subdir.mk)
+-include objects.mk
+ifneq ($(strip $(DEPS)),)
+-include $(DEPS)
+endif
+
+-include $(ROOT)/makefile.defs
+
+# Add inputs and outputs from these tool invocations to the build variables 
+
+# All Target
+all: libtuscany_sdo.so
+
+# Tool invocations
+libtuscany_sdo.so: $(OBJS) $(USER_OBJS)
+	@echo 'Building target: $@'
+	@echo 'Invoking: GCC C++ Linker'
+	@echo g++ -shared -olibtuscany_sdo.so $(OBJS) $(USER_OBJS) $(LIBS)
+	@g++ -shared -olibtuscany_sdo.so $(OBJS) $(USER_OBJS) $(LIBS)
+	@echo 'Finished building target: $@'
+	@echo ' '
+
+# Other Targets
+clean:
+	-$(RM) $(OBJS)$(DEPS)$(LIBRARIES) libtuscany_sdo.so
+	-@echo ' '
+
+.PHONY: all clean dependents
+.SECONDARY:
+
+-include $(ROOT)/makefile.targets

Added: incubator/tuscany/cpp/sdo/runtime/core/src/Debug/objects.mk
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/Debug/objects.mk?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/Debug/objects.mk (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/Debug/objects.mk Thu Jan  5 02:55:00 2006
@@ -0,0 +1,7 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+LIBS :=
+
+USER_OBJS :=
\ No newline at end of file

Added: incubator/tuscany/cpp/sdo/runtime/core/src/Debug/sources.mk
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/Debug/sources.mk?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/Debug/sources.mk (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/Debug/sources.mk Thu Jan  5 02:55:00 2006
@@ -0,0 +1,20 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+C_UPPER_SRCS := 
+CPP_SRCS := 
+O_SRCS := 
+ASM_SRCS := 
+S_SRCS := 
+CXX_SRCS := 
+CC_SRCS := 
+OBJ_SRCS := 
+OBJS := 
+DEPS := 
+LIBRARIES := 
+
+# Every subdirectory with source files must be described here
+SUBDIRS := \
+commonj/sdo \
+

Added: incubator/tuscany/cpp/sdo/runtime/core/src/Release/commonj/sdo/subdir.mk
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/Release/commonj/sdo/subdir.mk?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/Release/commonj/sdo/subdir.mk (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/Release/commonj/sdo/subdir.mk Thu Jan  5 02:55:00 2006
@@ -0,0 +1,239 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables 
+CPP_SRCS += \
+$(ROOT)/commonj/sdo/ChangeSummary.cpp \
+$(ROOT)/commonj/sdo/ChangeSummaryBuilder.cpp \
+$(ROOT)/commonj/sdo/ChangeSummaryImpl.cpp \
+$(ROOT)/commonj/sdo/ChangedDataObjectListImpl.cpp \
+$(ROOT)/commonj/sdo/CopyHelper.cpp \
+$(ROOT)/commonj/sdo/DASProperty.cpp \
+$(ROOT)/commonj/sdo/DASType.cpp \
+$(ROOT)/commonj/sdo/DASValue.cpp \
+$(ROOT)/commonj/sdo/DASValues.cpp \
+$(ROOT)/commonj/sdo/DataFactory.cpp \
+$(ROOT)/commonj/sdo/DataFactoryImpl.cpp \
+$(ROOT)/commonj/sdo/DataGraph.cpp \
+$(ROOT)/commonj/sdo/DataGraphImpl.cpp \
+$(ROOT)/commonj/sdo/DataObject.cpp \
+$(ROOT)/commonj/sdo/DataObjectImpl.cpp \
+$(ROOT)/commonj/sdo/DataObjectInstance.cpp \
+$(ROOT)/commonj/sdo/DataObjectList.cpp \
+$(ROOT)/commonj/sdo/DataObjectListImpl.cpp \
+$(ROOT)/commonj/sdo/DefaultLogWriter.cpp \
+$(ROOT)/commonj/sdo/EqualityHelper.cpp \
+$(ROOT)/commonj/sdo/HelperProvider.cpp \
+$(ROOT)/commonj/sdo/LogWriter.cpp \
+$(ROOT)/commonj/sdo/Logger.cpp \
+$(ROOT)/commonj/sdo/ParserErrorSetter.cpp \
+$(ROOT)/commonj/sdo/Property.cpp \
+$(ROOT)/commonj/sdo/PropertyDefinition.cpp \
+$(ROOT)/commonj/sdo/PropertyImpl.cpp \
+$(ROOT)/commonj/sdo/PropertyList.cpp \
+$(ROOT)/commonj/sdo/PropertySetting.cpp \
+$(ROOT)/commonj/sdo/RefCountingObject.cpp \
+$(ROOT)/commonj/sdo/RefCountingPointer.cpp \
+$(ROOT)/commonj/sdo/SAX2Attribute.cpp \
+$(ROOT)/commonj/sdo/SAX2Attributes.cpp \
+$(ROOT)/commonj/sdo/SAX2Namespaces.cpp \
+$(ROOT)/commonj/sdo/SAX2Parser.cpp \
+$(ROOT)/commonj/sdo/SDODate.cpp \
+$(ROOT)/commonj/sdo/SDORuntimeException.cpp \
+$(ROOT)/commonj/sdo/SDOSAX2Parser.cpp \
+$(ROOT)/commonj/sdo/SDOSchemaSAX2Parser.cpp \
+$(ROOT)/commonj/sdo/SDOUtils.cpp \
+$(ROOT)/commonj/sdo/SDOXMLBufferWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXMLFileWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXMLStreamWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXMLString.cpp \
+$(ROOT)/commonj/sdo/SDOXMLWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXSDBufferWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXSDFileWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXSDStreamWriter.cpp \
+$(ROOT)/commonj/sdo/SDOXSDWriter.cpp \
+$(ROOT)/commonj/sdo/SchemaInfo.cpp \
+$(ROOT)/commonj/sdo/SdoCheck.cpp \
+$(ROOT)/commonj/sdo/SdoRuntime.cpp \
+$(ROOT)/commonj/sdo/Sequence.cpp \
+$(ROOT)/commonj/sdo/SequenceImpl.cpp \
+$(ROOT)/commonj/sdo/Setting.cpp \
+$(ROOT)/commonj/sdo/SettingList.cpp \
+$(ROOT)/commonj/sdo/Type.cpp \
+$(ROOT)/commonj/sdo/TypeDefinition.cpp \
+$(ROOT)/commonj/sdo/TypeDefinitions.cpp \
+$(ROOT)/commonj/sdo/TypeImpl.cpp \
+$(ROOT)/commonj/sdo/TypeList.cpp \
+$(ROOT)/commonj/sdo/XMLDocument.cpp \
+$(ROOT)/commonj/sdo/XMLDocumentImpl.cpp \
+$(ROOT)/commonj/sdo/XMLHelper.cpp \
+$(ROOT)/commonj/sdo/XMLHelperImpl.cpp \
+$(ROOT)/commonj/sdo/XMLQName.cpp \
+$(ROOT)/commonj/sdo/XSDHelper.cpp \
+$(ROOT)/commonj/sdo/XSDHelperImpl.cpp \
+$(ROOT)/commonj/sdo/XSDPropertyInfo.cpp \
+$(ROOT)/commonj/sdo/XSDTypeInfo.cpp \
+$(ROOT)/commonj/sdo/XpathHelper.cpp 
+
+OBJS += \
+./commonj/sdo/ChangeSummary.o \
+./commonj/sdo/ChangeSummaryBuilder.o \
+./commonj/sdo/ChangeSummaryImpl.o \
+./commonj/sdo/ChangedDataObjectListImpl.o \
+./commonj/sdo/CopyHelper.o \
+./commonj/sdo/DASProperty.o \
+./commonj/sdo/DASType.o \
+./commonj/sdo/DASValue.o \
+./commonj/sdo/DASValues.o \
+./commonj/sdo/DataFactory.o \
+./commonj/sdo/DataFactoryImpl.o \
+./commonj/sdo/DataGraph.o \
+./commonj/sdo/DataGraphImpl.o \
+./commonj/sdo/DataObject.o \
+./commonj/sdo/DataObjectImpl.o \
+./commonj/sdo/DataObjectInstance.o \
+./commonj/sdo/DataObjectList.o \
+./commonj/sdo/DataObjectListImpl.o \
+./commonj/sdo/DefaultLogWriter.o \
+./commonj/sdo/EqualityHelper.o \
+./commonj/sdo/HelperProvider.o \
+./commonj/sdo/LogWriter.o \
+./commonj/sdo/Logger.o \
+./commonj/sdo/ParserErrorSetter.o \
+./commonj/sdo/Property.o \
+./commonj/sdo/PropertyDefinition.o \
+./commonj/sdo/PropertyImpl.o \
+./commonj/sdo/PropertyList.o \
+./commonj/sdo/PropertySetting.o \
+./commonj/sdo/RefCountingObject.o \
+./commonj/sdo/RefCountingPointer.o \
+./commonj/sdo/SAX2Attribute.o \
+./commonj/sdo/SAX2Attributes.o \
+./commonj/sdo/SAX2Namespaces.o \
+./commonj/sdo/SAX2Parser.o \
+./commonj/sdo/SDODate.o \
+./commonj/sdo/SDORuntimeException.o \
+./commonj/sdo/SDOSAX2Parser.o \
+./commonj/sdo/SDOSchemaSAX2Parser.o \
+./commonj/sdo/SDOUtils.o \
+./commonj/sdo/SDOXMLBufferWriter.o \
+./commonj/sdo/SDOXMLFileWriter.o \
+./commonj/sdo/SDOXMLStreamWriter.o \
+./commonj/sdo/SDOXMLString.o \
+./commonj/sdo/SDOXMLWriter.o \
+./commonj/sdo/SDOXSDBufferWriter.o \
+./commonj/sdo/SDOXSDFileWriter.o \
+./commonj/sdo/SDOXSDStreamWriter.o \
+./commonj/sdo/SDOXSDWriter.o \
+./commonj/sdo/SchemaInfo.o \
+./commonj/sdo/SdoCheck.o \
+./commonj/sdo/SdoRuntime.o \
+./commonj/sdo/Sequence.o \
+./commonj/sdo/SequenceImpl.o \
+./commonj/sdo/Setting.o \
+./commonj/sdo/SettingList.o \
+./commonj/sdo/Type.o \
+./commonj/sdo/TypeDefinition.o \
+./commonj/sdo/TypeDefinitions.o \
+./commonj/sdo/TypeImpl.o \
+./commonj/sdo/TypeList.o \
+./commonj/sdo/XMLDocument.o \
+./commonj/sdo/XMLDocumentImpl.o \
+./commonj/sdo/XMLHelper.o \
+./commonj/sdo/XMLHelperImpl.o \
+./commonj/sdo/XMLQName.o \
+./commonj/sdo/XSDHelper.o \
+./commonj/sdo/XSDHelperImpl.o \
+./commonj/sdo/XSDPropertyInfo.o \
+./commonj/sdo/XSDTypeInfo.o \
+./commonj/sdo/XpathHelper.o 
+
+DEPS += \
+${addprefix ./commonj/sdo/, \
+ChangeSummary.d \
+ChangeSummaryBuilder.d \
+ChangeSummaryImpl.d \
+ChangedDataObjectListImpl.d \
+CopyHelper.d \
+DASProperty.d \
+DASType.d \
+DASValue.d \
+DASValues.d \
+DataFactory.d \
+DataFactoryImpl.d \
+DataGraph.d \
+DataGraphImpl.d \
+DataObject.d \
+DataObjectImpl.d \
+DataObjectInstance.d \
+DataObjectList.d \
+DataObjectListImpl.d \
+DefaultLogWriter.d \
+EqualityHelper.d \
+HelperProvider.d \
+LogWriter.d \
+Logger.d \
+ParserErrorSetter.d \
+Property.d \
+PropertyDefinition.d \
+PropertyImpl.d \
+PropertyList.d \
+PropertySetting.d \
+RefCountingObject.d \
+RefCountingPointer.d \
+SAX2Attribute.d \
+SAX2Attributes.d \
+SAX2Namespaces.d \
+SAX2Parser.d \
+SDODate.d \
+SDORuntimeException.d \
+SDOSAX2Parser.d \
+SDOSchemaSAX2Parser.d \
+SDOUtils.d \
+SDOXMLBufferWriter.d \
+SDOXMLFileWriter.d \
+SDOXMLStreamWriter.d \
+SDOXMLString.d \
+SDOXMLWriter.d \
+SDOXSDBufferWriter.d \
+SDOXSDFileWriter.d \
+SDOXSDStreamWriter.d \
+SDOXSDWriter.d \
+SchemaInfo.d \
+SdoCheck.d \
+SdoRuntime.d \
+Sequence.d \
+SequenceImpl.d \
+Setting.d \
+SettingList.d \
+Type.d \
+TypeDefinition.d \
+TypeDefinitions.d \
+TypeImpl.d \
+TypeList.d \
+XMLDocument.d \
+XMLDocumentImpl.d \
+XMLHelper.d \
+XMLHelperImpl.d \
+XMLQName.d \
+XSDHelper.d \
+XSDHelperImpl.d \
+XSDPropertyInfo.d \
+XSDTypeInfo.d \
+XpathHelper.d \
+}
+
+
+# Each subdirectory must supply rules for building sources it contributes
+commonj/sdo/%.o: $(ROOT)/commonj/sdo/%.cpp
+	@echo 'Building file: $<'
+	@echo 'Invoking: GCC C++ Compiler'
+	@echo g++ -I${SDO4CPP_HOME}/runtime/core/src -I/usr/include/libxml2 -O3 -c -fmessage-length=0 -o$@ $<
+	@g++ -I${SDO4CPP_HOME}/runtime/core/src -I/usr/include/libxml2 -O3 -c -fmessage-length=0 -o$@ $< && \
+	echo -n $(@:%.o=%.d) $(dir $@) > $(@:%.o=%.d) && \
+	g++ -MM -MG -P -w -I${SDO4CPP_HOME}/runtime/core/src -I/usr/include/libxml2 -O3 -c -fmessage-length=0  $< >> $(@:%.o=%.d)
+	@echo 'Finished building: $<'
+	@echo ' '
+
+

Added: incubator/tuscany/cpp/sdo/runtime/core/src/Release/makefile
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/Release/makefile?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/Release/makefile (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/Release/makefile Thu Jan  5 02:55:00 2006
@@ -0,0 +1,43 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+ROOT := ..
+
+-include $(ROOT)/makefile.init
+
+RM := rm -rf
+
+# All of the sources participating in the build are defined here
+-include sources.mk
+-include $(SUBDIRS:%=%/subdir.mk)
+-include objects.mk
+ifneq ($(strip $(DEPS)),)
+-include $(DEPS)
+endif
+
+-include $(ROOT)/makefile.defs
+
+# Add inputs and outputs from these tool invocations to the build variables 
+
+# All Target
+all: libtuscany_sdo.so
+
+# Tool invocations
+libtuscany_sdo.so: $(OBJS) $(USER_OBJS)
+	@echo 'Building target: $@'
+	@echo 'Invoking: GCC C++ Linker'
+	@echo g++ -shared -olibtuscany_sdo.so $(OBJS) $(USER_OBJS) $(LIBS)
+	@g++ -shared -olibtuscany_sdo.so $(OBJS) $(USER_OBJS) $(LIBS)
+	@echo 'Finished building target: $@'
+	@echo ' '
+
+# Other Targets
+clean:
+	-$(RM) $(OBJS)$(DEPS)$(LIBRARIES) libtuscany_sdo.so
+	-@echo ' '
+
+.PHONY: all clean dependents
+.SECONDARY:
+
+-include $(ROOT)/makefile.targets

Added: incubator/tuscany/cpp/sdo/runtime/core/src/Release/objects.mk
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/Release/objects.mk?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/Release/objects.mk (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/Release/objects.mk Thu Jan  5 02:55:00 2006
@@ -0,0 +1,7 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+LIBS :=
+
+USER_OBJS :=
\ No newline at end of file

Added: incubator/tuscany/cpp/sdo/runtime/core/src/Release/sources.mk
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/Release/sources.mk?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/Release/sources.mk (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/Release/sources.mk Thu Jan  5 02:55:00 2006
@@ -0,0 +1,20 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+C_UPPER_SRCS := 
+CPP_SRCS := 
+O_SRCS := 
+ASM_SRCS := 
+S_SRCS := 
+CXX_SRCS := 
+CC_SRCS := 
+OBJ_SRCS := 
+OBJS := 
+DEPS := 
+LIBRARIES := 
+
+# Every subdirectory with source files must be described here
+SUBDIRS := \
+commonj/sdo \
+

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp Thu Jan  5 02:55:00 2006
@@ -0,0 +1,28 @@
+/*
+ *
+ *  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{
+
+};
+};
+

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h Thu Jan  5 02:55:00 2006
@@ -0,0 +1,208 @@
+/*
+ *
+ *  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"
+
+
+using namespace std;
+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_

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummary.h
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp Thu Jan  5 02:55:00 2006
@@ -0,0 +1,1144 @@
+/*
+ *
+ *  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
+

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h Thu Jan  5 02:55:00 2006
@@ -0,0 +1,300 @@
+/*
+ *
+ *  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_

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/ChangeSummaryBuilder.h
------------------------------------------------------------------------------
    svn:keywords = Rev,Date



Mime
View raw message