Backport fixes from main branch and rev patch version.
authorScott Cantor <cantor.2@osu.edu>
Tue, 31 May 2011 03:24:45 +0000 (03:24 +0000)
committerScott Cantor <cantor.2@osu.edu>
Tue, 31 May 2011 03:24:45 +0000 (03:24 +0000)
21 files changed:
Makefile.am
config_win32.h
configure.ac
doc/Makefile.am
doc/README.txt
xmltooling/Makefile.am
xmltooling/XMLToolingConfig.cpp
xmltooling/security/impl/FilesystemCredentialResolver.cpp
xmltooling/soap/impl/CURLSOAPTransport.cpp
xmltooling/soap/impl/SOAPImpl.cpp
xmltooling/util/XMLHelper.cpp
xmltooling/util/XMLHelper.h
xmltooling/version.h
xmltooling/xmltooling-lite.vcxproj
xmltooling/xmltooling.rc
xmltooling/xmltooling.vcxproj
xmltoolingtest/Makefile.am
xmltoolingtest/SOAPTest.h [new file with mode: 0644]
xmltoolingtest/SecurityHelperTest.h
xmltoolingtest/xmltoolingtest.vcxproj
xmltoolingtest/xmltoolingtest.vcxproj.filters

index e9c26b8..0a93d04 100644 (file)
@@ -5,6 +5,12 @@ include doxygen.am
 
 MOSTLYCLEANFILES = $(DX_CLEANFILES)
 
+DISTCLEANFILES = \
+       @PACKAGE_NAME@.pc \
+       @PACKAGE_NAME@.pc.in \
+       @PACKAGE_NAME@-uninstalled.pc \
+       @PACKAGE_NAME@-uninstalled.sh
+
 dist-hook:
        rm -rf `find $(distdir)/xmltoolingtest/data -name .svn`
        rm -rf `find $(distdir)/doc/api -name .svn`
index f2b7dd5..0a579ab 100644 (file)
 #define PACKAGE "xmltooling"
 
 /* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "https://bugs.internet2.edu/"
+#define PACKAGE_BUGREPORT "https://issues.shibboleth.net/"
 
 /* Define to the full name of this package. */
 #define PACKAGE_NAME "xmltooling"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "xmltooling 1.4.1"
+#define PACKAGE_STRING "xmltooling 1.4.2"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "xmltooling"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.4.1"
+#define PACKAGE_VERSION "1.4.2"
 
 /* Define to the necessary symbol if this constant uses a non-standard name on
    your system. */
 /* #undef TM_IN_SYS_TIME */
 
 /* Version number of package */
-#define VERSION "1.4.1"
+#define VERSION "1.4.2"
 
 /* Define if you wish to disable XML-Security-dependent features. */
 /* #undef XMLTOOLING_NO_XMLSEC */
index 0a6917a..4d93334 100644 (file)
@@ -1,6 +1,6 @@
 # Process this file with autoreconf
 AC_PREREQ([2.50])
