[jboss-user] [JBoss Portal] - Re: IPC Portlet calling itself?

trupoet do-not-reply at jboss.com
Thu Sep 28 18:35:44 EDT 2006


So the code that does this is below. What I'm wondering is if I even need the Listener since the portlet is just sending an action to itself? Is the Listener / service stuff only needed for other portlets to call each other? This is of course just POC/Experimenting code here.


  | public class ContentDisplay extends JBossPortlet
  | {
  | 	private String RootReferencePath = "/app:company_home";
  | 	
  | 	
  | 	public void processAction(JBossActionRequest request, JBossActionResponse response) throws PortletException, PortletSecurityException, IOException
  | 	{
  | 		String filename = request.getParameter("filename");
  | 		if(filename != null)
  | 			response.setRenderParameter("filename",filename);
  | 	}
  | 	
  | 	
  |     protected void doView(JBossRenderRequest rRequest, JBossRenderResponse rResponse) throws PortletException, PortletSecurityException, IOException
  | 	{
  |     	String filename = rRequest.getParameter("filename");
  |     	
  |     	if(filename == null)
  |     		filename = "index.html";
  |     	
  |     	
  |     	AuthenticationUtils.startSession("admin", "admin");
  |     	EngineConfiguration config = AuthenticationUtils.getEngineConfiguration();
  |     	
  |     	
  | 	    try
  | 	    {
  | 	    	rResponse.setContentType("text/html");
  | 	    	PrintWriter writer = rResponse.getWriter();
  | 	    
  | 	        Store STORE = new Store(StoreEnum.workspace, "SpacesStore"); //Root store for Alfresco
  | 
  | 	        filename = filename.replaceAll("/","/cm:");
  | 	        
  | 	        
  | 	        String refPath = RootReferencePath + "/cm:"+filename;
  | 	        
  | 	        Reference reference = new Reference(STORE, null,refPath);
  | 	        
  | 	        ContentServiceLocator contServLocator = new ContentServiceLocator(config);
  | 	        ContentServiceSoapPort contService = (ContentServiceSoapPort)contServLocator.getContentService();
  | 	        Content[] readResult = contService.read(new Predicate(new Reference[]{reference}, STORE, null), Constants.PROP_CONTENT);
  | 	        
  | 	        Content content = readResult[0];
  | 	        
  | 	        String contentUrl = content.getUrl() + "?ticket="+AuthenticationUtils.getCurrentTicket();
  | 	        
  | 	        StringBuilder content2Print = new StringBuilder();
  | 	        
  | 	        URL url = new URL(contentUrl);
  |             URLConnection conn = url.openConnection();
  |             BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  |             
  |             content2Print.append(br.readLine());
  |             while (br.ready())
  |             {	
  |             	content2Print.append(br.readLine());
  |             }
  |             
  |             String finalContent = content2Print.toString();
  |             Pattern oldLinks = Pattern.compile("<a href=\"\$");
  |             finalContent = oldLinks.matcher(finalContent).replaceAll("<a href=\""+rResponse.createActionURL()+"&filename=");
  |             
  |             writer.write(finalContent);
  | 	        writer.close();
  | 	    }	 
  | 	    catch(Throwable e)
  | 	    {
  | 	    	Log.error(this,"Something bad happened: ",e);
  | 	    }
  | 	    finally
  | 	    {
  | 	    	AuthenticationUtils.endSession();
  | 	    }
  | 	}
  | 
  |     public static class Listener implements PortalNodeEventListener
  |     {
  |     	public PortalNodeEvent onEvent(PortalNodeEventBubbler bubbler, PortalNodeEvent event)
  |     	{
  |     		PortalNode node = event.getNode();
  |     		String nodeName = node.getName();
  |     		
  |     		WindowActionEvent newEvent = null;
  |     		if(nodeName.equals("ContentDisplayPortlet") && event instanceof WindowActionEvent)
  |     		{
  |     			WindowActionEvent wae = (WindowActionEvent) event;
  |     			if(node != null)
  |     			{
  |     				newEvent = new WindowActionEvent(node);
  |     				newEvent.setMode(wae.getMode());
  |     				newEvent.setParameters(wae.getParameters());
  |     			}
  |     		}
  |     		if(newEvent != null)
  |     			return newEvent;
  |     		else
  |     			return bubbler.dispatch(event);
  |     	}
  |     }
  |     
  | }
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3975039#3975039

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3975039



More information about the jboss-user mailing list