User: rinkrank
  Date: 02/05/23 17:59:35

  Modified:    core/src/xdoclet/template Tag: MODULE_REFACTORING_BRANCH
                        TemplateEngine.java TemplateParser.java
  Log:
  changes required for refactored document task
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.26.2.6  +56 -45    xdoclet/core/src/xdoclet/template/TemplateEngine.java
  
  Index: TemplateEngine.java
  ===================================================================
  RCS file: /cvsroot/xdoclet/xdoclet/core/src/xdoclet/template/TemplateEngine.java,v
  retrieving revision 1.26.2.5
  retrieving revision 1.26.2.6
  diff -u -w -r1.26.2.5 -r1.26.2.6
  --- TemplateEngine.java       19 May 2002 15:29:08 -0000      1.26.2.5
  +++ TemplateEngine.java       24 May 2002 00:59:35 -0000      1.26.2.6
  @@ -14,10 +14,13 @@
   import java.net.URL;
   import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.List;
   import java.util.Map;
   import java.util.Properties;
  +import java.util.Set;
   
   import org.apache.commons.logging.Log;
  +import xdoclet.loader.*;
   
   import xdoclet.util.FileManager;
   import xdoclet.util.LogUtil;
  @@ -32,7 +35,7 @@
    * @author    Ara Abrahamian ([EMAIL PROTECTED])
    * @author    Dmitri Colebatch ([EMAIL PROTECTED])
    * @created   July 14, 2001
  - * @version   $Revision: 1.26.2.5 $
  + * @version   $Revision: 1.26.2.6 $
    * @see       #generate(java.lang.String)
    */
   public class TemplateEngine
  @@ -81,52 +84,9 @@
           XDOCLET_TAIL_LEN = XDOCLET_TAIL.length();
       }
   
  -    /**
  -     * Initialize the Template Engine. Reads the XDoclet properties file, and loads 
any tag handler classes specified.
  -     */
       protected TemplateEngine()
       {
  -        Log log = LogUtil.getLog(TemplateEngine.class, "TemplateEngine");
  -
  -        try {
  -            Properties tagHandlerMappings = new Properties();
  -
  -            
tagHandlerMappings.load(getClass().getResourceAsStream(TAG_MAPPINGS_FILE));
  -
  -            Iterator tagHandlerMappingNames = 
tagHandlerMappings.keySet().iterator();
  -
  -            while (tagHandlerMappingNames.hasNext()) {
  -                String prefix = (String) tagHandlerMappingNames.next();
  -                String className = (String) tagHandlerMappings.get(prefix);
  -
  -                try {
  -                    TemplateTagHandler tagHandler = (TemplateTagHandler) 
Class.forName(className).newInstance();
  -
  -                    tagHandler.setEngine(this);
  -
  -                    if (this instanceof TemplateParser) {
  -                        tagHandler.setParser((TemplateParser) this);
  -                    }
  -                    // tagHandler.setContext( context );
  -                    tagMappings.put(prefix, tagHandler);
  -                }
  -                catch (NoClassDefFoundError e) {
  -                    log.warn(Translator.getString("template_noclassdeffounderror", 
new String[]{className, e.getMessage()}));
  -                }
  -                catch (ClassNotFoundException e) {
  -                    
log.warn(Translator.getString("template_classnotfoundexception", new 
String[]{className, e.getMessage()}));
  -                }
  -                catch (InstantiationException e) {
  -                    
log.warn(Translator.getString("template_instantiationexception", new 
String[]{className, e.getMessage()}));
  -                }
  -                catch (IllegalAccessException e) {
  -                    
log.warn(Translator.getString("template_illegalaccessexception", new 
String[]{className, e.getMessage()}));
  -                }
  -            }
  -        }
  -        catch (IOException ioe) {
  -            throw new RuntimeException(Translator.getString("template_ioexception", 
new String[]{ioe.getMessage()}));
  -        }
  +        registerTagHandlers();
       }
   
       /**
  @@ -244,6 +204,16 @@
       }
   
       /**
  +     * Returns a Set of Strings that represent the registered namespaces
  +     *
  +     * @return
  +     */
  +    public Set getNamespaces()
  +    {
  +        return tagMappings.keySet();
  +    }
  +
  +    /**
        * Sets the Writer attribute of the TemplateEngine object
        *
        * @param out  The new Writer value
  @@ -612,6 +582,47 @@
            throws InvocationTargetException, IllegalAccessException, TemplateException
       {
           return m.invoke(cmdImplProvider, params1);
  +    }
  +
  +    private void registerTagHandlers()
  +    {
  +        Log log = LogUtil.getLog(TemplateEngine.class, "registerTagHandlers");
  +        List modules = ModuleFinder.findModules();
  +        Iterator i = modules.iterator();
  +
  +        while (i.hasNext()) {
  +            XDocletModule module = (XDocletModule) i.next();
  +
  +            log.debug("Registering module " + module);
  +
  +            // Register tag handlers defined in the module
  +            List tagHandlerDefinitions = module.getTagHandlerDefinitions();
  +            Iterator k = tagHandlerDefinitions.iterator();
  +
  +            while (k.hasNext()) {
  +                TagHandlerDefinition thd = (TagHandlerDefinition) k.next();
  +
  +                log.debug("Registering tag handler " + thd.namespace);
  +
  +                try {
  +                    TemplateTagHandler handler = (TemplateTagHandler) 
Class.forName(thd.className).newInstance();
  +
  +                    // get ANOTHER instance for template parser. So it would not 
overwrite
  +                    // template engine settings.
  +//                    TemplateTagHandler handlerForParser = (TemplateTagHandler) 
Class.forName(thd.className).newInstance();
  +
  +                    log.debug("Add tagHandler " + thd.namespace + " (" + 
thd.className + ')');
  +                    setTagHandlerFor(thd.namespace, handler);
  +                    // add it also to template parser, or it will barf
  +                    // while ettempting to parse files...
  +                    
//TemplateParser.getParserInstance().setTagHandlerFor(thd.namespace, handlerForParser);
  +
  +                }
  +                catch (Exception e) {
  +                    log.error("Couldn't instantiate " + thd.className + " 
taghandler ", e);
  +                }
  +            }
  +        }
       }
   
       /**
  
  
  
  1.10.2.4  +6 -1      xdoclet/core/src/xdoclet/template/TemplateParser.java
  
  Index: TemplateParser.java
  ===================================================================
  RCS file: /cvsroot/xdoclet/xdoclet/core/src/xdoclet/template/TemplateParser.java,v
  retrieving revision 1.10.2.3
  retrieving revision 1.10.2.4
  diff -u -w -r1.10.2.3 -r1.10.2.4
  --- TemplateParser.java       22 May 2002 20:08:06 -0000      1.10.2.3
  +++ TemplateParser.java       24 May 2002 00:59:35 -0000      1.10.2.4
  @@ -24,7 +24,7 @@
    *
    * @author    Vincent Harcq ([EMAIL PROTECTED])
    * @created   December 27, 2001
  - * @version   $Revision: 1.10.2.3 $
  + * @version   $Revision: 1.10.2.4 $
    */
   public class TemplateParser extends TemplateEngine
   {
  @@ -49,6 +49,11 @@
       public static TemplateParser getParserInstance()
       {
           return instance;
  +    }
  +
  +    public TemplateTagHandler getTagHandlerFor(String prefix) throws 
TemplateException
  +    {
  +        return TemplateEngine.getEngineInstance().getTagHandlerFor(prefix);
       }
   
       /**
  
  
  

_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm

_______________________________________________
Xdoclet-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel

Reply via email to