You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2005/01/20 10:51:28 UTC
cvs commit: ws-axis/c/src/soap/xsd/constraints IConstrainingFacet.hpp Pattern.cpp Pattern.hpp WhiteSpace.cpp WhiteSpace.hpp
dicka 2005/01/20 01:51:27
Modified: c/build buildClient.xml buildServerEngine.xml
c/src/soap Makefile.am
c/src/soap/xsd AnyURI.cpp AnyURI.hpp Base64Binary.cpp
Boolean.cpp Boolean.hpp Date.cpp Date.hpp
DateTime.cpp DateTime.hpp Decimal.cpp Decimal.hpp
Double.cpp Double.hpp Duration.cpp Duration.hpp
Float.cpp Float.hpp HexBinary.cpp
IAnySimpleType.cpp IAnySimpleType.hpp Integer.cpp
NOTATION.cpp NOTATION.hpp String.cpp String.hpp
Time.cpp Time.hpp XSD_QName.cpp XSD_QName.hpp
c/vc AxisClientDLL.dsp AxisServerDLL.dsp
Distribution.dsw
Added: c/src/soap/xsd/constraints IConstrainingFacet.hpp
Pattern.cpp Pattern.hpp WhiteSpace.cpp
WhiteSpace.hpp
Log:
Initial work on adding constraint validation/processing to XSD SOAP objects.
Submitted by: Adrian Dick
Revision Changes Path
1.6 +2 -0 ws-axis/c/build/buildClient.xml
Index: buildClient.xml
===================================================================
RCS file: /home/cvs/ws-axis/c/build/buildClient.xml,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- buildClient.xml 11 Jan 2005 09:53:18 -0000 1.5
+++ buildClient.xml 20 Jan 2005 09:51:23 -0000 1.6
@@ -45,6 +45,7 @@
<include name="soap/*.cpp"/>
<include name="soap/*.c"/>
<include name="soap/xsd/*.cpp"/>
+ <include name="soap/xsd/constraints/*.cpp"/>
<include name="wsdd/*.cpp"/>
<include name="xml/*.cpp"/>
<include name="transport/axis/AxisTransportException.cpp"/>
@@ -78,6 +79,7 @@
<include name="soap/*.cpp"/>
<include name="soap/*.c"/>
<include name="soap/xsd/*.cpp"/>
+ <include name="soap/xsd/constraints/*.cpp"/>
<include name="wsdd/*.cpp"/>
<include name="xml/*.cpp"/>
<include name="transport/axis/AxisTransportException.cpp"/>
1.4 +2 -0 ws-axis/c/build/buildServerEngine.xml
Index: buildServerEngine.xml
===================================================================
RCS file: /home/cvs/ws-axis/c/build/buildServerEngine.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- buildServerEngine.xml 11 Jan 2005 09:53:18 -0000 1.3
+++ buildServerEngine.xml 20 Jan 2005 09:51:23 -0000 1.4
@@ -38,6 +38,7 @@
<include name="engine/server/*.cpp"/>
<include name="soap/*.cpp"/>
<include name="soap/xsd/*.cpp"/>
+ <include name="soap/xsd/constraints/*.cpp"/>
<include name="soap/*.c"/>
<include name="wsdd/*.cpp"/>
<include name="xml/*.cpp"/>
@@ -70,6 +71,7 @@
<include name="soap/*.cpp"/>
<include name="soap/*.c"/>
<include name="soap/xsd/*.cpp"/>
+ <include name="soap/xsd/constraints/*.cpp"/>
<include name="wsdd/*.cpp"/>
<include name="xml/*.cpp"/>
<include name="transport/axis/AxisTransportException.cpp"/>
1.16 +3 -1 ws-axis/c/src/soap/Makefile.am
Index: Makefile.am
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/Makefile.am,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- Makefile.am 18 Jan 2005 04:13:03 -0000 1.15
+++ Makefile.am 20 Jan 2005 09:51:23 -0000 1.16
@@ -38,7 +38,9 @@
xsd/NOTATION.cpp \
xsd/String.cpp \
xsd/Time.cpp \
- xsd/XSD_QName.cpp
+ xsd/XSD_QName.cpp \
+ xsd/constraints/WhiteSpace.cpp \
+ xsd/constraints/Pattern.cpp
libsoap_la_LIBADD = $(LDFLAGS)
INCLUDES = -I../../include
1.3 +6 -7 ws-axis/c/src/soap/xsd/AnyURI.cpp
Index: AnyURI.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/AnyURI.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AnyURI.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ AnyURI.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -21,13 +21,7 @@
AxisString valueAsString = value;
AxisChar* serializedValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
@@ -42,6 +36,11 @@
m_AnyURI = new char[strlen (valueAsChar) + 1];
strcpy (m_AnyURI, valueAsChar);
return m_AnyURI;
+ }
+
+ WhiteSpace* AnyURI::getWhiteSpace()
+ {
+ return new WhiteSpace(REPLACE);
}
AXIS_CPP_NAMESPACE_END
1.3 +8 -0 ws-axis/c/src/soap/xsd/AnyURI.hpp
Index: AnyURI.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/AnyURI.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AnyURI.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ AnyURI.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -63,6 +63,14 @@
* @return Deserialized AnyURI value.
*/
AxisChar* deserializeAnyURI(const AxisChar* valueAsChar) throw (AxisSoapException);
+
+protected:
+
+ /**
+ * Creates a WhiteSpace object to replace whitespace
+ * @return WhiteSpace object set to replace whitespace
+ */
+ WhiteSpace* getWhiteSpace();
private:
AxisChar* m_AnyURI;
1.5 +1 -7 ws-axis/c/src/soap/xsd/Base64Binary.cpp
Index: Base64Binary.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Base64Binary.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Base64Binary.cpp 20 Jan 2005 04:18:59 -0000 1.4
+++ Base64Binary.cpp 20 Jan 2005 09:51:23 -0000 1.5
@@ -32,13 +32,7 @@
len = apr_base64_encode_binary (serializedValue, value->__ptr, value->__size);
serializedValue[len] = 0;
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
1.3 +6 -7 ws-axis/c/src/soap/xsd/Boolean.cpp
Index: Boolean.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Boolean.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Boolean.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Boolean.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -33,13 +33,7 @@
AxisSprintf (serializedValue, 6, "%s",
(*((int *) (value)) == false_) ? "false" : "true");
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
@@ -59,6 +53,11 @@
{
return false_;
}
+}
+
+WhiteSpace* Boolean::getWhiteSpace()
+{
+ return new WhiteSpace(COLLAPSE);
}
AXIS_CPP_NAMESPACE_END
1.3 +8 -0 ws-axis/c/src/soap/xsd/Boolean.hpp
Index: Boolean.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Boolean.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Boolean.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Boolean.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -59,6 +59,14 @@
* @return Deserialized boolean value.
*/
xsd__boolean deserializeBoolean(const AxisChar* valueAsChar) throw (AxisSoapException);
+
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
};
AXIS_CPP_NAMESPACE_END
1.3 +6 -7 ws-axis/c/src/soap/xsd/Date.cpp
Index: Date.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Date.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Date.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Date.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -21,13 +21,7 @@
AxisChar* serializedValue = new AxisChar[80];
strftime (serializedValue, 80, "%Y-%m-%dZ", value);
- if(m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
@@ -151,5 +145,10 @@
memcpy (m_Date, pTm, sizeof (tm));
return m_Date;
}
+
+ WhiteSpace* Date::getWhiteSpace()
+ {
+ return new WhiteSpace(COLLAPSE);
+ }
AXIS_CPP_NAMESPACE_END
1.3 +8 -0 ws-axis/c/src/soap/xsd/Date.hpp
Index: Date.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Date.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Date.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Date.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -65,6 +65,14 @@
*/
struct tm* deserializeDate(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
struct tm* m_Date;
};
1.5 +6 -7 ws-axis/c/src/soap/xsd/DateTime.cpp
Index: DateTime.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/DateTime.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DateTime.cpp 20 Jan 2005 04:30:07 -0000 1.4
+++ DateTime.cpp 20 Jan 2005 09:51:23 -0000 1.5
@@ -30,13 +30,7 @@
AxisChar* serializedValue = new AxisChar[80];
strftime (serializedValue, 80, "%Y-%m-%dT%H:%M:%SZ", value);
- if(m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
@@ -170,6 +164,11 @@
memcpy (m_DateTime, pTm, sizeof (tm));
return m_DateTime;
+ }
+
+ WhiteSpace* DateTime::getWhiteSpace()
+ {
+ return new WhiteSpace(COLLAPSE);
}
AXIS_CPP_NAMESPACE_END
1.4 +8 -0 ws-axis/c/src/soap/xsd/DateTime.hpp
Index: DateTime.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/DateTime.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DateTime.hpp 20 Jan 2005 04:30:07 -0000 1.3
+++ DateTime.hpp 20 Jan 2005 09:51:23 -0000 1.4
@@ -70,6 +70,14 @@
*/
struct tm* deserializeDateTime(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
struct tm* m_DateTime;
};
1.5 +6 -7 ws-axis/c/src/soap/xsd/Decimal.cpp
Index: Decimal.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Decimal.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Decimal.cpp 20 Jan 2005 04:49:28 -0000 1.4
+++ Decimal.cpp 20 Jan 2005 09:51:23 -0000 1.5
@@ -31,13 +31,7 @@
AxisChar* serializedValue = new char[80];
AxisSprintf (serializedValue, 80, "%f", *value);
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
@@ -55,6 +49,11 @@
*m_Decimal = strtod (valueAsChar, &end);
return m_Decimal;
+}
+
+WhiteSpace* Decimal::getWhiteSpace()
+{
+ return new WhiteSpace(COLLAPSE);
}
AXIS_CPP_NAMESPACE_END
1.4 +8 -0 ws-axis/c/src/soap/xsd/Decimal.hpp
Index: Decimal.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Decimal.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Decimal.hpp 20 Jan 2005 04:39:44 -0000 1.3
+++ Decimal.hpp 20 Jan 2005 09:51:23 -0000 1.4
@@ -69,6 +69,14 @@
*/
double* deserializeDecimal(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
double* m_Decimal;
};
1.3 +7 -8 ws-axis/c/src/soap/xsd/Double.cpp
Index: Double.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Double.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Double.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Double.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -22,14 +22,8 @@
AxisChar* serializedValue = new char[80];
AxisSprintf (serializedValue, 80, "%f", *value);
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
- delete serializedValue;
+ IAnySimpleType::serialize(serializedValue);
+ delete [] serializedValue;
return m_Buf;
}
@@ -46,6 +40,11 @@
*m_Double = strtod (valueAsChar, &end);
return m_Double;
+}
+
+WhiteSpace* Double::getWhiteSpace()
+{
+ return new WhiteSpace(COLLAPSE);
}
AXIS_CPP_NAMESPACE_END
1.3 +8 -0 ws-axis/c/src/soap/xsd/Double.hpp
Index: Double.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Double.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Double.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Double.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -64,6 +64,14 @@
*/
double* deserializeDouble(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
double* m_Double;
};
1.3 +6 -7 ws-axis/c/src/soap/xsd/Duration.cpp
Index: Duration.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Duration.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Duration.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Duration.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -77,13 +77,7 @@
// Convert from String to Char[]
AxisChar* returnValue = (AxisChar*) serializedValue.c_str ();
- if(m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (returnValue) + 1];
- strcpy (m_Buf, returnValue);
+ IAnySimpleType::serialize(returnValue);
return m_Buf;
}
@@ -139,6 +133,11 @@
*m_Duration += secs;
return m_Duration;
+ }
+
+ WhiteSpace* Duration::getWhiteSpace()
+ {
+ return new WhiteSpace(COLLAPSE);
}
AXIS_CPP_NAMESPACE_END
1.3 +8 -0 ws-axis/c/src/soap/xsd/Duration.hpp
Index: Duration.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Duration.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Duration.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Duration.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -65,6 +65,14 @@
*/
long* deserializeDuration(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
long* m_Duration;
};
1.4 +6 -7 ws-axis/c/src/soap/xsd/Float.cpp
Index: Float.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Float.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Float.cpp 20 Jan 2005 03:55:43 -0000 1.3
+++ Float.cpp 20 Jan 2005 09:51:23 -0000 1.4
@@ -28,13 +28,7 @@
AxisChar* serializedValue = new char[80];
AxisSprintf (serializedValue, 80, "%f", *value);
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
@@ -51,6 +45,11 @@
*m_Float = (float) strtod (valueAsChar, &end);
return m_Float;
+}
+
+WhiteSpace* Float::getWhiteSpace()
+{
+ return new WhiteSpace(COLLAPSE);
}
AXIS_CPP_NAMESPACE_END
1.4 +8 -0 ws-axis/c/src/soap/xsd/Float.hpp
Index: Float.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Float.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Float.hpp 20 Jan 2005 03:55:43 -0000 1.3
+++ Float.hpp 20 Jan 2005 09:51:23 -0000 1.4
@@ -69,6 +69,14 @@
*/
float* deserializeFloat(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
float* m_Float;
};
1.7 +1 -9 ws-axis/c/src/soap/xsd/HexBinary.cpp
Index: HexBinary.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/HexBinary.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- HexBinary.cpp 20 Jan 2005 04:49:29 -0000 1.6
+++ HexBinary.cpp 20 Jan 2005 09:51:23 -0000 1.7
@@ -31,15 +31,7 @@
Hex_Encode (serializedValue, value->__ptr, value->__size);
serializedValue[value->__size * 2] = 0;
- if (m_Buf) // Samisa : memory management BP
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
-
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
- // Samisa: serializedValue no more required, hence clean
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
1.3 +33 -0 ws-axis/c/src/soap/xsd/IAnySimpleType.cpp
Index: IAnySimpleType.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/IAnySimpleType.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IAnySimpleType.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ IAnySimpleType.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -15,6 +15,29 @@
}
}
+AxisChar* IAnySimpleType::serialize(const AxisChar* value) throw (AxisSoapException)
+{
+ WhiteSpace* whiteSpace = getWhiteSpace();
+ const AxisChar* serializedValue = whiteSpace->processWhiteSpace(value);
+
+ Pattern* pattern = getPattern();
+ if(pattern->isSet())
+ {
+ pattern->validatePattern(serializedValue);
+ }
+ delete pattern;
+
+ if (m_Buf)
+ {
+ delete [] m_Buf;
+ m_Buf = NULL;
+ }
+ m_Buf = new char[strlen (serializedValue) + 1];
+ strcpy (m_Buf, serializedValue);
+ delete whiteSpace;
+ return m_Buf;
+}
+
const AxisString& IAnySimpleType::replaceReservedCharacters(AxisString &value)
{
m_strReturnVal = "";
@@ -76,6 +99,16 @@
*/
}
return m_strReturnVal;
+}
+
+WhiteSpace* IAnySimpleType::getWhiteSpace()
+{
+ return new WhiteSpace(PRESERVE);
+}
+
+Pattern* IAnySimpleType::getPattern()
+{
+ return new Pattern();
}
AXIS_CPP_NAMESPACE_END
1.3 +22 -1 ws-axis/c/src/soap/xsd/IAnySimpleType.hpp
Index: IAnySimpleType.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/IAnySimpleType.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IAnySimpleType.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ IAnySimpleType.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -24,6 +24,8 @@
#include <axis/GDefine.hpp>
#include <string>
#include "../AxisSoapException.h"
+#include "constraints/WhiteSpace.hpp"
+#include "constraints/Pattern.hpp"
AXIS_CPP_NAMESPACE_START
@@ -80,7 +82,14 @@
* @return Deserialized value.
*/
virtual void* deserialize(const AxisChar* valueAsChar) throw (AxisSoapException) = 0;
-
+
+ /**
+ * Take partially serialized value, process WhiteSpace and validate Pattern.
+ * @param value
+ * @return Serialized form of value
+ */
+ AxisChar* serialize(const AxisChar* value) throw (AxisSoapException);
+
protected:
/**
@@ -89,6 +98,18 @@
* @return String with all reserved characters replaced
*/
const AxisString& replaceReservedCharacters(AxisString& value);
+
+ /**
+ * Creates a WhiteSpace object which preserve original string form
+ * @return WhiteSpace object
+ */
+ virtual WhiteSpace* getWhiteSpace();
+
+ /**
+ * Create a Pattern object with no rules
+ * @return Pattern object
+ */
+ Pattern* getPattern();
/**
* Reserved Characters
1.4 +1 -7 ws-axis/c/src/soap/xsd/Integer.cpp
Index: Integer.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Integer.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Integer.cpp 20 Jan 2005 03:47:42 -0000 1.3
+++ Integer.cpp 20 Jan 2005 09:51:23 -0000 1.4
@@ -28,13 +28,7 @@
AxisChar* serializedValue = new char[80];
AxisSprintf (serializedValue, 80, "%lld", *value);
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
delete [] serializedValue;
return m_Buf;
}
1.3 +7 -8 ws-axis/c/src/soap/xsd/NOTATION.cpp
Index: NOTATION.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/NOTATION.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NOTATION.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ NOTATION.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -19,15 +19,9 @@
AxisChar* NOTATION::serialize(const AxisChar* value) throw (AxisSoapException)
{
AxisString valueAsString = value;
- AxisChar* returnValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
+ AxisChar* serializedValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
- if(m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (returnValue) + 1];
- strcpy (m_Buf, returnValue);
+ IAnySimpleType::serialize(serializedValue);
return m_Buf;
}
@@ -41,6 +35,11 @@
m_NOTATION = new char[strlen (valueAsChar) + 1];
strcpy (m_NOTATION, valueAsChar);
return m_NOTATION;
+}
+
+WhiteSpace* NOTATION::getWhiteSpace()
+{
+ return new WhiteSpace(REPLACE);
}
AXIS_CPP_NAMESPACE_END
1.3 +8 -0 ws-axis/c/src/soap/xsd/NOTATION.hpp
Index: NOTATION.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/NOTATION.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- NOTATION.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ NOTATION.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -64,6 +64,14 @@
*/
AxisChar* deserializeNOTATION(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to replace whitespace
+ * @return WhiteSpace object set to replace whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
AxisChar* m_NOTATION;
};
1.3 +3 -9 ws-axis/c/src/soap/xsd/String.cpp
Index: String.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/String.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- String.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ String.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -19,16 +19,10 @@
AxisChar* String::serialize(const AxisChar* value) throw (AxisSoapException)
{
AxisString valueAsString = value;
- AxisChar* returnValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
+ AxisChar* serializedValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (returnValue) + 1];
- strcpy (m_Buf, returnValue);
- return m_Buf;
+ IAnySimpleType::serialize(serializedValue);
+ return m_Buf;
}
AxisChar* String::deserializeString(const AxisChar* valueAsChar) throw (AxisSoapException)
1.3 +1 -1 ws-axis/c/src/soap/xsd/String.hpp
Index: String.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/String.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- String.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ String.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -63,7 +63,7 @@
* @return Deserialized String value.
*/
AxisChar* deserializeString(const AxisChar* valueAsChar) throw (AxisSoapException);
-
+
private:
AxisChar* m_String;
};
1.3 +7 -7 ws-axis/c/src/soap/xsd/Time.cpp
Index: Time.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Time.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Time.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Time.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -21,13 +21,8 @@
AxisChar* serializedValue = new AxisChar[80];
strftime (serializedValue, 80, "%H:%M:%SZ", value);
- if (m_Buf)
- {
- delete [] m_Buf;
- m_Buf = NULL;
- }
- m_Buf = new char[strlen (serializedValue) + 1];
- strcpy (m_Buf, serializedValue);
+ IAnySimpleType::serialize(serializedValue);
+ delete [] serializedValue;
return m_Buf;
}
@@ -160,6 +155,11 @@
m_Time = new struct tm;
memcpy (m_Time, pTm, sizeof (tm));
return m_Time;
+ }
+
+ WhiteSpace* Time::getWhiteSpace()
+ {
+ return new WhiteSpace(COLLAPSE);
}
AXIS_CPP_NAMESPACE_END
1.3 +8 -0 ws-axis/c/src/soap/xsd/Time.hpp
Index: Time.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/Time.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Time.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ Time.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -65,6 +65,14 @@
*/
struct tm* deserializeTime(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
struct tm* m_Time;
};
1.3 +7 -3 ws-axis/c/src/soap/xsd/XSD_QName.cpp
Index: XSD_QName.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/XSD_QName.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XSD_QName.cpp 19 Jan 2005 15:22:33 -0000 1.2
+++ XSD_QName.cpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -19,10 +19,9 @@
AxisChar* XSD_QName::serialize(const AxisChar* value) throw (AxisSoapException)
{
AxisString valueAsString = value;
- AxisChar* returnValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
+ AxisChar* serializedValue = (AxisChar*) replaceReservedCharacters(valueAsString).c_str();
- m_Buf = new char[strlen (returnValue) + 1];
- strcpy (m_Buf, returnValue);
+ IAnySimpleType::serialize(serializedValue);
return m_Buf;
}
@@ -31,6 +30,11 @@
m_QName = new char[strlen (valueAsChar) + 1];
strcpy (m_QName, valueAsChar);
return m_QName;
+ }
+
+ WhiteSpace* XSD_QName::getWhiteSpace()
+ {
+ return new WhiteSpace(COLLAPSE);
}
AXIS_CPP_NAMESPACE_END
1.3 +8 -0 ws-axis/c/src/soap/xsd/XSD_QName.hpp
Index: XSD_QName.hpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/xsd/XSD_QName.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XSD_QName.hpp 19 Jan 2005 15:22:33 -0000 1.2
+++ XSD_QName.hpp 20 Jan 2005 09:51:23 -0000 1.3
@@ -64,6 +64,14 @@
*/
AxisChar* deserializeQName(const AxisChar* valueAsChar) throw (AxisSoapException);
+protected:
+
+ /**
+ * Creates a WhiteSpace object to collapse whitespace
+ * @return WhiteSpace object set to collapse whitespace
+ */
+ WhiteSpace* getWhiteSpace();
+
private:
AxisChar* m_QName;
1.27 +20 -0 ws-axis/c/vc/AxisClientDLL.dsp
Index: AxisClientDLL.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/AxisClientDLL.dsp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- AxisClientDLL.dsp 12 Jan 2005 14:06:17 -0000 1.26
+++ AxisClientDLL.dsp 20 Jan 2005 09:51:27 -0000 1.27
@@ -274,6 +274,18 @@
# End Source File
# Begin Source File
+SOURCE=..\src\soap\xsd\Int.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\soap\xsd\Integer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\soap\xsd\Long.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\src\common\MessageData.cpp
# End Source File
# Begin Source File
@@ -290,6 +302,10 @@
# End Source File
# Begin Source File
+SOURCE=..\src\soap\xsd\constraints\Pattern.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\src\xml\QName.cpp
# End Source File
# Begin Source File
@@ -383,6 +399,10 @@
# Begin Source File
SOURCE=..\src\soap\URIMapping.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\soap\xsd\constraints\WhiteSpace.cpp
# End Source File
# Begin Source File
1.25 +20 -0 ws-axis/c/vc/AxisServerDLL.dsp
Index: AxisServerDLL.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/AxisServerDLL.dsp,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- AxisServerDLL.dsp 19 Jan 2005 08:51:50 -0000 1.24
+++ AxisServerDLL.dsp 20 Jan 2005 09:51:27 -0000 1.25
@@ -270,6 +270,18 @@
# End Source File
# Begin Source File
+SOURCE=..\src\soap\xsd\Int.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\soap\xsd\Integer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\soap\xsd\Long.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\src\common\MessageData.cpp
# End Source File
# Begin Source File
@@ -286,6 +298,10 @@
# End Source File
# Begin Source File
+SOURCE=..\src\soap\xsd\constraints\Pattern.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\src\xml\QName.cpp
# End Source File
# Begin Source File
@@ -379,6 +395,10 @@
# Begin Source File
SOURCE=..\src\soap\URIMapping.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\soap\xsd\constraints\WhiteSpace.cpp
# End Source File
# Begin Source File
1.13 +12 -0 ws-axis/c/vc/Distribution.dsw
Index: Distribution.dsw
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/Distribution.dsw,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Distribution.dsw 17 Dec 2004 10:54:14 -0000 1.12
+++ Distribution.dsw 20 Jan 2005 09:51:27 -0000 1.13
@@ -99,6 +99,18 @@
###############################################################################
+Project: "AxisXMLParserXml4c"=".\xml\xerces\AxisXMLParserXml4c.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "SimpleAxisServer"=".\server\simple_axis_server\SimpleAxisServer.dsp" - Package Owner=<4>
Package=<5>
1.1 ws-axis/c/src/soap/xsd/constraints/IConstrainingFacet.hpp
Index: IConstrainingFacet.hpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @file IConstrainingFacet.hpp
*/
#if !defined(_CONSTRAININGFACET_HPP____OF_AXIS_INCLUDED_)
#define _CONSTRAININGFACET_HPP____OF_AXIS_INCLUDED_
#include "../../AxisSoapException.h"
AXIS_CPP_NAMESPACE_START
/**
* @class IConstrainingFacet
* @brief Interface for all XSD constraining facets
*
* @author Adrian Dick (adrian.dick@uk.ibm.com)
*
*/
class IConstrainingFacet {
public:
virtual ~IConstrainingFacet () {};
/**
* To allow checking if a value has been set on this constraining facet.
*/
virtual bool isSet() = 0;
protected:
bool m_isSet;
};
AXIS_CPP_NAMESPACE_END
#endif
1.1 ws-axis/c/src/soap/xsd/constraints/Pattern.cpp
Index: Pattern.cpp
===================================================================
#include "Pattern.hpp"
AXIS_CPP_NAMESPACE_START
Pattern::Pattern():m_Pattern(NULL)
{
m_isSet = false;
}
Pattern::Pattern(AxisChar* pattern)
{
if(m_Pattern)
{
delete [] m_Pattern;
m_Pattern = NULL;
}
m_Pattern = pattern;
m_isSet = true;
}
Pattern::~Pattern()
{
if(m_Pattern)
{
delete [] m_Pattern;
m_Pattern = NULL;
}
}
void Pattern::validatePattern(const AxisChar* value) throw (AxisSoapException)
{
/*
* Currently has no effect.
* Needs to validate the given string matches the regular expression
* provided to the constructor.
*/
}
bool Pattern::isSet()
{
return m_isSet;
}
AXIS_CPP_NAMESPACE_END
1.1 ws-axis/c/src/soap/xsd/constraints/Pattern.hpp
Index: Pattern.hpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @file Pattern.hpp
*/
#if !defined(_PATTERN_HPP____OF_AXIS_INCLUDED_)
#define _PATTERN_HPP____OF_AXIS_INCLUDED_
#include "IConstrainingFacet.hpp"
#include "../../AxisSoapException.h"
AXIS_CPP_NAMESPACE_START
/**
* @class Pattern
*
* @author Adrian Dick (adrian.dick@uk.ibm.com)
*
*/
class Pattern : IConstrainingFacet {
public:
Pattern();
Pattern(AxisChar* pattern);
~Pattern();
void validatePattern(const AxisChar* value) throw (AxisSoapException);
bool isSet();
private:
AxisChar* m_Pattern;
};
AXIS_CPP_NAMESPACE_END
#endif
1.1 ws-axis/c/src/soap/xsd/constraints/WhiteSpace.cpp
Index: WhiteSpace.cpp
===================================================================
#include "WhiteSpace.hpp"
AXIS_CPP_NAMESPACE_START
WhiteSpace::WhiteSpace():m_WhiteSpace(PRESERVE), m_Buf(NULL)
{
m_isSet = true;
}
WhiteSpace::WhiteSpace(whiteSpaceValue whiteSpace):m_Buf(NULL)
{
m_isSet = true;
m_WhiteSpace = whiteSpace;
}
const AxisChar* WhiteSpace::processWhiteSpace(const AxisChar* valueToProcess)
{
AxisString valueAsString = valueToProcess;
AxisChar* returnValue = NULL;
switch (m_WhiteSpace)
{
case PRESERVE:
return valueToProcess;
case REPLACE:
{
returnValue = (AxisChar*) replaceWhiteSpace(valueAsString).c_str();
}
break;
case COLLAPSE:
{
returnValue = (AxisChar*) collapseWhiteSpace(valueAsString).c_str();
}
break;
}
if (m_Buf)
{
delete [] m_Buf;
m_Buf = NULL;
}
m_Buf = new char[strlen (returnValue) + 1];
strcpy (m_Buf, returnValue);
delete returnValue;
return m_Buf;
}
bool WhiteSpace::isSet()
{
return m_isSet;
}
/**
* Replaces all occurances of tab, line feed and carriage return with space
*
* @param value The string to have white space characters replaced.
* @return AxisString The string with all white space characters replaced.
*/
const AxisString& WhiteSpace::replaceWhiteSpace(AxisString& value)
{
m_strReturnVal = "";
if (value.empty ())
{
return value;
}
/* Find white space characters and returns the first any of chars find
* position
*/
unsigned int nPos = value.find_first_of (WHITE_SPACE_CHARS);
/* Check for position validity */
if (AxisString::npos == nPos)
{
return value;
}
int nOldIdx = 0; // Counter value
while (AxisString::npos != nPos)
{ // Get pointered character
m_strReturnVal.append (value.substr (nOldIdx, nPos - nOldIdx));
m_strReturnVal.append (" ");
nOldIdx = ++nPos; // Get old position
/*
* Find the next white space characters from previous found
* position,
*/
nPos = value.find_first_of (WHITE_SPACE_CHARS, nPos);
}
int nDataLen = value.length (); // Get the length of the field value
int nLen = nDataLen - nOldIdx; // Get remaining number of characters
if (nLen > 0)
{
/*
* Append the remaining data
*/
m_strReturnVal += value.substr (nOldIdx, nLen);
}
return m_strReturnVal;
}
/**
* Collapses all white space in a string.
* All occurances of tab, line feed and carriage return are replaced with
* space, after which all sequences of spaces are collapsed to a single space.
*
* @param value The string to have all white space collapsed
* @return AxisString The string with all white space collapsed.
*/
const AxisString& WhiteSpace::collapseWhiteSpace(AxisString& value)
{
m_strReturnVal = "";
if (value.empty ())
{
return value;
}
AxisString replacedValue = replaceWhiteSpace(value);
/* Find space character and returns the first any of chars find
* position
*/
unsigned int nPos = replacedValue.find_first_of (' ');
/* Check for position validity */
if (AxisString::npos == nPos)
{
m_strReturnVal.assign (replacedValue);
return m_strReturnVal;
}
int nOldIdx = 0; // Counter value
while (AxisString::npos != nPos)
{
m_strReturnVal.append (replacedValue.substr (nOldIdx, nPos - nOldIdx));
/**
* Only copy space character across if it's NOT followed by
* another space character
*/
if ( replacedValue.at(nPos+1) != ' ')
{
m_strReturnVal.append (" ");
}
nOldIdx = ++nPos; // Get old position
/*
* Find the next entity reference characters from previous found
* position,
*/
nPos = replacedValue.find_first_of (' ', nPos);
}
int nDataLen = replacedValue.length (); // Get the length of the field value
int nLen = nDataLen - nOldIdx; // Get remaining number of characters
if (nLen > 0)
{
/*
* Append the remaining data
*/
m_strReturnVal += replacedValue.substr (nOldIdx, nLen);
}
return m_strReturnVal;
}
AXIS_CPP_NAMESPACE_END
1.1 ws-axis/c/src/soap/xsd/constraints/WhiteSpace.hpp
Index: WhiteSpace.hpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @file WhiteSpace.hpp
*/
#if !defined(_WHITESPACE_HPP____OF_AXIS_INCLUDED_)
#define _WHITESPACE_HPP____OF_AXIS_INCLUDED_
#include "IConstrainingFacet.hpp"
AXIS_CPP_NAMESPACE_START
const AxisChar WHITE_SPACE_CHARS[] = "\t\r\n";
typedef enum
{
PRESERVE, REPLACE, COLLAPSE
} whiteSpaceValue;
/**
* @class WhiteSpace
*
* @author Adrian Dick (adrian.dick@uk.ibm.com)
*
*/
class WhiteSpace : IConstrainingFacet {
public:
WhiteSpace();
WhiteSpace(whiteSpaceValue whiteSpace);
bool isSet();
const AxisChar* processWhiteSpace(const AxisChar* valueToProcess);
private:
const AxisString& replaceWhiteSpace(AxisString& value);
const AxisString& collapseWhiteSpace(AxisString& value);
enum
{
TAB_CHARACTER = '\t',
LINE_FEED_CHARACTER = '\r',
CARRIAGE_RETURN_CHARACTER = '\n'
};
whiteSpaceValue m_WhiteSpace;
AxisChar* m_Buf;
AxisString m_strReturnVal;
};
AXIS_CPP_NAMESPACE_END
#endif