You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ra...@apache.org on 2001/06/07 00:29:11 UTC

cvs commit: jakarta-jetspeed/src/java/org/apache/jetspeed/util URILookup.java

raphael     01/06/06 15:29:11

  Modified:    src/java/org/apache/jetspeed/modules/actions JLoginUser.java
                        JetspeedSessionValidator.java
               src/java/org/apache/jetspeed/modules/pages
                        JetspeedTemplatePage.java
               src/java/org/apache/jetspeed/portal BasePortletConfig.java
                        BasePortletSet.java
               src/java/org/apache/jetspeed/portal/controllers
                        CardPortletController.java
                        GridPortletController.java
               src/java/org/apache/jetspeed/services/profiler
                        JetspeedProfilerService.java ProfilerService.java
               src/java/org/apache/jetspeed/util URILookup.java
  Log:
  [fix] allow the portal to use either JSP or Velocity templates
  
  Revision  Changes    Path
  1.12      +2 -1      jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JLoginUser.java
  
  Index: JLoginUser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JLoginUser.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- JLoginUser.java	2001/05/07 15:39:27	1.11
  +++ JLoginUser.java	2001/06/06 22:28:53	1.12
  @@ -65,6 +65,7 @@
   import org.apache.turbine.util.RunData;
   import org.apache.turbine.services.localization.Localization;
   import org.apache.turbine.services.resources.TurbineResources;
  +import org.apache.turbine.services.template.TurbineTemplate;
   import org.apache.turbine.services.db.TurbineDB;
   import org.apache.turbine.util.db.Criteria;
   import org.apache.turbine.util.db.pool.DBConnection;
  @@ -114,7 +115,7 @@
               String button1 = data.getParameters().getString ( "submit1", null );
               if ( button1 != null && button1.equalsIgnoreCase("Cancel") )
               {
  -                data.setScreen (TurbineResources.getString( "screen.homepage" ));
  +                data.setScreenTemplate(TurbineTemplate.getDefaultScreen());
                   return;
               }
               
  
  
  
  1.7       +20 -47    jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JetspeedSessionValidator.java
  
  Index: JetspeedSessionValidator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JetspeedSessionValidator.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JetspeedSessionValidator.java	2001/06/04 17:44:24	1.6
  +++ JetspeedSessionValidator.java	2001/06/06 22:28:53	1.7
  @@ -60,7 +60,7 @@
   import org.apache.turbine.util.RunData;
   import org.apache.turbine.util.Log;
   import org.apache.turbine.services.security.TurbineSecurity;
  -import org.apache.turbine.modules.actions.sessionvalidator.SessionValidator;
  +import org.apache.turbine.modules.actions.sessionvalidator.TemplateSessionValidator;
   import org.apache.turbine.services.resources.TurbineResources;
   import org.apache.jetspeed.services.rundata.JetspeedRunData;
   import org.apache.jetspeed.services.Profiler;
  @@ -76,9 +76,9 @@
   @see org.apache.turbine.actions.SessionValidator
   @author <a href="mailto:ingo@raleigh.ibm.com">Ingo Schuster</a>
   @author <a href="mailto:raphael@apache.org">Rapha�l Luta</a>
  -@version $Id: JetspeedSessionValidator.java,v 1.6 2001/06/04 17:44:24 raphael Exp $
  +@version $Id: JetspeedSessionValidator.java,v 1.7 2001/06/06 22:28:53 raphael Exp $
   */
  -public class JetspeedSessionValidator extends SessionValidator
  +public class JetspeedSessionValidator extends TemplateSessionValidator
   {
   
       /**
  @@ -89,49 +89,12 @@
        */
       public void doPerform( RunData data ) throws Exception
       {
  -        data.populate();
  -        
  -        // The user may have not logged in, so create a "guest" user.
  -        if ( data.getUser() == null )
  -        {
  -            data.setUser(TurbineSecurity.getAnonymousUser());
  -            data.save();
  -        }
  -
  -        // Get the locale store it in the user object
  -        Locale locale = LocaleDetector.getLocale(data);
  -        if (locale == null) {
  -            locale = new Locale(
  -                     TurbineResources.getString("locale.default.language", "en"),
  -                     TurbineResources.getString("locale.default.country", "US"));
  -        }
  -        
  -        data.getUser().setTemp("locale", locale);
  -        
  -        // make sure we have some way to return a response
  -        if ( !data.hasScreen() &&
  -            data.getTemplateInfo().getScreenTemplate() == null )
  -        {
  -            String template = TurbineResources.getString("template.homepage");
  -            if (template != null)
  -            {
  -                data.getTemplateInfo().setScreenTemplate(template);
  -            }
  -            else
  -            {
  -                data.setScreen( TurbineResources
  -                    .getString("screen.homepage") );
  -            }
  -        }
  -        
  -        // we do not want to allow both a screen and template parameter.
  -        // The template parameter is dominant.
  -        if ( data.getTemplateInfo().getScreenTemplate() != null )
  -        {
  -            data.setScreen(null);
  -        }
  -        
  -        // define Jetspeed specific properties
  +        //first, invoke our superclass action to make sure 
  +        //we follow Turbine evolutions
  +         super.doPerform(data);         
  +         
  +        // now, define Jetspeed specific properties, using the customized
  +        // RunData properties
           JetspeedRunData jdata = null;
           
           try
  @@ -144,8 +107,18 @@
                          +"please verify the RunData factory settings");
               return;
           }
  +        
  +        // Get the locale store it in the user object
  +        Locale locale = LocaleDetector.getLocale(data);
  +        if (locale == null) {
  +            locale = new Locale(
  +                     TurbineResources.getString("locale.default.language", "en"),
  +                     TurbineResources.getString("locale.default.country", "US"));
  +        }
  +        
  +        data.getUser().setTemp("locale", locale);
           
  -        // now set any jetspeed specific properties;
  +        // get the profile and store it in the RunData
           Profile newProfile = Profiler.getProfile(jdata);
           Profile currentProfile = jdata.getProfile();
           
  
  
  
  1.13      +27 -33    jakarta-jetspeed/src/java/org/apache/jetspeed/modules/pages/JetspeedTemplatePage.java
  
  Index: JetspeedTemplatePage.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/pages/JetspeedTemplatePage.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- JetspeedTemplatePage.java	2001/06/04 17:21:07	1.12
  +++ JetspeedTemplatePage.java	2001/06/06 22:28:56	1.13
  @@ -125,7 +125,7 @@
    *
    * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
    * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a>
  - * @version $Id: JetspeedTemplatePage.java,v 1.12 2001/06/04 17:21:07 raphael Exp $
  + * @version $Id: JetspeedTemplatePage.java,v 1.13 2001/06/06 22:28:56 raphael Exp $
    */
   public class JetspeedTemplatePage extends DefaultPage
   {
  @@ -144,46 +144,40 @@
           // is hardcoded into the Screen in this instance.  In this case this
           // action is skipped.
   
  -        // if only a screen but no template is specified, then we need to display
  -        // a legacy ecs screen --> screenTemplate = ECS
  -        if ( data.getTemplateInfo().getScreenTemplate() == null )
  +        if (!data.hasScreen())
           {
  -            String screen = TurbineTemplate.getDefaultScreen();
  +            
  +            // if only a screen but no template is specified, then we need to display
  +            // a legacy ecs screen --> screenTemplate = ECS
  +            if ( data.getTemplateInfo().getScreenTemplate() == null )
  +            {
  +                String screen = TurbineTemplate.getDefaultScreen();
  +                data.setScreenTemplate(screen);
  +            }
  +
               String ext = TurbineTemplate.getDefaultExtension();
               
  -            if (!screen.endsWith(ext))
  +            String template = data.getTemplateInfo().getScreenTemplate();
  +
  +            if (template.lastIndexOf('.')<0)
               {
  -                screen=screen+ext;
  +                template=template+"."+ext;
               }
  -            data.setScreenTemplate(screen);
  -        }
   
  -        String template = data.getTemplateInfo().getScreenTemplate();
  -        Log.debug("JetspeedTemplatePage: requested template = " + template);
  +            Log.debug("JetspeedTemplatePage: requested template = " + template);
   
  -        // get real path now - this is a fix to get us thru 1.3a2
  -        // when the TurbineTemplateService can locate resources by NLS and mediatype,
  -        // then it can be removed
  -
  -        String locatedScreen = Profiler.locateScreenTemplate(data, template);
  -        data.setScreenTemplate( locatedScreen );
  -        Log.debug("JetspeedTemplatePage: calculated template = " + locatedScreen);
  -
  -        // -----------------------------------------------------------
  -        // Get screen and layout template (first screen then layout!!) 
  -        // and the correct Screen from the template service
  -        // -----------------------------------------------------------
  -
  -        //String screenTemplate = TurbineTemplate.getScreenTemplateName(located);
  -        //Log.note("JetspeedTemplatePage: screenTemplate is finally " + screenTemplate);
  -        //data.setScreenTemplate( screenTemplate );
  -
  -        String layout = Profiler.locateLayoutTemplate(data, template);
  -        data.setLayoutTemplate(layout);
  -        Log.debug("JetspeedTemplatePage: layoutTemplate is finally " + layout);
  +            // get real path now - this is a fix to get us thru 1.3a2
  +            // when the TurbineTemplateService can locate resources by NLS and mediatype,
  +            // then it can be removed
  +
  +            String locatedScreen = Profiler.locateScreenTemplate(data, template);
  +            data.setScreenTemplate( locatedScreen );
  +            Log.debug("JetspeedTemplatePage: calculated template = " + locatedScreen);
  +
  +            String layout = Profiler.locateLayoutTemplate(data, template);
  +            data.setLayoutTemplate(layout);
  +            Log.debug("JetspeedTemplatePage: layoutTemplate is finally " + layout);
   
  -        if ( !data.hasScreen() )
  -        {
               String screen = TurbineTemplate.getScreenName(template);
               if (screen == null)
               {
  
  
  
  1.5       +2 -2      jakarta-jetspeed/src/java/org/apache/jetspeed/portal/BasePortletConfig.java
  
  Index: BasePortletConfig.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/portal/BasePortletConfig.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BasePortletConfig.java	2001/06/04 17:36:33	1.4
  +++ BasePortletConfig.java	2001/06/06 22:28:58	1.5
  @@ -71,7 +71,7 @@
    * about the running environment of a given Portlet.
    *
    * @author <a href="mailto:burton@apache.org">Kevin A. Burton</a>
  - * @version $Id: BasePortletConfig.java,v 1.4 2001/06/04 17:36:33 raphael Exp $
  + * @version $Id: BasePortletConfig.java,v 1.5 2001/06/06 22:28:58 raphael Exp $
    */
   public class BasePortletConfig extends BaseConfig implements PortletConfig
   {
  @@ -280,7 +280,7 @@
           {
               if (getSkin()==null)
               {
  -                setSkin(new Hashtable());
  +                setPortletSkin(getPortletSkin());
               }
               
               if (value==null)
  
  
  
  1.7       +1 -2      jakarta-jetspeed/src/java/org/apache/jetspeed/portal/BasePortletSet.java
  
  Index: BasePortletSet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/portal/BasePortletSet.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BasePortletSet.java	2001/06/04 17:36:34	1.6
  +++ BasePortletSet.java	2001/06/06 22:28:58	1.7
  @@ -81,7 +81,7 @@
    *
    * @author <a href="mailto:raphael@apache.org">Rapha�l Luta</a>
    * @author <a href="mailto:burton@apache.org">Kevin A. Burton</a>
  - * @version $Id: BasePortletSet.java,v 1.6 2001/06/04 17:36:34 raphael Exp $
  + * @version $Id: BasePortletSet.java,v 1.7 2001/06/06 22:28:58 raphael Exp $
    */
   public class BasePortletSet implements PortletSet, Portlet, PortletState
   {
  @@ -282,7 +282,6 @@
   
           //process the normal rendering flow
               
  -        CapabilityMap map = CapabilityMapFactory.getCapabilityMap( rundata );
           PortletController controller = getController();
               
           if ( controller == null )
  
  
  
  1.17      +11 -8     jakarta-jetspeed/src/java/org/apache/jetspeed/portal/controllers/CardPortletController.java
  
  Index: CardPortletController.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/portal/controllers/CardPortletController.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- CardPortletController.java	2001/06/04 17:37:10	1.16
  +++ CardPortletController.java	2001/06/06 22:29:01	1.17
  @@ -81,7 +81,7 @@
   or with an invalid value, use the first portlet (position 0)</li>
   </p>
   @author <a href="mailto:raphael@apache.org">Rapha�l Luta</a>
  -@version $Id: CardPortletController.java,v 1.16 2001/06/04 17:37:10 raphael Exp $
  +@version $Id: CardPortletController.java,v 1.17 2001/06/06 22:29:01 raphael Exp $
   */
   public class CardPortletController extends AbstractPortletController
   {
  @@ -149,15 +149,18 @@
           }
   
           // then in the explicit position field
  -        Enumeration en = myPortlets.getPortlets();
  -        while ( en.hasMoreElements() && ( ! found ) )
  +        if (!found)
           {
  -            Portlet p = (Portlet)en.nextElement();
  -            if ( p.getPortletConfig().getPosition() == paneNum )
  +            Enumeration en = myPortlets.getPortlets();
  +            while ( en.hasMoreElements() && ( ! found ) )
               {
  -                base.addElement( p.getContent( rundata ) );
  -                pane = String.valueOf( paneNum );
  -                found=true;
  +                Portlet p = (Portlet)en.nextElement();
  +                if ( p.getPortletConfig().getPosition() == paneNum )
  +                {
  +                    base.addElement( p.getContent( rundata ) );
  +                    pane = String.valueOf( paneNum );
  +                    found=true;
  +                }
               }
           }
   
  
  
  
  1.13      +17 -8     jakarta-jetspeed/src/java/org/apache/jetspeed/portal/controllers/GridPortletController.java
  
  Index: GridPortletController.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/portal/controllers/GridPortletController.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- GridPortletController.java	2001/06/04 17:37:10	1.12
  +++ GridPortletController.java	2001/06/06 22:29:02	1.13
  @@ -98,7 +98,7 @@
   first cell of the table</p>
   
   @author <a href="mailto:raphael@apache.org">Rapha�l Luta</a>
  -@version $Id: GridPortletController.java,v 1.12 2001/06/04 17:37:10 raphael Exp $
  +@version $Id: GridPortletController.java,v 1.13 2001/06/06 22:29:02 raphael Exp $
   */
   public class GridPortletController extends AbstractPortletController {
   
  @@ -131,16 +131,15 @@
   
              
           PortletConfig portletConf = portlet.getPortletConfig();
  +        Integer colObj = portletConf.getConstraints().getColumn();
  +        Integer rowObj = portletConf.getConstraints().getRow();
   
  -        int col = portletConf.getConstraints().getColumn().intValue();
  -
  +        int col = (colObj!=null)?colObj.intValue():0;
  +        int row = (rowObj!=null)?rowObj.intValue():0;
           
           if ( col + 1 > this.getColumn() ) {
               this.setColumn( col + 1 );
           }
  -           
  -        int row = portletConf.getConstraints().getRow().intValue();
  -
           
           if ( row + 1 > this.getRow() ) {
               this.setRow( row + 1 );
  @@ -156,6 +155,8 @@
   
           ElementContainer base = new ElementContainer();
   
  +        try 
  +        {
           PortletSet portlets = getPortlets();
           PortletConfig pc = portlets.getPortletConfig();
   
  @@ -202,8 +203,10 @@
               Portlet p = (Portlet)en.nextElement();
               PortletConfig pConf = p.getPortletConfig();
   
  -            int colnum = pConf.getConstraints().getColumn().intValue();
  -            int rownum = pConf.getConstraints().getRow().intValue();
  +            Integer colObj = pConf.getConstraints().getColumn();
  +            Integer rowObj = pConf.getConstraints().getRow();
  +            int colnum = (colObj!=null)?colObj.intValue():0;
  +            int rownum = (rowObj!=null)?rowObj.intValue():0;
   
               elements[rownum % rows][colnum % cols]
                   .addElement( p.getContent( rundata ) );
  @@ -227,6 +230,12 @@
               t.addElement(row);
           }
   
  +        }
  +        catch (Exception e)
  +        {
  +            org.apache.turbine.util.Log.error(e);
  +        }
  +        
           return base;
   
       }
  
  
  
  1.5       +116 -138  jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/JetspeedProfilerService.java
  
  Index: JetspeedProfilerService.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/JetspeedProfilerService.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JetspeedProfilerService.java	2001/06/04 17:30:41	1.4
  +++ JetspeedProfilerService.java	2001/06/06 22:29:07	1.5
  @@ -60,6 +60,7 @@
   import org.apache.jetspeed.capability.CapabilityMap;
   import org.apache.jetspeed.capability.CapabilityMapFactory;
   import org.apache.jetspeed.services.resources.JetspeedResources;
  +import org.apache.jetspeed.services.rundata.JetspeedRunData;
   import org.apache.jetspeed.util.MimeType;
   import org.apache.jetspeed.services.Registry;
   import org.apache.jetspeed.om.newregistry.RegistryException;
  @@ -75,6 +76,7 @@
   import org.apache.turbine.services.servlet.TurbineServlet;
   import org.apache.turbine.services.localization.LocaleDetector;
   import org.apache.turbine.services.resources.TurbineResources;
  +import org.apache.turbine.services.template.TurbineTemplate;
   
   //java stuff
   import java.util.Map;
  @@ -108,7 +110,7 @@
    *
    * @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a>
    * @author <a href="mailto:sgala@hisitech.com">Santiago Gala</a>
  - * @version $Id: JetspeedProfilerService.java,v 1.4 2001/06/04 17:30:41 raphael Exp $
  + * @version $Id: JetspeedProfilerService.java,v 1.5 2001/06/06 22:29:07 raphael Exp $
    */
   
   public class JetspeedProfilerService  extends TurbineBaseService
  @@ -280,7 +282,6 @@
           throws ProfileException
       {
           Profile profile = getResourceURL(rundata, cm, true);
  -        this.setSessionProfile(rundata, profile);
           return profile;
       }
   
  @@ -294,10 +295,18 @@
       public Profile getProfile(RunData rundata)
           throws ProfileException
       {
  -        CapabilityMap cm = CapabilityMapFactory.getCapabilityMap( rundata );
  -        Profile profile = getResourceURL(rundata, cm, true);
  -        this.setSessionProfile(rundata, profile);
  -        return profile;
  +        CapabilityMap cm = null;
  +        
  +        if (rundata instanceof JetspeedRunData)
  +        {
  +            cm = ((JetspeedRunData)rundata).getCapability();
  +        }
  +        else
  +        {
  +            cm = CapabilityMapFactory.getCapabilityMap( rundata );
  +        }
  +        
  +        return getProfile(rundata, cm);
       }
   
       /**
  @@ -311,9 +320,7 @@
           throws ProfileException
       {
           CapabilityMap cm = CapabilityMapFactory.getCapabilityMap(mt.toString());
  -        Profile profile = getResourceURL(data, cm, false);
  -        //this.setSessionProfile(data, profile);
  -        return profile;
  +        return getResourceURL(data, cm, false);
       }
   
        /**
  @@ -475,9 +482,9 @@
               if (finalPath.length() == 0)
               {
                   finalPath = root + original;
  -                URL url = TurbineServlet.getResource( finalPath );
  -                if (url != null)
  -                    profile.setURL(url.toString());
  +                String realPath = TurbineServlet.getRealPath( finalPath );
  +                if (realPath != null)
  +                    profile.setURL(realPath);
                   else
                       profile.setURL(finalPath);
                   return profile;
  @@ -485,11 +492,11 @@
           }
           // TODO: ACL security
   
  -         URL url = TurbineServlet.getResource( finalPath );
  -         if (url != null)
  -             profile.setURL(url.toString());
  -         else
  -             profile.setURL(finalPath);
  +        String realPath = TurbineServlet.getRealPath( finalPath );
  +        if (realPath != null)
  +            profile.setURL(realPath);
  +        else
  +            profile.setURL(finalPath);
   
           return profile;
       }
  @@ -919,13 +926,15 @@
       public String locateScreenTemplate(RunData data, String template)
       {
           String path = localizeTemplateName(data);
  -        if (!template.startsWith("/"))
  -            path = path + "/" ;
  +
  +        String located = locateTemplate(data, "/screens", path, template);
  +        if (null == located) 
  +        {
  +            // FIXME: need to get default.layout.template from TR.p
  +            template = "/default."+getTemplateExtension(template);
  +            located = locateTemplate(data, "/screens", path, template);
  +        }
   
  -        path = "/screens" + path;
  -        String located = locateTemplate(data, path, template);
  -        if (null == located)  // FIXME: need to get default.layout.template from TR.p
  -            located = locateTemplate(data, path, "/default.vm");
           return located;
       }
   
  @@ -940,13 +949,15 @@
       public String locateLayoutTemplate(RunData data, String template)
       {
           String path = localizeTemplateName(data);
  -        if (!template.startsWith("/"))
  -            path = path + "/" ;
  +
  +        String located = locateTemplate(data, "/layouts", path, template);
  +        if (null == located) 
  +        {
  +            // FIXME: need to get default.layout.template from TR.p
  +            template = "/default."+getTemplateExtension(template);
  +            located = locateTemplate(data, "/layouts", path, template);
  +        }
   
  -        path = "/layouts" + path;
  -        String located = locateTemplate(data, path, template);
  -        if (null == located)  // FIXME: need to get default.layout.template from TR.p
  -            located = locateTemplate(data, path, "/default.vm");
           return located;
       }
   
  @@ -961,67 +972,83 @@
       public String locatePortletTemplate(RunData data, String template)
       {
           String path = localizeTemplateName(data);
  -        if (!template.startsWith("/"))
  -            path = path + "/" ;
   
  -        path = "/portlets" + path.toString();
  -        return locateTemplate(data, path, template);
  +        path = locateTemplate(data, "/portlets", path, template);
  +        
  +        return "/portlets"+path;
       }
   
       /**
        * Locate a template using the Profiler's fallback algorithm
        *
  +     * @param resourceType the path specific to the resource type sought (eg /screens)
        * @param path the fullest path to the template based on simple NLS/mediatype directory
        * @param template the name of the template
        *
        * @return the exact path to the template, or null if not found
        */
  -    public String locateTemplate(RunData data, String path, String template)
  +    public String locateTemplate(RunData data, String resourceType, String path, String template)
       {
           String finalPath;
  -        int len = template.length();
  -        if (template.startsWith("/") && len > 1)
  -            template = template.substring(1, len);
   
  -        while( (finalPath = templateFallback(path, template)) == "") {
  +        // make sure resourceType doesn't end with "/" but starts with "/"
  +        if (resourceType.endsWith("/"))
  +        {
  +            resourceType = resourceType.substring(0, resourceType.length()-1);
  +        }
  +        if (!resourceType.startsWith("/"))
  +        {
  +            resourceType = "/"+resourceType;
  +        }
  +        // make sure path doesn't end with "/" but starts with "/"
  +        if (path.endsWith("/"))
  +        {
  +            path = path.substring(0, path.length()-1);
  +        }
  +        if (!path.startsWith("/"))
  +        {
  +            path = "/"+path;
  +        }
  +        // make sure template starts with "/"
  +        if (!template.startsWith("/"))
  +        {
  +            template = "/"+template;
  +        }
  +        
  +        StringBuffer fullPath = new StringBuffer( templateRoot );
  +
  +        fullPath.append("/").append(getTemplateExtension(template));
  +        fullPath.append(resourceType);
  +        
  +        String basePath = fullPath.toString();
  +        String realPath = null;
  +        String workingPath = null;
  +
  +        do
  +        {
  +            workingPath = path+template;
  +            realPath = TurbineServlet.getRealPath( basePath + workingPath );
  +
  +            // the current template exists, return the corresponding path
  +            if (templateExists(realPath))
  +            {
  +                Log.debug("template exists: "+realPath+" returning "+workingPath);
  +                return workingPath;
  +            }
  +            // else strip path of one of its components and loop
               int pt = path.lastIndexOf(PATH_SEPARATOR);
  -            if (-1 == pt)
  +            if ( pt > -1 )
               {
  -                path = "";  // look in psml root
  -                finalPath = templateFallback(path, template);
  -                if (finalPath == "")
  -                {
  -                    //String errorMessage = "Failed to find resource for " + original;
  -                    // throw new ProfileException(errorMessage);
  -                    return null;
  -                }
  -                break; // found default resource in root
  +                path = path.substring(0,pt);
               }
  -            int length = path.length();
  -            if (pt == length - 1 && length > 1)
  +            else
               {
  -                //pt = pt - 1;
  -                path = path.substring(0, pt);
  -                pt = path.lastIndexOf(PATH_SEPARATOR);
  +                path = null;
               }
  -            path = path.substring(0, pt);
  -        }
  -        if ("" == finalPath)
  -            finalPath = null;
  -        else
  -        {
  -            // now remove the webapp full path info
  -            finalPath = stripPrefix(templateRoot, finalPath);
  -            if (!finalPath.startsWith("/"))
  -               finalPath = "/" + finalPath;
  -            if (finalPath.startsWith("/screens" ))
  -                finalPath = stripPrefix("/screens", finalPath);
  -            else if (finalPath.startsWith("/layouts" ))
  -                finalPath = stripPrefix("/layouts", finalPath);
  -//            else if (finalPath.startsWith("/portlets" ))
  -//                finalPath = stripPrefix("/portlets", finalPath);
           }
  -        return finalPath;
  +        while (path != null);
  +        
  +        return null;
       }
   
       /**
  @@ -1052,7 +1079,7 @@
           data.setContentType( cm.getPreferredType().toString() );  
           if ((type != null) && (type.length() > 0)) 
               templatePath.append("/").append(type);
  -	    
  +        
           // Grab the Locale from the temporary storage in the User object
           Locale locale = (Locale)data.getUser().getTemp("locale");
           String language = locale.getLanguage();
  @@ -1065,76 +1092,27 @@
           return  templatePath.toString();
       }
   
  -    /*
  -     * string manipulation function to remove a prefixed substring from a string
  +    /** 
  +     * Returns the extension for the specified template
        *
  -     * @param head the prepended string.
  -     * @param finalPath the full string.
  -     * @return the finalPath minus the head.
  -     */
  -    private String stripPrefix( String head, String finalPath)
  -    {
  -        int start = head.length();
  -        int end = finalPath.length();
  -        if (end > start)
  -            finalPath = finalPath.substring(start, end);
  -        return finalPath;
  +     * @param template the template name to scan for an extension
  +     * @return the template extension if it exists or the default 
  +     * template extension
  +     */
  +    private String getTemplateExtension(String template)
  +    {
  +        String ext = TurbineTemplate.getDefaultExtension();
  +        
  +        int idx = template.lastIndexOf(".");
  +        
  +        if (idx > 0)
  +        {
  +            ext = template.substring(idx+1);
  +        }
  +        
  +        return ext;
       }
  -
  -    /**
  -     * apply fallback algorithm to finding resources from most specific
  -     * to least specific starting at media type specific, fallback to a specific
  -     *
  -     * @parameter path full path to resource
  -     * @parameeter resource the template resource name.
  -     * @return a String the modified path to the resource based on fallback
  -     */
  -    protected String templateFallback(String path, String resource)
  -    {
  -        StringBuffer fullPath = new StringBuffer( templateRoot );
  -
  -        int len = path.length();
  -        if (path.startsWith("/") && len > 1)
  -            path = path.substring(1, len);
  -        fullPath.append(path);
  -        if (path.length() > 0 && !path.endsWith(PATH_SEPARATOR))
  -            fullPath.append(PATH_SEPARATOR);
  -
  -//        int count = 0;
  -
  -        String basePath = fullPath.toString();
  -        String realPath, workingPath;
  -
  -//        for ( ; count > 0 ; count--)
  - //       {
  -           workingPath = basePath + resource;
  -           realPath = TurbineServlet.getRealPath( workingPath );
  -           if (templateExists(realPath))
  -               return workingPath;
  -            int pt = basePath.lastIndexOf(PATH_SEPARATOR);
  -            int length = basePath.length();
  -            if (-1 != pt)
  -            {
  -                if (pt == length - 1 && length > 1)
  -                {
  -                    //pt = pt - 1;
  -                    basePath = basePath.substring(0, pt);
  -                    pt = basePath.lastIndexOf(PATH_SEPARATOR);
  -                }
  -                basePath = basePath.substring(0, pt);
  -                basePath = basePath + PATH_SEPARATOR;
  -            }
  -   //     }
  -
  -        fullPath.append(resource);
  -        realPath = TurbineServlet.getRealPath( fullPath.toString() );
       
  -        if (templateExists(realPath))
  -            return fullPath.toString();  // found as is
  -
  -        return "";
  -    }
  -
       /**
        * checks for the existence of a template resource given a key
        *
  
  
  
  1.4       +3 -2      jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/ProfilerService.java
  
  Index: ProfilerService.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/ProfilerService.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ProfilerService.java	2001/06/04 07:14:37	1.3
  +++ ProfilerService.java	2001/06/06 22:29:08	1.4
  @@ -68,7 +68,7 @@
    * 
    * @see org.apache.jetspeed.om.profile.Profile
    * @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a>
  - * @version $Id: ProfilerService.java,v 1.3 2001/06/04 07:14:37 taylor Exp $
  + * @version $Id: ProfilerService.java,v 1.4 2001/06/06 22:29:08 raphael Exp $
    */
   
   public interface ProfilerService extends Service
  @@ -204,11 +204,12 @@
       /**
        * Locate a template using the Profiler's fallback algorithm
        *
  +     * @param resourceType the path specific to the resource type sought (eg /screens)
        * @param path the fullest path to the template based on simple NLS/mediatype directory
        * @param template the name of the template
        * @return the exact path to the found template
        */
  -    public String locateTemplate(RunData data, String path, String template);
  +    public String locateTemplate(RunData data, String resourceType, String path, String template);
       public String locateScreenTemplate(RunData data, String template);
       public String locateLayoutTemplate(RunData data, String template);
       public String locatePortletTemplate(RunData data, String template);
  
  
  
  1.15      +2 -3      jakarta-jetspeed/src/java/org/apache/jetspeed/util/URILookup.java
  
  Index: URILookup.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/util/URILookup.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- URILookup.java	2001/05/08 06:27:25	1.14
  +++ URILookup.java	2001/06/06 22:29:10	1.15
  @@ -119,7 +119,7 @@
    * 
    * @author <A HREF="shesmer@raleigh.ibm.com">Stephan Hesmer</A>
    * @author <A HREF="sgala@apache.org">Santiago Gala</A>
  - * @version $Id: URILookup.java,v 1.14 2001/05/08 06:27:25 taylor Exp $
  + * @version $Id: URILookup.java,v 1.15 2001/06/06 22:29:10 raphael Exp $
    */
   
   public class URILookup {
  @@ -366,8 +366,7 @@
                   if (aPortletName==null) throw new JetspeedException( "A portlet is required to return an URI." );
                   DynamicURI uri = new DynamicURI( rundata );
                   uri.setAction( ACTION_MARKPAGE );
  -                uri.addPathInfo( "portlet", 
  -                                 URIEncoder.encode( aPortletName ) );
  +                uri.addPathInfo( "portlet", aPortletName );
                   newURI = uri.toString();
               }
               else if (aSubType==SUBTYPE_LOGOUT) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org