I have problem with custom service under portlet, when i submit form and
execute listener and i want create Ilink to service i get this error:
Failure invoking listener method 'public
org.apache.tapestry.engine.ILink
com.skms.InternetPreVsetkych.tapestry.reporty.CelkovyPrehlad.formSubmit(org.apache.tapestry.IRequestCycle)'
on [EMAIL PROTECTED]: Property 'renderResponse'
of <OuterProxy for
tapestry.portlet.PortletRequestGlobals(org.apache.tapestry.portlet.PortletRequestGlobals)>
is null.
java.lang.NullPointerException
Property 'renderResponse' of <OuterProxy for
tapestry.portlet.PortletRequestGlobals(org.apache.tapestry.portlet.PortletRequestGlobals)>
is null.
*
$RenderResponse_10b4968ae3d._targetServiceProperty($RenderResponse_10b4968ae3d.java)
*
$RenderResponse_10b4968ae3d.createActionURL($RenderResponse_10b4968ae3d.java)
*
$RenderResponse_10b4968ae3b.createActionURL($RenderResponse_10b4968ae3b.java)
*
org.apache.tapestry.portlet.PortletLinkFactoryImpl.constructLink(PortletLinkFactoryImpl.java:49)
* $LinkFactory_10b4968acfa.constructLink($LinkFactory_10b4968acfa.java)
*
com.skms.InternetPreVsetkych.tapestry.reporty.GenerovanieReportov.getLink(GenerovanieReportov.java:65)
* $IEngineService_10b4968ad8f.getLink($IEngineService_10b4968ad8f.java)
*
org.apache.tapestry.services.impl.EngineServiceInnerProxy.getLink(EngineServiceInnerProxy.java:72)
*
org.apache.tapestry.services.impl.EngineServiceOuterProxy.getLink(EngineServiceOuterProxy.java:61)
*
com.skms.InternetPreVsetkych.tapestry.reporty.CelkovyPrehlad.formSubmit(CelkovyPrehlad.java:102)
Any suggestion what is wrong (in tapestry or in my config)?
Thanks
David
Service:
public class GenerovanieReportov implements IEngineService {
/**
* Logger for this class
*/
private static final Logger logger = Logger
.getLogger(GenerovanieReportov.class);
public static final String SERVICE_NAME = "generovanieReportov";
/** @since 4.0 */
private RequestExceptionReporter _exceptionReporter;
/** @since 4.0 */
private LinkFactory _linkFactory;
/** @since 4.0 */
private WebResponse _response;
private WebContext context;
private WebRequest request;
public void setRequest(WebRequest request) {
this.request = request;
}
public ILink getLink(boolean post, Object parameter) {
Map parameters = new HashMap();
parameters.put(ServiceConstants.SERVICE, getName());
if (parameter != null)
parameters.putAll((Map)parameter);
return _linkFactory.constructLink(this, false, parameters,
true);
}
protected final com.skms.InternetPreVsetkych.service.UcastnikService
getUcastnikService()
{
try
{
PrincipalStore.set(getRequest().getUserPrincipal());
SecurityStore.setMDPTRole(new Boolean
(getRequest().isUserInRole("mdpt")));
SecurityStore.setProvider(null);
if (!getRequest().isUserInRole("mdpt")){
try {
GroupManager grManager = (GroupManager)
getContext().getAttribute(CommonPortletServices.CPS_GROUP_MANAGER_COMPONENT);
Collection col =
grManager.getGroupsForUser(getRequest().getUserPrincipal().getName());
for (Iterator iter = col.iterator();
iter.hasNext();) {
Group element = (Group) iter.next();
Provider provider =
getUcastnikService().findProvider(element.getPrincipal().getName());
if (provider != null){
SecurityStore.setProvider(provider);
}
}
} catch (Exception e) {
logger.error("getUcastnikService() - e=" + e,
e); //$NON-NLS-1$
}
}
return
com.skms.InternetPreVsetkych.ServiceLocator.instance().getUcastnikService();
}
catch (final Throwable throwable)
{
throw new RuntimeException(throwable);
}
}
public void service(IRequestCycle cycle) throws IOException {
try
{
OutputStream output = _response.getOutputStream(new
ContentType("application/pdf"));
String report = cycle.getParameter("report");
ReportCreate rc = new ReportCreate();
SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy");
if ("ziadostNovoPripojenych".equals( report)){
Date dateOd = df.parse(cycle.getParameter("dateOd"));
Date dateDo = df.parse(cycle.getParameter("dateDo"));
rc.createZiadostNovoPripojenych(dateOd, dateDo, output);
}
if ("celkovyPrehlad".equals( report)){
Date dateOd = df.parse(cycle.getParameter("dateDue"));
if (cycle.getParameter("provider") != null){
Provider prov = Provider.Factory.newInstance();
prov.setId(new Long(cycle.getParameter("provider")));
SecurityStore.setProvider(prov);
}
rc.createCelkovyPrehlad(dateOd, output);
}
if ("celkovyPrehladProvider".equals( report)){
Date dateOd = df.parse(cycle.getParameter("dateDue"));
rc.createCelkovyPrehladProvider(dateOd, output);
}
}
catch (ClassCastException ex)
{
_exceptionReporter.reportRequestException("Report generate
error ", ex);
return;
}
catch (Throwable ex)
{
_exceptionReporter.reportRequestException("Error creating
pdf stream.", ex);
return;
}
return;
}
public String getName()
{
return SERVICE_NAME;
}
/** @since 4.0 */
public void setExceptionReporter(RequestExceptionReporter
exceptionReporter)
{
_exceptionReporter = exceptionReporter;
}
/** @since 4.0 */
public void setLinkFactory(LinkFactory linkFactory)
{
_linkFactory = linkFactory;
}
/** @since 4.0 */
public void setResponse(WebResponse response)
{
_response = response;
}
public void setContext(WebContext context) {
this.context = context;
}
public WebContext getContext() {
return context;
}
public WebRequest getRequest() {
return request;
}
}
hivemodule.xml:
<module id="com.skms.InternetPreVsetkych.tapestry.reporty"
version="4.0.0" package="org.apache.tapestry.portlet">
Add on for Tapestry that adds native Portlet support.
<dependency module-id="tapestry" version="4.0.0"/>
<dependency module-id="tapestry.portlet" version="4.0.0"/>
<dependency module-id="hivemind.lib" version="1.1.0"/>
<contribution
configuration-id="tapestry.portlet.resolver.PageResolverRules">
<match portlet-mode="view" page="reporty"/>
</contribution>
<contribution configuration-id="tapestry.state.ApplicationObjects">
<state-object name="validation-delegate" scope="session">
<create-instance class="org.apache.tapestry.valid.ValidationDelegate"/>
</state-object>
</contribution>
<contribution configuration-id="tapestry.services.ApplicationServices">
<service name="generovanieReportov"
object="service:GenerovanieReportov"/>
</contribution>
<service-point id="GenerovanieReportov"
interface="org.apache.tapestry.engine.IEngineService">
<invoke-factory>
<construct
class="com.skms.InternetPreVsetkych.tapestry.reporty.GenerovanieReportov">
<set-object property="exceptionReporter"
value="infrastructure:requestExceptionReporter"/>
<set-object property="response" value="infrastructure:response"/>
<set-object property="linkFactory"
value="infrastructure:linkFactory"/>
<set-object property="request" value="infrastructure:request"/>
<set-object property="context" value="infrastructure:context"/>
</construct>
</invoke-factory>
</service-point>
</module>
page:
<page-specification
class="com.skms.InternetPreVsetkych.tapestry.reporty.CelkovyPrehlad">
<description>add a description</description>
<inject property="request" object="infrastructure:request"/>
<inject property="context" object="infrastructure:context"/>
<inject property="portletRequest"
object="service:tapestry.portlet.PortletRequest"/>
<inject property="generovanieService"
object="engine-service:generovanieReportov"/>
<property name="datum" persist="session"/>
<property name="provider" persist="session"/>
</page-specification>
<form jwcid="[EMAIL PROTECTED]" success="listener:formSubmit"
clientValidationEnabled="ognl:true">
<table>
<tr>
<td class="portlet-section-alternate"><label
jwcid="@FieldLabel" field="component:datumPripojenia">Dátum</label></td>
<td class="portlet-form-field-label">
<span displayName="Dátum"
jwcid="[EMAIL PROTECTED]" value="ognl:datum"
validators="validators:required[Zadajte prosĂm dátum]"
translator="translator:date,pattern=dd.MM.yyyy"/>
</td>
</tr>
<tr>
<td class="portlet-section-alternate">Provider: </td>
<td class="portlet-form-field-label">
<select
jwcid="[EMAIL PROTECTED]" value="ognl:provider"
model="ognl:providerModel"
size="1"
displayName="Provider">
</select>
</td>
</tr>
<tr>
<td class="portlet-section-alternate"></td>
<td class="portlet-form-field-label">
<input type="submit" value="Generuj"
class="portlet-form-button" />
<a href="#" jwcid="@PageLink"
page="reporty">Návrat</a>
</td>
</tr>
</table>
</form>
Class:
package com.skms.InternetPreVsetkych.tapestry.reporty;
import org.apache.log4j.Logger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Transformer;
import org.apache.jetspeed.CommonPortletServices;
import org.apache.jetspeed.security.Group;
import org.apache.jetspeed.security.GroupManager;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.web.WebContext;
import org.apache.tapestry.web.WebRequest;
import org.postgresql.jdbc2.optional.SimpleDataSource;
import com.skms.InternetPreVsetkych.PrincipalStore;
import com.skms.InternetPreVsetkych.SecurityStore;
import com.skms.InternetPreVsetkych.domain.Provider;
import com.skms.InternetPreVsetkych.tapestry.Item;
import com.skms.InternetPreVsetkych.tapestry.ItemSelectionModel;
public abstract class CelkovyPrehlad extends BasePage {
/**
* Logger for this class
*/
private static final Logger logger =
Logger.getLogger(CelkovyPrehlad.class);
public abstract WebRequest getRequest();
public abstract WebContext getContext();
public abstract Date getDatum();
public abstract Provider getProvider();
ItemSelectionModel providerModel;
public ItemSelectionModel getProviderModel() {
if (providerModel == null){
ArrayList list = new ArrayList();
list.add(new Item("", null));
try{
CollectionUtils.collect(getUcastnikService().getProviders().iterator(),
new Transformer() {
public Object transform(Object obj) {
Provider prov = (Provider) obj;
return new Item(prov.getNazov(), prov.getId());
}
}, list);
} catch (Exception e){
}
providerModel = new ItemSelectionModel(list);
}
return providerModel;
}
protected final com.skms.InternetPreVsetkych.service.UcastnikService
getUcastnikService()
{
try
{
PrincipalStore.set(getRequest().getUserPrincipal());
SecurityStore.setMDPTRole(new Boolean
(getRequest().isUserInRole("mdpt")));
SecurityStore.setProvider(null);
if (!getRequest().isUserInRole("mdpt")){
try {
GroupManager grManager = (GroupManager)
getContext().getAttribute(CommonPortletServices.CPS_GROUP_MANAGER_COMPONENT);
Collection col =
grManager.getGroupsForUser(getRequest().getUserPrincipal().getName());
for (Iterator iter = col.iterator();
iter.hasNext();) {
Group element = (Group) iter.next();
Provider provider =
getUcastnikService().findProvider(element.getPrincipal().getName());
if (provider != null){
SecurityStore.setProvider(provider);
}
}
} catch (Exception e) {
logger.error("getUcastnikService() - e=" + e,
e); //$NON-NLS-1$
}
}
return
com.skms.InternetPreVsetkych.ServiceLocator.instance().getUcastnikService();
}
catch (final Throwable throwable)
{
throw new RuntimeException(throwable);
}
}
public abstract IEngineService getGenerovanieService();
public ILink formSubmit(IRequestCycle cycle){
HashMap map = new HashMap();
SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy");
map.put("dateDue", df.format(getDatum()));
if (getProvider() != null){
map.put("provider", getProvider().getId());
}
return getGenerovanieService().getLink(false, map);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]