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]

Reply via email to