snichol 2003/06/20 22:24:08
Modified: java/src/org/apache/soap/server DefaultConfigManager.java
ServiceManager.java XMLConfigManager.java
Log:
Distinguish between the inability to open a config file ("assume fresh
start") and the inability to read its contents (throw exception). For
SOAPException, chain original exception.
Revision Changes Path
1.9 +17 -7
xml-soap/java/src/org/apache/soap/server/DefaultConfigManager.java
Index: DefaultConfigManager.java
===================================================================
RCS file:
/home/cvs/xml-soap/java/src/org/apache/soap/server/DefaultConfigManager.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DefaultConfigManager.java 6 Apr 2001 13:03:51 -0000 1.8
+++ DefaultConfigManager.java 21 Jun 2003 05:24:08 -0000 1.9
@@ -72,6 +72,7 @@
*
* @author Dug ([EMAIL PROTECTED])
* @author <a href="mailto:[EMAIL PROTECTED]">Magnus Thor Torfason</a>
+ * @author Scott Nichol ([EMAIL PROTECTED])
*
* With the introduction of a ConfigManager, the notion of a SOAP
* configuration file was also introduced. The SOAP server will now
@@ -118,19 +119,28 @@
*/
public void loadRegistry() throws SOAPException {
// load in a serialized thing
+ ObjectInputStream is;
dds = null ;
try {
File file = ServerHTTPUtils.getFileFromNameAndContext(filename,
context);
FileInputStream fis = new FileInputStream (file);
- ObjectInputStream is = new ObjectInputStream (fis);
-
- dds = (Hashtable) is.readObject ();
- is.close ();
+ is = new ObjectInputStream (fis);
} catch(Exception e) {
dds = new Hashtable ();
System.err.println ("SOAP Service Manager: Unable to read '" +
filename + "': assuming fresh start");
+ return;
+ }
+
+ try {
+ dds = (Hashtable) is.readObject ();
+ is.close ();
+ } catch (Exception e) {
+ dds = new Hashtable ();
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "Error loading services registry from '" + filename + "': "
+ + e.getMessage(), e);
}
}
@@ -150,7 +160,7 @@
} catch (Exception e) {
throw new SOAPException (Constants.FAULT_CODE_SERVER,
"Error saving services registry: " +
- e.getMessage ());
- };
+ e.getMessage (), e);
+ }
}
-};
+}
1.20 +1 -0 xml-soap/java/src/org/apache/soap/server/ServiceManager.java
Index: ServiceManager.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/ServiceManager.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- ServiceManager.java 21 Nov 2002 16:36:57 -0000 1.19
+++ ServiceManager.java 21 Jun 2003 05:24:08 -0000 1.20
@@ -242,6 +242,7 @@
configMgr.init();
}
catch( SOAPException e ) {
+ // TODO: also propagate the exception so that the client sees a fault
e.printStackTrace();
}
}
1.5 +20 -14 xml-soap/java/src/org/apache/soap/server/XMLConfigManager.java
Index: XMLConfigManager.java
===================================================================
RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/server/XMLConfigManager.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XMLConfigManager.java 21 Nov 2002 16:36:57 -0000 1.4
+++ XMLConfigManager.java 21 Jun 2003 05:24:08 -0000 1.5
@@ -81,6 +81,7 @@
* An <code>XMLConfigManager</code> ...
*
* @author <a href="mailto:[EMAIL PROTECTED]">Magnus Thor Torfason</a>
+ * @author Scott Nichol ([EMAIL PROTECTED])
*
* This class should be almost identical in function to the
* DefaultConfigManager.
@@ -118,22 +119,27 @@
* should be represented as a list of deployment descriptor elements.
*/
public void loadRegistry() throws SOAPException {
+ FileReader rd;
dds = null ;
+
try {
File file = ServerHTTPUtils.getFileFromNameAndContext(filename,
context);
- FileReader rd = new FileReader (file);
+ rd = new FileReader (file);
+ } catch(Exception e) {
+ dds = new Hashtable ();
+ System.err.println ("SOAP Service Manager: Unable to read '" +
+ filename + "': assuming fresh start");
+ return;
+ }
+
+ try {
Document doc = null;
Element root = null;
- try {
- doc = XMLParserUtils.parse(rd);
- root = doc.getDocumentElement();
- } catch (Exception e) {
- e.printStackTrace();
- throw new SOAPException(Constants.FAULT_CODE_SERVER,e.getMessage());
- }
-
+ doc = XMLParserUtils.parse(rd);
+ rd.close();
+ root = doc.getDocumentElement();
NodeList deploymentElements = root.getElementsByTagNameNS(
Constants.NS_URI_XML_SOAP_DEPLOYMENT, "service");
@@ -146,10 +152,11 @@
String id = dd.getID();
dds.put( id, dd );
}
- } catch(Exception e) {
+ } catch (Exception e) {
dds = new Hashtable ();
- System.err.println ("SOAP Service Manager: Unable to read '" +
- filename + "': assuming fresh start");
+ throw new SOAPException(Constants.FAULT_CODE_SERVER,
+ "Error loading services registry from '" + filename + "': "
+ + e.getMessage(), e);
}
}
@@ -176,8 +183,7 @@
pw.close ();
} catch (Exception e) {
throw new SOAPException (Constants.FAULT_CODE_SERVER,
- "Error saving services registry: " +
- e.getMessage ());
+ "Error saving services registry: " + e.getMessage (), e);
}
}
}