portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From roger...@apache.org
Subject cvs commit: jakarta-jetspeed-2/portals-bridges/perl/src/java/org/apache/portals/bridges/perl PerlPortlet.java PerlParameters.java
Date Mon, 08 Nov 2004 22:30:54 GMT
rogerrut    2004/11/08 14:30:54

  Modified:    portals-bridges/perl/src/java/org/apache/portals/bridges/perl
                        PerlPortlet.java PerlParameters.java
  Log:
  Cleanup and improvement of the PERL portlet
  --> Added navigation support for Form actions, hrefs to other perl scripts
  --> Normalized action handling for the portlet.
  -- >Moved some utility functions into the portals-bridges common package since the PHP
portlet uses some of the same functionality
  
  Revision  Changes    Path
  1.2       +52 -87    jakarta-jetspeed-2/portals-bridges/perl/src/java/org/apache/portals/bridges/perl/PerlPortlet.java
  
  Index: PerlPortlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portals-bridges/perl/src/java/org/apache/portals/bridges/perl/PerlPortlet.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PerlPortlet.java	3 Nov 2004 20:32:18 -0000	1.1
  +++ PerlPortlet.java	8 Nov 2004 22:30:54 -0000	1.2
  @@ -24,7 +24,7 @@
   import java.io.InputStream;
   import java.io.InputStreamReader;
   import java.io.PrintWriter;
  -import java.util.Iterator;
  +import java.util.Enumeration;
   
   import javax.servlet.http.HttpServletRequestWrapper;
   import javax.servlet.http.HttpServletResponse;
  @@ -43,6 +43,7 @@
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  +import org.apache.portals.bridges.common.ScriptPostProcess;
   
   
   /**
  @@ -69,11 +70,8 @@
   	 * DemoMode on or off
   	 */
   	public static final String PARAM_DEMO_MODE	=	"DemoMode";
  -	
  -	   
  -    // Local variables
  -    private final String ACTION_PARAMETER_PERL = "_PERL";
  -    
  +
  +//  Local variables
   	private String perlScript	=	"perl-demo.cgi";
       private String	scriptPath	=	"cgi-bin";
       
  @@ -122,19 +120,23 @@
        */
       public void processAction(ActionRequest actionRequest, ActionResponse actionResponse)
