cedric      2002/07/11 09:44:24

  Modified:    src/share/org/apache/struts/taglib/tiles
                        InitDefinitionsTag.java
               src/share/org/apache/struts/tiles
                        ActionComponentServlet.java
  Log:
  Use the latest definition factory.
  Servlet is no more needed with Struts1.1. It shows a warning message if used
   with Struts1.1
  
  Revision  Changes    Path
  1.2       +10 -10    
jakarta-struts/src/share/org/apache/struts/taglib/tiles/InitDefinitionsTag.java
  
  Index: InitDefinitionsTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/tiles/InitDefinitionsTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InitDefinitionsTag.java   25 Jun 2002 03:16:30 -0000      1.1
  +++ InitDefinitionsTag.java   11 Jul 2002 16:44:24 -0000      1.2
  @@ -63,7 +63,8 @@
   package org.apache.struts.taglib.tiles;
   
   import org.apache.struts.tiles.DefinitionsUtil;
  -import org.apache.struts.tiles.ComponentDefinitionsFactory;
  +import org.apache.struts.tiles.DefinitionsFactory;
  +import org.apache.struts.tiles.DefinitionsFactoryConfig;
   import org.apache.struts.tiles.DefinitionsFactoryException;
   import org.apache.struts.tiles.ComponentDefinition;
   import org.apache.struts.tiles.xmlDefinition.I18nFactorySet;
  @@ -120,18 +121,17 @@
        */
     public int doStartTag() throws JspException
     {
  -  ComponentDefinitionsFactory factory = 
DefinitionsUtil.getDefinitionsFactory(pageContext);
  +  DefinitionsFactory factory = 
DefinitionsUtil.getDefinitionsFactory(pageContext.getServletContext());
     if(factory != null )
       return SKIP_BODY;
   
  -  Map properties = new HashMap();
  -    // Read properties
  -    // Not so nice, but works for default factory ;-(
  -  properties.put( I18nFactorySet.DEFINITIONS_CONFIG_PARAMETER_NAME, filename);
  +  DefinitionsFactoryConfig factoryConfig = new DefinitionsFactoryConfig();
  +  factoryConfig.setFactoryClassname( classname );
  +  factoryConfig.setDefinitionConfigFiles( filename );
   
     try
       {
  -    factory = 
DefinitionsUtil.createDefinitionsFactory(pageContext.getServletContext(), properties, 
classname);
  +    factory = 
DefinitionsUtil.createDefinitionsFactory(pageContext.getServletContext(), 
factoryConfig);
       }
      catch( DefinitionsFactoryException ex )
         {
  
  
  
  1.3       +25 -8     
jakarta-struts/src/share/org/apache/struts/tiles/ActionComponentServlet.java
  
  Index: ActionComponentServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/tiles/ActionComponentServlet.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ActionComponentServlet.java       7 Jul 2002 23:15:36 -0000       1.2
  +++ ActionComponentServlet.java       11 Jul 2002 16:44:24 -0000      1.3
  @@ -82,6 +82,8 @@
   import org.apache.struts.upload.MultipartRequestWrapper;
   
   /**
  + * Action Servlet to be used with Tiles and Struts 1.0.x.
  + * For Struts 1.1, use TilesPlugin and eventualy TilesRequestProcessor.
    * This servlet extends struts one. It adds channels and screens dispatching
    * capabilities.
    * We overide all methods that do request forward (i.e. 'processActionForward'
  @@ -95,7 +97,7 @@
   public class ActionComponentServlet extends ActionServlet
   {
       /** Definitions factory */
  -  private ComponentDefinitionsFactory definitionsFactory;
  +  private DefinitionsFactory definitionsFactory;
   
       /**
        * Init method.
  @@ -113,17 +115,32 @@
        */
     public void initComponentDefinitionsMapping() throws ServletException // 
IOException,
       {
  +      // Check struts version by checkin PlugIn classes existance.
  +    try
  +      {
  +      Class plugInClass = Class.forName( "org.apache.struts.action.PlugIn" );
  +        // Class exist ==> struts 1.1 or greater
  +      log( "Warning - ActionComponentServlet class: This class is to be used with 
Struts1.0.x only. "
  +           + "Please modify web.xml to use regular ActionServlet class instead in 
conjugaison "
  +           + "with appropriate plugin declared in struts-config.xml." );
  +      //return;
  +        // Let create factory for backward compatibility
  +      }
  +     catch( ClassNotFoundException ex )
  +      { // Not found ==> struts 1.0.x
  +      }
  +
        try
         {
  -        // init component instances
  -      definitionsFactory = 
DefinitionsUtil.createDefinitionsFactory(getServletContext(), getServletConfig());
  +        // create definition factory
  +      definitionsFactory = 
DefinitionsUtil.createDefinitionsFactory(getServletContext(), getServletConfig(), 
true);
         }
        catch( DefinitionsFactoryException ex )
         {
  -      log( "Fail to load Tiles definition factory", ex);
  +      log( "Fail to load Tiles definition factory from ActionComponentServlet", ex);
         throw new ServletException( ex.getMessage(), ex );
         }
  -    log( "Tiles definition factory loaded" );
  +    log( "Tiles definition factory loaded from ActionComponentServlet" );
       }
   
   
  
  
  

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

Reply via email to