Thread [http-8088-Processor25] (Suspended (breakpoint at line 64 in
SetURLAction))
SetURLAction.execute(ActionMapping, ActionForm, HttpServletRequest,
HttpServletResponse) line: 64
PortletRequestProcessor(RequestProcessor).processActionPerform(HttpServletRequest,
HttpServletResponse, Action, ActionForm, ActionMapping) line: 419
PortletRequestProcessor(RequestProcessor).process(HttpServletRequest,
HttpServletResponse) line: 224
PortletRequestProcessor.process(HttpServletRequest, HttpServletResponse) line:
50
PortletServlet(ActionServlet).process(HttpServletRequest, HttpServletResponse)
line: 1194
PortletServlet(ActionServlet).doGet(HttpServletRequest, HttpServletResponse)
line: 414
PortletServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse)
line: 689
PortletServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 802
ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line:
252
ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 173
StandardWrapperValve.invoke(Request, Response, ValveContext) line: 214
StandardValveContext.invokeNext(Request, Response) line: 104
StandardPipeline.invoke(Request, Response) line: 520
StandardContextValve.invokeInternal(Wrapper, Request, Response) line: 198
StandardContextValve.invoke(Request, Response, ValveContext) line: 152
StandardValveContext.invokeNext(Request, Response) line: 104
StandardPipeline.invoke(Request, Response) line: 520
StandardHostValve.invoke(Request, Response, ValveContext) line: 137
StandardValveContext.invokeNext(Request, Response) line: 104
ErrorReportValve.invoke(Request, Response, ValveContext) line: 118
StandardValveContext.invokeNext(Request, Response) line: 102
StandardPipeline.invoke(Request, Response) line: 520
StandardEngineValve.invoke(Request, Response, ValveContext) line: 109
StandardValveContext.invokeNext(Request, Response) line: 104
StandardPipeline.invoke(Request, Response) line: 520
StandardEngine(ContainerBase).invoke(Request, Response) line: 929
CoyoteAdapter.service(Request, Response) line: 160
Http11Processor.process(InputStream, OutputStream) line: 799
Http11Protocol$Http11ConnectionHandler.processConnection(TcpConnection,
Object[]) line: 705
TcpWorkerThread.runIt(Object[]) line: 577
ThreadPool$ControlRunnable.run() line: 684
ThreadWithAttributes(Thread).run() line: 534
and this also
this= SetURLAction (id=70)
mapping= ActionMapping (id=73)
form= null
request= CoyoteRequestFacade (id=4188)
request (RequestFacade)= CoyoteRequest (id=4190)
attributes= HashMap (id=4192)
entrySet= null
keySet= null
loadFactor= 0.75
modCount= 608
size= 3
table= HashMap$Entry[128] (id=4208)
[0...99]
[0]= null
[1]= null
[2]= null
[3]= null
[4]= null
[5]= null
[6]= null
[7]= null
[8]= null
[9]= null
[10]= null
[11]= null
[12]= null
[13]= null
[14]= null
[15]= null
[16]= null
[17]= null
[18]= null
[19]= null
[20]= null
[21]= null
[22]= null
[23]= null
[24]= null
[25]= null
[26]= null
[27]= null
[28]= null
[29]= null
[30]= HashMap$Entry (id=4219)
[31]= null
[32]= null
[33]= null
[34]= null
[35]= null
[36]= null
[37]= null
[38]= null
[39]= null
[40]= null
[41]= null
[42]= null
[43]= null
[44]= null
[45]= null
[46]= null
[47]= null
[48]= null
[49]= null
[50]= null
[51]= null
[52]= null
[53]= null
[54]= null
[55]= null
[56]= null
[57]= null
[58]= null
[59]= null
[60]= null
[61]= null
[62]= null
[63]= null
[64]= null
[65]= null
[66]= null
[67]= null
[68]= null
[69]= null
[70]= null
[71]= null
[72]= HashMap$Entry (id=4220)
hash= 1428559048
key= "org.apache.struts.action.mapping.instance"
next= null
value= ActionMapping (id=73)
[73]= null
[74]= null
[75]= null
[76]= null
[77]= null
[78]= null
[79]= null
[80]= null
[81]= null
[82]= null
[83]= null
[84]= null
[85]= null
[86]= null
[87]= null
[88]= null
[89]= null
[90]= null
[91]= null
[92]= null
[93]= null
[94]= null
[95]= null
[96]= HashMap$Entry (id=4221)
hash= 1107355616
key= "org.apache.struts.action.MODULE"
next= null
value= ModuleConfigImpl (id=2075)
[97]= null
[98]= null
[99]= null
[100...127]
threshold= 96
values= null
authType= null
connector= CoyoteConnector (id=2043)
context= StandardContext (id=2044)
cookies= null
cookiesParsed= false
coyoteRequest= Request (id=4193)
dispatcherType= Integer (id=2046)
facade= CoyoteRequestFacade (id=4188)
filterChain= ApplicationFilterChain (id=2156)
formats= SimpleDateFormat[3] (id=4194)
inputBuffer= InputBuffer (id=4195)
inputStream= CoyoteInputStream (id=4196)
localAddr= null
locales= ArrayList (id=4197)
localesParsed= false
localName= null
localPort= -1
log= null
mappingData= MappingData (id=4198)
notes= HashMap (id=4199)
parameterMap= ParameterMap (id=4200)
parser= StringParser (id=4201)
postData= null
reader= CoyoteReader (id=4202)
readOnlyAttributes= HashMap (id=4203)
remoteAddr= null
remoteHost= null
remotePort= -1
requestDispatcherPath= MessageBytes (id=4204)
requestedSessionCookie= true
requestedSessionId= "B63999FD6331EBA568F30C0FFB4B5CF0"
requestedSessionURL= false
requestParametersParsed= false
response= CoyoteResponse (id=4206)
secure= false
session= StandardSession (id=4207)
sessionParsed= false
socket= null
subject= null
URIConverter= null
userPrincipal= null
usingInputStream= false
usingReader= false
valveContext= StandardValveContext (id=2158)
wrapper= StandardWrapper (id=2062)
request (CoyoteRequestFacade)= CoyoteRequest (id=4190)
response= CoyoteResponseFacade (id=4189)
Thanks
Jonathan
________________________________
From: Jonathan Hawkins [mailto:[EMAIL PROTECTED]
Sent: Wed 19/10/2005 19:13
To: [email protected]
Cc: [EMAIL PROTECTED]
Subject: RE: Struts Bridge and Inter Portlet Communication
________________________________
From: Ate Douma [mailto:[EMAIL PROTECTED]
Sent: Wed 19/10/2005 18:57
To: [email protected]
Subject: RE: Struts Bridge and Inter Portlet Communication
Jonathan Hawkins said:
> Ate,
>
> I\'ve built the latest portals-bridges-struts-1.2.7-0.4-SNAPSHOT.jar and
> deployed it in my webapp.
>
> I\'m using Eclipse to step through the code. This is my Execute method :-
>
> public ActionForward execute(ActionMapping mapping, ActionForm form,
> HttpServletRequest request, HttpServletResponse response) {
> logger = Logger.getLogger(\"Cedar-Portlets\");
> logger.debug(\"SetURLAction::execute - starting\");
> try {
>
>
> ActionRequest actionRequest = (ActionRequest) request
> .getAttribute(ContainerConstants.PORTLET_REQUEST);
> String id = this.getInstanceID(actionRequest);
> String msg_session_id = MessageHelper.getSessionID(actionRequest);
> MessageHelper.loadPrefs(actionRequest, id, msg_session_id);
> MessageHelper msgh = new MessageHelper(actionRequest
> .getPortletSession(true), id, msg_session_id);
> msgh.send(\"a_val\",
> \"this is a message from SetURLAction in portlet webapp \"
> + actionRequest.getContextPath());
> } catch (RuntimeException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> return mapping.findForward(\"failure\");
> }
> return mapping.findForward(\"success\");
> }
>
> actionRequest is always coming back as null, if I take a look at the
> attributes that are set within the HttpServletRequest, the only ones I can
> see being set are :-
>
> org.apache.struts.action.MESSAGE
>
> org.apache.struts.action.mapping.instance
>
> org.apache.struts.action.MODULE
>
> no sign of javax.portlet.request.
>
> This is driving me round the bend !!!!!
>
That is very strange.
Could you provide the full stacktrace of the call to your execute method?
Note: on line 354 of the StrutsPortlet.java the javax.portlet.request
attribute is/should be set.
Ate
>
>
> Any further assistance would be greatly appreciated, examples or
> otherwise.
>
>
>
> Jonathan
>
>
>
>
>
> ________________________________
>
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]
> Sent: Wed 19/10/2005 13:34
> To: [email protected]
> Cc: [EMAIL PROTECTED]; [email protected]
> Subject: Re: Struts Bridge and Inter Portlet Communication
>
>
>
> Thanks Ate,
>
> I was getting null pointer exceptions. I\'ll subscribe to the other list as
> well andbuild the struts bridge and see what I can get hold of this time.
>
> I\'ve created my own constants file with an entry for
> javax.portlet.request.
>
> All assistance is very much appreciated.
>
> Jonathan
>
>
>> Jonathan,
>> First of all, I cc\'d this to the bridges-user mailing list so we can
>> continue the discussion there.
>> (if you haven\'t subscribed yet:
>> http://portals.apache.org/bridges/mail-lists.html)
>>
>> It is not clear to me *what* is not working with the example you
>> provided. Do you get an exception/stacktrace or is the
>> ContainerConstants.PORTLET_REQUEST not set?
>>
>> In the latter case, it might be a case of which version of the
>> struts-bridge you are using. Since august 8, the struts-bridge trunk
>> now *does* provide the \"javax.portlet.request\" attribute, even when
>> accessed from an ActionRequest. See:
>> http://issues.apache.org/jira/browse/PB-2.
>> To be able to use it, you need to checkout and build the bridges
>> yourself.
>>
>> If you get an exception, could you please provide that?
>>
>> Note: Using ContainerConstants.PORTLET_REQUEST (instead of
>> \"javax.portlet.request\") binds you to the jetspeed-commons jar. If you
>> really want to be JSR-168 compliant, you should *not* use
>> jetspeed-commons.
>>
>> Regards,
>>
>> Ate
>>
>>
>> [EMAIL PROTECTED] wrote:
>>> I am trying integrate a Struts Portlet using Struts Bridge and an
>>> InterPortlet Communication library,
>>> http://www.doc.ic.ac.uk/~mo197/portlets/portlet_messaging/crosscontext.php
>>> , which works well with ordinary portlets.
>>>
>>> The library requires that I retrieve the PortletRequest /
>>> ActionRequest / RenderRequest. However within my Struts Portlet I only
>>> action and form classes and with execute I only have
>>> httpServletRequest available. Given that my action classes are running
>>> within s struts portlet how can I retrieve the PortletRequest that I
>>> need.
>>>
>>> The following code shows a simple portlet that works fine.
>>>
>>> public class Portlet1 extends GenericPortlet{
>>>
>>>
>>> protected void doEdit(RenderRequest request, RenderResponse
>>> response)
>>> throws PortletException, IOException {
>>> String id = this.getInstanceID(request);
>>> String msg_session_id = MessageHelper.getSessionID(request);
>>> MessageHelper.loadPrefs(request, id, msg_session_id);
>>> MessageUtils.prepareMappingForm(request, id,
>>> msg_session_id);
>>>
>>>
> getPortletContext().getRequestDispatcher(\"/WEB-INF/pages/edit_mappings.jsp\").include(request,response);>>
> }
>>>
>>>
>>> protected void doView(RenderRequest request, RenderResponse
>>> response)
>>> throws PortletException, IOException {
>>> String id = this.getInstanceID(request);
>>> String msg_session_id = MessageHelper.getSessionID(request);
>>> MessageHelper.loadPrefs(request, id, msg_session_id);
>>>
>>> response.setContentType(\"text/html\");
>>> PrintWriter out = response.getWriter();
>>>
>>> PortletURL aURL = response.createActionURL();
>>> aURL.setParameter(\"ACTION\", \"sendmsg\");
>>>
>>> out.println(\"<b>Message Session ID:</b>
>>> \"+msg_session_id+\"<br/>\");
>>> out.println(\"<b>Portlet App:</b>
>>> \"+request.getContextPath()+\"<br/>\");
>>>
>>> out.println(\"<b>Portlet1</b>:<br/>\");
>>> out.println(\"<a href=\\\"\"+aURL+\"\\\">send
>>> message</a><br/><br/>\");
>>>
>>> MessageHelper msgh = new
>>> MessageHelper(request.getPortletSession(true),
>>> id, msg_session_id);
>>> String msg = (String)msgh.get(\"a_val\");
>>> out.println(\"my a_val msg: \"+msg);
>>>
>>> }
>>>
>>> public void processAction(ActionRequest request, ActionResponse
>>> response)
>>> throws PortletException, IOException {
>>> String id = this.getInstanceID(request);
>>> String msg_session_id = MessageHelper.getSessionID(request);
>>> MessageHelper.loadPrefs(request, id, msg_session_id);
>>>
>>>
>>> if (request.getPortletMode().equals(PortletMode.EDIT)) {
>>> MessageUtils.processMappingForm(request,
>>> response, id,
>>> msg_session_id);
>>> }
>>>
>>> if (\"sendmsg\".equals(request.getParameter(\"ACTION\"))){
>>> System.out.println(\"try sending message from
>>> Portlet 1 in webapp
>>> \"+request.getContextPath());
>>> MessageHelper msgh = new
>>> MessageHelper(request.getPortletSession(true),
>>> id, msg_session_id);
>>> msgh.send(\"a_val\", \"this is a message from
>>> Portlet1 in portlet
>>> webapp
>>> \"+request.getContextPath());
>>> }
>>> }
>>>
>>> public String getInstanceID(PortletRequest request){
>>> return \"Portlet1.\"+MessageHelper.getPortletID(request);
>>> }
>>>
>>>
>>> }
>>>
>>>
>>> Hopefully from that you can see what I am trying to retrieve from
>>> within my action class. The following is my current execute method
>>>
>>> logger = Logger.getLogger(\"Cedar-Portlets\");
>>>
>>> logger.debug(\"SetURLAction::execute - starting\");
>>>
>>> try {
>>>
>>>
>>> ActionRequest actionRequest = (ActionRequest)
>>> request
>>>
>>> .getAttribute(ContainerConstants.PORTLET_REQUEST);
>>> String id = this.getInstanceID(actionRequest);
>>> String msg_session_id =
>>> MessageHelper.getSessionID(actionRequest);
>>> MessageHelper.loadPrefs(actionRequest, id,
>>> msg_session_id);
>>> MessageHelper msgh = new
>>> MessageHelper(actionRequest
>>> .getPortletSession(true), id,
>>> msg_session_id);
>>> msgh.send(\"a_val\",
>>> \"this is a message from
>>> SetURLAction in portlet webapp \"
>>> +
>>> actionRequest.getContextPath());
>>>
>>> } catch (RuntimeException e) {
>>> // TODO Auto-generated catch block
>>> e.printStackTrace();
>>> return mapping.findForward(\"failure\");
>>> }
>>> return mapping.findForward(\"success\");
>>>
>>>
>>>
>>>
>>> Which doesn\'t work, any ideas would be greatly appreciated.
>>>
>>> Jon Hawkins
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
>
> This email and any files transmitted with it are confidential
> and intended solely for the use of the individual or entity to
> whom they are addressed. Any unauthorised distribution or
> copying is strictly prohibited. Whilst CedarOpenAccounts
> takes steps to prevent the transmission of viruses via e-mail,
> we cannot guarantee that any email or attachment is free from
> computer viruses and you are strongly advised to undertake your
> own anti-virus precautions. CedarOpenAccounts grants no
> warranties regarding performance, use or quality of any e-mail
> or attachment and undertakes no liability for loss or damage,
> howsoever caused.
>
> CedarOpenAccounts is a trading name of Cedar Software Ltd and
> OpenAccounts Ltd.
>
> For more information on CedarOpenAccounts and our products,
> please visit our web site at http://www.cedaropenaccounts.com
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
This email and any files transmitted with it are confidential
and intended solely for the use of the individual or entity to
whom they are addressed. Any unauthorised distribution or
copying is strictly prohibited. Whilst CedarOpenAccounts
takes steps to prevent the transmission of viruses via e-mail,
we cannot guarantee that any email or attachment is free from
computer viruses and you are strongly advised to undertake your
own anti-virus precautions. CedarOpenAccounts grants no
warranties regarding performance, use or quality of any e-mail
or attachment and undertakes no liability for loss or damage,
howsoever caused.
CedarOpenAccounts is a trading name of Cedar Software Ltd and
OpenAccounts Ltd.
For more information on CedarOpenAccounts and our products,
please visit our web site at http://www.cedaropenaccounts.com
This email and any files transmitted with it are confidential
and intended solely for the use of the individual or entity to
whom they are addressed. Any unauthorised distribution or
copying is strictly prohibited. Whilst CedarOpenAccounts
takes steps to prevent the transmission of viruses via e-mail,
we cannot guarantee that any email or attachment is free from
computer viruses and you are strongly advised to undertake your
own anti-virus precautions. CedarOpenAccounts grants no
warranties regarding performance, use or quality of any e-mail
or attachment and undertakes no liability for loss or damage,
howsoever caused.
CedarOpenAccounts is a trading name of Cedar Software Ltd and
OpenAccounts Ltd.
For more information on CedarOpenAccounts and our products,
please visit our web site at http://www.cedaropenaccounts.com