throws PortletException, IOException
   	{
  -    	String perlParameter = actionRequest.getParameter(ACTION_PARAMETER_PERL);
  -    	//System.out.println("Action parameter for perl " + perlParameter);
  +    	String perlParameter = actionRequest.getParameter(PerlParameters.ACTION_PARAMETER_PERL);
  +    	//TODO: Remove Debug
  +		System.out.println("Action parameter for perl " + perlParameter);
  +		
       	/*
       	 * If the perlParameter is not empty create a PerlParameter object and attach it to
the session
       	 */
       	if ( perlParameter != null && perlParameter.length() > 0)
       	{
  +    		// Perl Parameter Object
  +    		PerlParameters cgi = new PerlParameters();
  +    		
       		// Separate the values before and after the Query Mark ?
       		int ixQuery = perlParameter.indexOf('?');
       		if ( ixQuery != -1)
       		{
  -    			PerlParameters cgi = new PerlParameters();
  -    			cgi.setPerlScript(perlParameter.substring(0,ixQuery));
  +    			cgi.setScriptName(perlParameter.substring(0,ixQuery));
       			
       			String queryArguments = perlParameter.substring(ixQuery+1);
       			System.out.println("ProcessRequest -- Script " + perlParameter.substring(0,ixQuery)
+ " Query string " + queryArguments);
  @@ -150,8 +152,33 @@
       			cgi.addQueryArgument(queryArguments);
       			
       			// Add the PerlParameters to the session
  -    			actionRequest.getPortletSession().setAttribute("SELECTED_VIEW", cgi, PortletSession.APPLICATION_SCOPE);
  +    			actionRequest.getPortletSession().setAttribute(PerlParameters.PERL_PARAMETER, cgi,
PortletSession.APPLICATION_SCOPE);
       		}
  +    		else
  +    		{
  +    			// No query string just the script name
  +    			cgi.setScriptName(perlParameter);
  +    			
  +    			// Get all the parameters from the request and add them as query arguments
  +    			Enumeration enum = actionRequest.getParameterNames();
  +    			String name, value;
  +    			while (enum.hasMoreElements())
  +    			{
  +    				name = (String)enum.nextElement();
  +    				// PERL_PARAMETER already processed just ignore it
  +    				if (name.compareToIgnoreCase(PerlParameters.ACTION_PARAMETER_PERL) != 0)
  +    				{
  +    					value = actionRequest.getParameter(name);
  +    					
  +    					// TODO: Remove debug
  +    					System.out.println("Query: " + name + "=" + value );
  +    					
  +    					cgi.addQueryArgument(name + "=" + value);
  +    				}
  +    			}
  +    			// Add the PerlParameters to the session
  +    			actionRequest.getPortletSession().setAttribute(PerlParameters.PERL_PARAMETER, cgi,
PortletSession.APPLICATION_SCOPE);
  +     		}
       	}
   	}
       /**
  @@ -162,6 +189,9 @@
       public void doView(RenderRequest request, RenderResponse response)
       throws PortletException, IOException
   	{
  +    	// TODO: Remove debug
  +    	System.out.println("Path info for request " + ((HttpServletRequest)((HttpServletRequestWrapper)
request).getRequest()).getPathInfo());
  +    	
       	// Set the content type
       	response.setContentType("text/html");
       	
  @@ -195,7 +225,7 @@
       	{
       		try
   			{
  -	    		perlParam = (PerlParameters)request.getPortletSession().getAttribute("SELECTED_VIEW",
PortletSession.APPLICATION_SCOPE);
  +	    		perlParam = (PerlParameters)request.getPortletSession().getAttribute(PerlParameters.PERL_PARAMETER,
PortletSession.APPLICATION_SCOPE);
   			}
   	    	catch (Exception e )
   			{
  @@ -205,21 +235,18 @@
   	    	if (perlParam != null)
   	    	{
   	    		query = perlParam.getQueryString();
  -	    		perlScript = perlParam.getPerlScript();
  +	    		perlScript = perlParam.getScriptName();
   	    		
   	    	}
       	}
       	
       	// Open the perl script and extract the perl executable path. It's the same way as
apache HTTP executes PERL
  +    	String perlExecutable = null;
  +    	
       	String pathTranslated = ((HttpServletRequest)((HttpServletRequestWrapper) request).getRequest()).getPathTranslated();
       	String contextPath =   request.getContextPath();
       	
       	contextPath = pathTranslated.substring(0, pathTranslated.indexOf("webapps") + 7) +
contextPath + "/";
  -        	
  -    	//String contextPath	=	((JetspeedPortletContext)this.getPortletContext()).getServletContext().getRealPath(
((HttpServletRequestWrapper) request).getServletPath());
  -    	String perlExecutable = null;
  -    	
  -    	//String rootContextPath = contextPath.substring(0, contextPath.lastIndexOf("container")
) ;
       	contextPath += scriptPath;
       	
       	contextPath += "/";
  @@ -228,8 +255,7 @@
       	
       	// command to execute
       	String command = null;
  -    	
  -    	
  +    		
       	// Open the script and read the first line to get the executable !/usr/bin/perl OR
!c:\bin\perl\perl.exe
       	try
   		{
  @@ -338,16 +364,15 @@
   				perlResult.close();	
   				
   				// Post Process for generated page
  -				// Any HREFs should be extended with the ActionURL
  +				// Any HREFs and Form actions should be extended with the ActionURL
   				PortletURL actionURL = response.createActionURL();
  -
  -				String finalPage = processHREFS("<a", ">", "href=", "\'", page.toString(), actionURL);
   				
  -				finalPage = processHREFS("<A", ">", "HREF=", "\'", finalPage, actionURL);
  -				finalPage = processHREFS("<AREA", ">", "href=", "\'", finalPage, actionURL);
  +				ScriptPostProcess processor = new ScriptPostProcess();
  +				processor.setInitalPage(page);
  +				processor.postProcessPage(actionURL, PerlParameters.ACTION_PARAMETER_PERL);
  +				String finalPage = processor.getFinalizedPage();
   				
   				// Write the page
  -				//writer.println(page.toString());
   				writer.println(finalPage);
   			}
   			catch(IOException ioe)
  @@ -356,65 +381,5 @@
   			}
   		}	
   	} 
  -    
  -    private String processHREFS(String startTag, String endTag, String ref, String quote,
String inputPage, PortletURL actionURL)
  -    {
  -    	StringBuffer finalPage = new StringBuffer();
  -		String page = inputPage;
  -		
  -		int ixTagOpen, ixTagEnd, ixRefStart, ixRefEnd;
  -		ref = ref + quote;
  -		
  -		// Start search
  -		ixTagOpen = page.indexOf(startTag);
  -		
  -	try
  -		{
  -			while (ixTagOpen != -1 )
  -			{
  -				finalPage.append(page.substring(0, ixTagOpen));
  -				page = page.substring(ixTagOpen);
  -				
  -				ixTagEnd = page.indexOf(endTag);
  -				ixRefStart = page.indexOf(ref);
  -				
  -				//If reference start tag is after endTag it means that the Tag doesn't include any
source links
  -				// just continue...
  -				if ( ixRefStart == -1 || ixRefStart > ixTagEnd )
  -				{
  -					finalPage.append(page.substring(0, ixTagEnd));
  -					page = page.substring(ixTagEnd);
  -				}
  -				else
  -				{
  -					ixRefStart = ixRefStart + ref.length();
  -					finalPage.append(page.substring(0, ixRefStart));
  -					page = page.substring(ixRefStart);
  -					ixRefEnd = page.indexOf(quote);
  -						
  -					// Extract the URL
  -					String url = page.substring(0, ixRefEnd);
  -						
  -					// Prepend the Action URL
  -					actionURL.setParameter(ACTION_PARAMETER_PERL, url);
  -					
  -					finalPage.append(actionURL.toString()).append(quote);
  -					
  -					//Remainder
  -					page = page.substring(ixRefEnd+1);
  -				}
  -				
  -				// Continue scan
  -				ixTagOpen = page.indexOf(startTag);
  -			}
  -			
  -			finalPage.append(page);
  -			}catch(Exception e)
  -			{
  -				System.out.println("ERROR: Exception in processHREFS " + e.getMessage() );
  -			}
  -			
  -			return finalPage.toString();
  -    }
   }
   	
  
  
  
  1.2       +21 -41    jakarta-jetspeed-2/portals-bridges/perl/src/java/org/apache/portals/bridges/perl/PerlParameters.java
  
  Index: PerlParameters.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portals-bridges/perl/src/java/org/apache/portals/bridges/perl/PerlParameters.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PerlParameters.java	3 Nov 2004 20:32:18 -0000	1.1
  +++ PerlParameters.java	8 Nov 2004 22:30:54 -0000	1.2
  @@ -15,6 +15,8 @@
   */
   package org.apache.portals.bridges.perl;
   
  +import org.apache.portals.bridges.common.ScriptRuntimeData;
  +
   /**
   * PerlParameters
   * Class holding information about the perl script to execute.This class is typically attached
to a PortletAction (as an attribute).
  @@ -23,13 +25,28 @@
   * @version $Id$
   */
   
  -public class PerlParameters {
  +public class PerlParameters extends ScriptRuntimeData{
  +	
  +	/** 
  +	 * Action Parameter for Perl requests
  +	 */   
  +    public static  final String ACTION_PARAMETER_PERL = "_PERL";
  +    
  +    /**
  +     * Session variable for Perl Parameters
  +     */
  +    public static  final String PERL_PARAMETER = "PerlParameter";
  +	
   	private String requestMethod = "GET";
   	private String queryString = null;
   	private String perlScript = null;
   	private String displayMessage = null;
   	
  -
  +	// Constructor
  +	public  PerlParameters() {
  +		setSessionParameterName(PERL_PARAMETER);
  +	}
  +	
   	// Getters and setters
   	public void setRequestMethod(String requestMethod)
   	{
  @@ -41,41 +58,4 @@
   		return this.requestMethod;
   	}
   	
  -	public void addQueryArgument(String query)
  -	{
  -		if (queryString == null)
  -		{
  -			queryString = query;
  -		}
  -		else
  -		{
  -			queryString += '&';
  -			queryString += query;
  -		}	
  -	}
  -	
  -	public String getQueryString()
  -	{
  -		return this.queryString;
  -	}
  -	
  -	public void setPerlScript(String script)
  -	{
  -		this.perlScript = script;
  -	}
  -	
  -	public String getPerlScript()
  -	{
  -		return this.perlScript;
  -	}
  -	
  -	public void setDisplayMessage(String msg)
  -	{
  -		this.displayMessage = msg;
  -	}
  -	
  -	public String getDisplayMessage()
  -	{
  -		return this.displayMessage;
  -	}
  -}
  +}
  \ No newline at end of file
  
  
  

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


Mime
View raw message