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); } } }