001    // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 
002    // The Molly framework is freely distributable under the terms of an
003    // MIT-style license. For details, see the molly pages web site at:
004    // http://www.mollypages.org/. Use, modify, have fun !
005    
006    package fc.web.servlet;
007    
008    import java.io.*;
009    import java.util.*;
010    import java.util.logging.*;
011    import javax.servlet.*;
012    
013    import fc.io.*;
014    import fc.util.*;
015    
016    /** 
017    Loads properties for a servlet. Intended to be used in
018    application/context scope by all servlets belonging to one web
019    context/application.
020    <p>
021    ThreadSafety: This class <b>is</b> thread safe and can be used by
022    multiple threads concurrently.
023    
024    @author hursh jain 
025    @version 1.0 12/30/2001
026    */
027    public class ServletPropertyMgr extends PropertyMgr
028    {
029    ServletContext context;
030    
031    /**
032    @param  context  the {@link javax.servlet.ServletContext}
033             to load init parameters from.
034    */
035    public ServletPropertyMgr(ServletContext context) 
036      throws IOException
037      {
038      this.context = context;
039      }
040    
041    public String get(String name) {
042      return context.getInitParameter(name);    
043      }
044    
045    public void save() {
046      throw new RuntimeException("not implemented");
047      }
048      
049    public String set(String name, String backup) {
050      throw new RuntimeException("not implemented");
051      }
052    
053    /**
054    Overrides the {@link fc.app.PropertyMgr#handleError} method
055    to <b>not</b>exit the application is case of an error.
056    Instead an error is logged and a ServletException is thrown.
057    **/
058    protected void handleError(String str) throws PropertyNotFoundException
059      {
060      //don't specify 'this' for the object because then that prints the
061      //entire list of loaded properties every time - leads to too much clutter
062      System.err.println("Property: '" + str + "' not found"); 
063      throw new PropertyNotFoundException("Could not load required property: " + str);
064      }
065    }