Author: jasons
Date: Wed Mar 12 07:24:29 2008
New Revision: 636335

URL: http://svn.apache.org/viewvc?rev=636335&view=rev
Log:
XMLExceptionHandler singleton for copying excpetion info in catch blocks

Added:
    xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp
    xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp

Added: xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp?rev=636335&view=auto
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp (added)
+++ xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.cpp Wed Mar 12 
07:24:29 2008
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include "XMLExceptionHandler.hpp"
+
+XERCES_CPP_NAMESPACE_USE
+
+XMLExceptionHandler* XMLExceptionHandler::_instance = NULL;
+
+XMLExceptionHandler*
+XMLExceptionHandler::getInstance() {
+  if (_instance == NULL) {
+    _instance = new XMLExceptionHandler();
+  }
+  return _instance;
+}
+
+XMLExceptionHandler::XMLExceptionHandler() {}
+
+XMLException*
+XMLExceptionHandler::copyXMLException(const XMLException& e)
+{
+    if(e.getType() == XMLUni::fgArrayIndexOutOfBoundsException_Name)
+    {
+        return 
(XMLException*)((ArrayIndexOutOfBoundsException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgEmptyStackException_Name)
+    {
+        return (XMLException*)((EmptyStackException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgIllegalArgumentException_Name)
+    {
+        return (XMLException*)((IllegalArgumentException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgInvalidCastException_Name)
+    {
+        return (XMLException*)((InvalidCastException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgIOException_Name)
+    {
+        return (XMLException*)((IOException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgNoSuchElementException_Name)
+    {
+        return (XMLException*)((NoSuchElementException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgNullPointerException_Name)
+    {
+        return (XMLException*)((NullPointerException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgNumberFormatException_Name)
+    {
+        return (XMLException*)((NumberFormatException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgParseException_Name)
+    {
+        return (XMLException*)((ParseException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgXMLPlatformUtilsException_Name)
+    {
+        return (XMLException*)((XMLPlatformUtilsException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgRuntimeException_Name)
+    {
+        return (XMLException*)((RuntimeException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgSchemaDateTimeException_Name)
+    {
+        return (XMLException*)((SchemaDateTimeException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgTranscodingException_Name)
+    {
+        return (XMLException*)((TranscodingException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgUnexpectedEOFException_Name)
+    {
+        return (XMLException*)((UnexpectedEOFException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgUnsupportedEncodingException_Name)
+    {
+        return (XMLException*)((UnsupportedEncodingException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgUTFDataFormatException_Name)
+    {
+        return (XMLException*)((UTFDataFormatException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgNetAccessorException_Name)
+    {
+        return (XMLException*)((NetAccessorException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgMalformedURLException_Name)
+    {
+        return (XMLException*)((MalformedURLException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgXSerializationException_Name)
+    {
+        return (XMLException*)((XSerializationException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgInvalidDatatypeFacetException_Name)
+    {
+        return 
(XMLException*)((InvalidDatatypeFacetException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgInvalidDatatypeValueException_Name)
+    {
+        return 
(XMLException*)((InvalidDatatypeValueException*)&e)->duplicate();
+    }
+    else if(e.getType() == XMLUni::fgXPathException_Name)
+    {
+        return (XMLException*)((XPathException*)&e)->duplicate();
+    }
+    else
+    {
+        croak("Unknown Exception type: %d", e.getType());
+        return 0;
+    }
+}

Added: xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp?rev=636335&view=auto
==============================================================================
--- xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp (added)
+++ xerces/c/trunk/swig/perl/Transcoder/XMLExceptionHandler.hpp Wed Mar 12 
07:24:29 2008
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __XMLEXCEPTIONHANDLER
+#define __XMLEXCEPTIONHANDLER
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/* Get rid of free and malloc defined by perl */
+#undef free
+#undef malloc
+
+#include "xercesc/util/ArrayIndexOutOfBoundsException.hpp"
+#include "xercesc/util/EmptyStackException.hpp"
+#include "xercesc/util/IllegalArgumentException.hpp"
+#include "xercesc/util/InvalidCastException.hpp"
+#include "xercesc/util/IOException.hpp"
+#include "xercesc/util/NoSuchElementException.hpp"
+#include "xercesc/util/NullPointerException.hpp"
+#include "xercesc/util/NumberFormatException.hpp"
+#include "xercesc/util/ParseException.hpp"
+#include "xercesc/util/RuntimeException.hpp"
+#include "xercesc/util/SchemaDateTimeException.hpp"
+#include "xercesc/util/TranscodingException.hpp"
+#include "xercesc/util/UnexpectedEOFException.hpp"
+#include "xercesc/util/UnsupportedEncodingException.hpp"
+#include "xercesc/util/UTFDataFormatException.hpp"
+#include "xercesc/util/XMLNetAccessor.hpp"
+#include "xercesc/internal/XSerializationException.hpp"
+#include "xercesc/validators/datatype/InvalidDatatypeFacetException.hpp"
+#include "xercesc/validators/datatype/InvalidDatatypeValueException.hpp"
+#include "xercesc/validators/schema/identity/XPathException.hpp"
+
+XERCES_CPP_NAMESPACE_BEGIN
+
+class XMLExceptionHandler {
+
+protected:
+
+  XMLExceptionHandler();
+  static XMLExceptionHandler* _instance;
+
+public:
+
+  static XMLExceptionHandler* getInstance();
+
+  ~XMLExceptionHandler();
+  XMLException* copyXMLException(const XMLException& e);
+};
+
+XERCES_CPP_NAMESPACE_END
+
+#endif /* __XMLEXCEPTIONHANDLER */



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to