-AC_INIT([xmltooling],[1.4.1],[https://bugs.internet2.edu/],[xmltooling])
+AC_INIT([xmltooling],[1.4.2],[https://issues.shibboleth.net/],[xmltooling])
 AC_CONFIG_SRCDIR(xmltooling)
 AC_CONFIG_AUX_DIR(build-aux)
 AC_CONFIG_MACRO_DIR(m4)
index 7ad576f..60ed706 100644 (file)
@@ -3,8 +3,10 @@ AUTOMAKE_OPTIONS = foreign
 pkgdocdir = $(datadir)/doc/@PACKAGE@-@PACKAGE_VERSION@
 
 install-data-hook:
-       cp -r api $(DESTDIR)$(pkgdocdir)
-       rm -rf `find $(DESTDIR)$(pkgdocdir)/api -name .svn`
+       if test -d api ; then \
+               cp -r api $(DESTDIR)$(pkgdocdir); \
+               rm -rf `find $(DESTDIR)$(pkgdocdir)/api -name .svn`; \
+       fi;
 
 docfiles = \
        README.txt \
index 8f42043..3b9a257 100644 (file)
@@ -1,5 +1,3 @@
-VERSION 1.4.1
-
 Release Notes
 -----------
 See https://bugs.internet2.edu/jira/secure/ReleaseNote.jspa?projectId=10009
index da925d2..12598e1 100644 (file)
@@ -198,10 +198,10 @@ common_sources = \
 libxmltooling_lite_la_SOURCES = \
        ${common_sources}
 libxmltooling_lite_la_CPPFLAGS = -DXMLTOOLING_LITE
-libxmltooling_lite_la_LDFLAGS = -version-info 5:1:0
+libxmltooling_lite_la_LDFLAGS = -version-info 5:2:0
 
 if BUILD_XMLSEC
-libxmltooling_la_LDFLAGS = $(XMLSEC_LIBS) -version-info 5:1:0
+libxmltooling_la_LDFLAGS = $(XMLSEC_LIBS) -version-info 5:2:0
 libxmltooling_la_SOURCES = \
        ${common_sources} \
        ${xmlsec_sources}
index c68bead..a8f0bdd 100644 (file)
@@ -359,7 +359,16 @@ bool XMLToolingInternalConfig::init()
             log.fatal("failed to initialize libcurl, OpenSSL, or Winsock");
             return false;
         }
-        log.debug("libcurl %s initialization complete", LIBCURL_VERSION);
+        curl_version_info_data* curlver = curl_version_info(CURLVERSION_NOW);
+        if (curlver) {
+            log.debug("libcurl %s initialization complete", curlver->version);
+            if (!(curlver->features & CURL_VERSION_SSL)) {
+                log.warn("libcurl lacks TLS/SSL support, this will greatly limit functionality");
+            }
+        }
+        else {
+            log.debug("libcurl %s initialization complete", LIBCURL_VERSION);
+        }
 #endif
 
         XMLPlatformUtils::Initialize();
index d92fd37..9109c7b 100644 (file)
@@ -348,6 +348,10 @@ FilesystemCredentialResolver::FilesystemCredentialResolver(const DOMElement* e)
             if (e->hasAttributeNS(nullptr, extractNames))
                 child->setAttributeNS(nullptr, extractNames, e->getAttributeNS(nullptr, extractNames));
         }
+        if (e->hasAttributeNS(nullptr, _use)) {
+            dummy->setAttributeNS(nullptr, _use, e->getAttributeNS(nullptr, _use));
+        }
+
         e = dummy;  // reset "root" to the dummy config element
     }
 
index 0cf2d0f..ab439ce 100644 (file)
@@ -537,7 +537,12 @@ void CURLSOAPTransport::send(istream* in)
 
     m_useragent = XMLToolingConfig::getConfig().user_agent;
     if (!m_useragent.empty()) {
-        m_useragent = m_useragent + " libcurl/" + LIBCURL_VERSION + ' ' + OPENSSL_VERSION_TEXT;
+        curl_version_info_data* curlver = curl_version_info(CURLVERSION_NOW);
+        m_useragent += " libcurl/";
+        if (curlver)
+            m_useragent = m_useragent + curlver->version + ' ' + curlver->ssl_version;
+        else
+            m_useragent = m_useragent + LIBCURL_VERSION + ' ' + OPENSSL_VERSION_TEXT;
         curl_easy_setopt(m_handle, CURLOPT_USERAGENT, m_useragent.c_str());
     }
 
index 4549d90..d272fd2 100644 (file)
@@ -55,7 +55,7 @@ namespace {
         public AbstractXMLObjectMarshaller,
         public AbstractXMLObjectUnmarshaller
     {
-        xmltooling::QName* m_qname;
+        mutable xmltooling::QName* m_qname;
     public:
         virtual ~FaultcodeImpl() {
             delete m_qname;
@@ -71,6 +71,9 @@ namespace {
         }
         
         const xmltooling::QName* getCode() const {
+            if (!m_qname && getDOM() && getDOM()->getTextContent()) {
+                m_qname = XMLHelper::getNodeValueAsQName(getDOM());
+            }
             return m_qname;
         }
         
@@ -80,8 +83,9 @@ namespace {
                 auto_ptr_XMLCh temp(m_qname->toString().c_str());
                 setTextContent(temp.get());
             }
-            else
+            else {
                 setTextContent(nullptr);
+            }
         }
         
         IMPL_XMLOBJECT_CLONE(Faultcode);
@@ -358,9 +362,9 @@ const XMLCh Envelope::LOCAL_NAME[] =                    UNICODE_LITERAL_8(E,n,v,
 const XMLCh Envelope::TYPE_NAME[] =                     UNICODE_LITERAL_8(E,n,v,e,l,o,p,e);
 const XMLCh Fault::LOCAL_NAME[] =                       UNICODE_LITERAL_5(F,a,u,l,t);
 const XMLCh Fault::TYPE_NAME[] =                        UNICODE_LITERAL_5(F,a,u,l,t);
-const XMLCh Faultactor::LOCAL_NAME[] =                  UNICODE_LITERAL_10(F,a,u,l,t,a,c,t,o,r);
-const XMLCh Faultcode::LOCAL_NAME[] =                   UNICODE_LITERAL_9(F,a,u,l,t,c,o,d,e);
-const XMLCh Faultstring::LOCAL_NAME[] =                 UNICODE_LITERAL_11(F,a,u,l,t,s,t,r,i,n,g);
+const XMLCh Faultactor::LOCAL_NAME[] =                  UNICODE_LITERAL_10(f,a,u,l,t,a,c,t,o,r);
+const XMLCh Faultcode::LOCAL_NAME[] =                   UNICODE_LITERAL_9(f,a,u,l,t,c,o,d,e);
+const XMLCh Faultstring::LOCAL_NAME[] =                 UNICODE_LITERAL_11(f,a,u,l,t,s,t,r,i,n,g);
 const XMLCh Header::LOCAL_NAME[] =                      UNICODE_LITERAL_6(H,e,a,d,e,r);
 const XMLCh Header::TYPE_NAME[] =                       UNICODE_LITERAL_6(H,e,a,d,e,r);
 const XMLCh Header::ACTOR_ATTRIB_NAME[] =               UNICODE_LITERAL_5(a,c,t,o,r);
index 7bc43ba..4d4b8e2 100644 (file)
@@ -176,9 +176,12 @@ xmltooling::QName* XMLHelper::getNodeValueAsQName(const DOMNode* domNode)
     if (!domNode)
         return nullptr;
     
-    int i;
     const XMLCh* value=domNode->getTextContent();
-    if (value && (i=XMLString::indexOf(value,chColon))>0) {
+    if (!value || !*value)
+        return nullptr;
+
+    int i;
+    if ((i=XMLString::indexOf(value,chColon))>0) {
         XMLCh* prefix=new XMLCh[i+1];
         XMLString::subString(prefix,value,0,i);
         prefix[i]=chNull;
index 284d5f0..204fb64 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef __xmltooling_xmlhelper_h__
 #define __xmltooling_xmlhelper_h__
 
-#include <xmltooling/base.h>
+#include <xmltooling/unicode.h>
 
 #include <map>
 #include <iostream>
index 8d3ae00..5656015 100644 (file)
@@ -39,7 +39,7 @@
 
 #define XMLTOOLING_VERSION_MAJOR 1
 #define XMLTOOLING_VERSION_MINOR 4
-#define XMLTOOLING_VERSION_REVISION 1
+#define XMLTOOLING_VERSION_REVISION 2
 
 /** DO NOT MODIFY BELOW THIS LINE */
 
index 6c3b6d5..c69e4b8 100644 (file)
@@ -90,7 +90,6 @@
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir);$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;XMLTOOLING_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <PrecompiledHeaderFile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir);$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;XMLTOOLING_LITE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <PrecompiledHeaderFile>\r
index 628bf33..e0fa7d0 100644 (file)
@@ -28,8 +28,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 //\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
- FILEVERSION 1,4,1,0\r
- PRODUCTVERSION 2,4,1,0\r
+ FILEVERSION 1,4,2,0\r
+ PRODUCTVERSION 2,4,2,0\r
  FILEFLAGSMASK 0x3fL\r
 #ifdef _DEBUG\r
  FILEFLAGS 0x1L\r
@@ -51,7 +51,7 @@ BEGIN
 #else\r
             VALUE "FileDescription", "OpenSAML XMLTooling Library\0"\r
 #endif\r
-            VALUE "FileVersion", "1, 4, 1, 0\0"\r
+            VALUE "FileVersion", "1, 4, 2, 0\0"\r
 #ifdef XMLTOOLING_LITE\r
 #ifdef _DEBUG\r
             VALUE "InternalName", "xmltooling-lite1_4D\0"\r
@@ -65,7 +65,7 @@ BEGIN
             VALUE "InternalName", "xmltooling1_4\0"\r
 #endif\r
 #endif\r
-            VALUE "LegalCopyright", "Copyright © 2011 Internet2\0"\r
+            VALUE "LegalCopyright", "Copyright © 2011 UCAID\0"\r
             VALUE "LegalTrademarks", "\0"\r
 #ifdef XMLTOOLING_LITE\r
 #ifdef _DEBUG\r
@@ -81,8 +81,8 @@ BEGIN
 #endif\r
 #endif\r
             VALUE "PrivateBuild", "\0"\r
-            VALUE "ProductName", "OpenSAML 2.4.1\0"\r
-            VALUE "ProductVersion", "2, 4, 1, 0\0"\r
+            VALUE "ProductName", "OpenSAML 2.4.2\0"\r
+            VALUE "ProductVersion", "2, 4, 2, 0\0"\r
             VALUE "SpecialBuild", "\0"\r
         END\r
     END\r
index 70cec10..6579cb8 100644 (file)
@@ -89,7 +89,6 @@
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir);$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeaderFile>\r
       </PrecompiledHeaderFile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir);$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <PrecompiledHeaderFile>\r
       </PrecompiledHeaderFile>\r
index be57473..a60d78a 100644 (file)
@@ -36,6 +36,7 @@ xmltoolingtest_h = \
     KeyInfoTest.h \
     MarshallingTest.h \
     NonVisibleNamespaceTest.h \
+    SOAPTest.h \
     UnmarshallingTest.h \
     TemplateEngineTest.h \
     xmltoolingtest.h \
diff --git a/xmltoolingtest/SOAPTest.h b/xmltoolingtest/SOAPTest.h
new file mode 100644 (file)
index 0000000..857d014
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ *  Copyright 2011 Internet2
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "XMLObjectBaseTestCase.h"
+
+#include <fstream>
+#include <xmltooling/soap/SOAP.h>
+#include <xmltooling/validation/ValidatorSuite.h>
+
+using namespace soap11;
+
+class SOAPTest : public CxxTest::TestSuite {
+public:
+    SOAPTest() {}
+
+    void testSOAPFault() {
+        string path=data_path + "SOAPFault.xml";
+        ifstream fs(path.c_str());
+        DOMDocument* doc=XMLToolingConfig::getConfig().getValidatingParser().parse(fs);
+        TS_ASSERT(doc!=nullptr);
+
+        const XMLObjectBuilder* b = XMLObjectBuilder::getBuilder(doc->getDocumentElement());
+        TS_ASSERT(b!=nullptr);
+
+        auto_ptr<Envelope> envObject(dynamic_cast<Envelope*>(b->buildFromDocument(doc)));
+        TS_ASSERT(envObject.get()!=nullptr);
+        TSM_ASSERT("SOAP Envelope missing Body", envObject->getBody() != nullptr);
+        TSM_ASSERT_EQUALS("SOAP Body missing Fault", 1, envObject->getBody()->getOrderedChildren().size());
+
+        SchemaValidators.validate(envObject.get());
+    }
+};
index 4297c89..1f43779 100644 (file)
@@ -56,13 +56,13 @@ public:
 
     void testKeysFromURLs() {
         string pathname = data_path + "key.pem.bak";
-        auto_ptr<SOAPTransport> t1(getTransport("https://spaces.internet2.edu/download/attachments/5305/key.pem"));
+        auto_ptr<SOAPTransport> t1(getTransport("https://wiki.shibboleth.net/confluence/download/attachments/3277026/key.pem"));
         auto_ptr<XSECCryptoKey> key1(SecurityHelper::loadKeyFromURL(*t1.get(), pathname.c_str()));
         pathname = data_path + "key.der.bak";
-        auto_ptr<SOAPTransport> t2(getTransport("https://spaces.internet2.edu/download/attachments/5305/key.der"));
+        auto_ptr<SOAPTransport> t2(getTransport("https://wiki.shibboleth.net/confluence/download/attachments/3277026/key.der"));
         auto_ptr<XSECCryptoKey> key2(SecurityHelper::loadKeyFromURL(*t2.get(), pathname.c_str()));
         pathname = data_path + "test.pfx.bak";
-        auto_ptr<SOAPTransport> t3(getTransport("https://spaces.internet2.edu/download/attachments/5305/test.pfx"));
+        auto_ptr<SOAPTransport> t3(getTransport("https://wiki.shibboleth.net/confluence/download/attachments/3277026/test.pfx"));
         auto_ptr<XSECCryptoKey> key3(SecurityHelper::loadKeyFromURL(*t3.get(), pathname.c_str(), nullptr, "password"));
 
         TSM_ASSERT("PEM/DER keys did not match", SecurityHelper::matches(*key1.get(), *key2.get()));
@@ -107,13 +107,13 @@ public:
 
     void testCertificatesFromURLs() {
         string pathname = data_path + "cert.pem.bak";
-        auto_ptr<SOAPTransport> t1(getTransport("https://spaces.internet2.edu/download/attachments/5305/cert.pem"));
+        auto_ptr<SOAPTransport> t1(getTransport("https://wiki.shibboleth.net/confluence/download/attachments/3277026/cert.pem"));
         SecurityHelper::loadCertificatesFromURL(certs, *t1.get(), pathname.c_str());
         pathname = data_path + "cert.der.bak";
-        auto_ptr<SOAPTransport> t2(getTransport("https://spaces.internet2.edu/download/attachments/5305/cert.der"));
+        auto_ptr<SOAPTransport> t2(getTransport("https://wiki.shibboleth.net/confluence/download/attachments/3277026/cert.der"));
         SecurityHelper::loadCertificatesFromURL(certs, *t2.get(), pathname.c_str());
         pathname = data_path + "test.pfx.bak";
-        auto_ptr<SOAPTransport> t3(getTransport("https://spaces.internet2.edu/download/attachments/5305/test.pfx"));
+        auto_ptr<SOAPTransport> t3(getTransport("https://wiki.shibboleth.net/confluence/download/attachments/3277026/test.pfx"));
         SecurityHelper::loadCertificatesFromURL(certs, *t3.get(), pathname.c_str(), nullptr, "password");
 
         TSM_ASSERT_EQUALS("Wrong certificate count", certs.size(), 3);
index cf59f5f..bc455d3 100644 (file)
@@ -84,7 +84,6 @@
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <BrowseInformation>true</BrowseInformation>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>$(SolutionDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <BrowseInformation>true</BrowseInformation>\r
     <ClCompile Include="NonVisibleNamespaceTest.cpp" />\r
     <ClCompile Include="SecurityHelperTest.cpp" />\r
     <ClCompile Include="SignatureTest.cpp" />\r
+    <ClCompile Include="SOAPTest.cpp" />\r
     <ClCompile Include="TemplateEngineTest.cpp" />\r
     <ClCompile Include="UnmarshallingTest.cpp" />\r
     <ClCompile Include="xmltoolingtest.cpp" />\r
 </Command>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(Filename).cpp;%(Outputs)</Outputs>\r
     </CustomBuild>\r
+    <CustomBuild Include="SOAPTest.h">\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">perl.exe -w ..\..\..\..\cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "%(Filename)".cpp "%(FullPath)"\r
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">perl.exe -w ..\..\..\..\cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "%(Filename)".cpp "%(FullPath)"\r
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">perl.exe -w ..\..\..\..\cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "%(Filename)".cpp "%(FullPath)"\r
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">perl.exe -w ..\..\..\..\cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "%(Filename)".cpp "%(FullPath)"\r
+</Command>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(Filename).cpp;%(Outputs)</Outputs>\r
+    </CustomBuild>\r
     <CustomBuild Include="TemplateEngineTest.h">\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">perl.exe -w ..\..\..\..\cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "%(Filename)".cpp "%(FullPath)"\r
 </Command>\r
index e4a91fd..4b0094b 100644 (file)
@@ -56,6 +56,9 @@
     <ClCompile Include="xmltoolingtest.cpp">\r
       <Filter>Generated Code</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="SOAPTest.cpp">\r
+      <Filter>Generated Code</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="XMLObjectBaseTestCase.h">\r
     <CustomBuild Include="xmltoolingtest.h">\r
       <Filter>Unit Tests</Filter>\r
     </CustomBuild>\r
+    <CustomBuild Include="SOAPTest.h">\r
+      <Filter>Unit Tests</Filter>\r
+    </CustomBuild>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file