[Building Sakai] [Building Sak ai] SiteService GetSi tes -throws NullPoint erEx ception

Steve Swinsburg s.swinsburg at lancaster.ac.uk
Thu Jun 4 07:44:59 PDT 2009


Sorry, typo in last post:

The property-name in faces-config needs to match the property in the  
bean for it to link up.

> <!-- Backing Bean -->
>     <managed-bean>
>         <description>AdaptiveLearningSystem Tool: AdaptiveSiteBean  
> Bean</description>
>         <managed-bean-name>AdaptiveSiteBean</managed-bean-name>
>         <managed-bean- 
> class 
> >org.sakaiproject.adaptivelearningsystem.tool.jsf.AdaptiveSiteBean</ 
> managed-bean-class>
>         <managed-bean-scope>session</managed-bean-scope>
>         <managed-property>
>             <description>AdaptiveLearningSystem API</description>
>             <property-name>myService</property-name>
>              
> < 
> value 
> > 
> #{org_sakaiproject_adaptivelearningsystem_api_AdaptiveSystemServiceInterface 
> }</value>
>         </managed-property>
>     </managed-bean>



> private AdaptiveSystemServiceInterface myService;
> public void setMyService(AdaptiveSystemServiceInterface myService) {
> 	this.myService = myService;
> }




cheers,
Steve




On 4 Jun 2009, at 15:39, Steve Swinsburg wrote:

> Hi Mak,
>
> Ok found the problem. In your faces-config managed-bean section for  
> your JSF backing bean  
> (org.sakaiproject.adaptivelearningsystem.tool.jsf.AdaptiveSiteBean),  
> you need to set your own service beans as a <managed-property>.
>
> Try this:
> <!-- Backing Bean -->
>     <managed-bean>
>         <description>AdaptiveLearningSystem Tool: AdaptiveSiteBean  
> Bean</description>
>         <managed-bean-name>AdaptiveSiteBean</managed-bean-name>
>         <managed-bean- 
> class 
> >org.sakaiproject.adaptivelearningsystem.tool.jsf.AdaptiveSiteBean</ 
> managed-bean-class>
>         <managed-bean-scope>session</managed-bean-scope>
>         <managed-property>
>             <description>AdaptiveLearningSystem API</description>
>             <property-name>adaptiveLearningSystem</property-name>
>              
> < 
> value 
> > 
> #{org_sakaiproject_adaptivelearningsystem_api_AdaptiveSystemServiceInterface 
> }</value>
>         </managed-property>
>     </managed-bean>
>
> Repeat for other services you want to inject into your Backing Bean.
>
> In the actual bean, you'll then have:
>
> private AdaptiveSystemServiceInterface myService;
> public void setMyService(AdaptiveSystemServiceInterface myService) {
> 	this.myService = myService;
> }
>
> That should do the trick.
>
>
> cheers,
> Steve
>
> ---
> Steve Swinsburg
> Portal Systems Developer
> Centre for e-Science
> Lancaster University
> Lancaster
> LA1 4YT
>
> email: s.swinsburg at lancaster.ac.uk
> phone: +44 (0) 1524 594870
>
>
>
>
>
>
>
> On 4 Jun 2009, at 15:06, m_yaghmaie at modares.ac.ir wrote:
>
>> Hi Steve,
>>
>> Thanks for your help,
>>
>> 1) This is how I injected the SiteService:
>> <beans>
>>     <bean  
>> id 
>> = 
>> "org 
>> .sakaiproject 
>> .adaptivelearningsystem.api.AdaptiveSystemServiceInterface"
>>              
>> class 
>> = 
>> "org 
>> .sakaiproject.adaptivelearningsystem.impl.AdaptiveSystemService"  
>> init-method="init">
>>         <property name="functionManager"  
>> ref="org.sakaiproject.authz.api.FunctionManager" />
>>         <property name="securityService"  
>> ref="org.sakaiproject.authz.api.SecurityService" />
>>         <property name="sessionManager"  
>> ref="org.sakaiproject.tool.api.SessionManager" />
>>         <property name="siteService"  
>> ref="org.sakaiproject.site.api.SiteService" />
>>         <property name="toolManager"  
>> ref="org.sakaiproject.tool.api.ToolManager" />
>>         <property name="userDirectoryService"  
>> ref="org.sakaiproject.user.api.UserDirectoryService" />
>>     </bean>
>> </beans>
>>
>>     private org.sakaiproject.site.api.SiteService siteService;
>>     public void setSiteService(SiteService siteService) {
>>         this.siteService = siteService;
>>     }
>>
>> 2) This is the web.xml I use:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!-- This file generated by Sakai App Builder -AZ -->
>> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 
>> "
>>         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd 
>> "
>>         version="2.4">
>>     <display-name>sakai-adaptivelearningsystem</display-name>
>>     <description>Sakai AdaptiveLearningSystem</description>
>>
>>     <context-param>
>>         <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
>>         <param-value>client</param-value>
>>     </context-param>
>>
>>     <context-param>
>>         <param-name>com.sun.faces.validateXml</param-name>
>>         <param-value>false</param-value>
>>     </context-param>
>>
>>     <context-param>
>>         <param-name>com.sun.faces.verifyObjects</param-name>
>>         <param-value>false</param-value>
>>     </context-param>
>>
>>     <!-- Sakai request filter -->
>>     <filter>
>>         <filter-name>sakai.request</filter-name>
>>         <filter-class>org.sakaiproject.util.RequestFilter</filter- 
>> class>
>>     </filter>
>>     <filter-mapping>
>>         <filter-name>sakai.request</filter-name>
>>         <servlet-name>FacesServlet</servlet-name>
>>         <dispatcher>REQUEST</dispatcher>
>>         <dispatcher>FORWARD</dispatcher>
>>         <dispatcher>INCLUDE</dispatcher>
>>     </filter-mapping>
>>
>>     <!-- Tool Servlet -->
>>     <servlet>
>>         <!-- servlet name must match tool.id in tools xml file -->
>>         <servlet-name>sakai.adaptivelearningsystem</servlet-name>
>>         <servlet-class>org.sakaiproject.jsf.util.JsfTool</servlet- 
>> class>
>>         <init-param>
>>             <param-name>default</param-name>
>>             <param-value>welcome</param-value>
>>         </init-param>
>>         <init-param>
>>             <param-name>path</param-name>
>>             <param-value>/adaptivelearningsystem</param-value>
>>         </init-param>
>>         <init-param>
>>             <param-name>default.last.view</param-name>
>>             <param-value>true</param-value>
>>         </init-param>
>>         <load-on-startup>1</load-on-startup>
>>     </servlet>
>>
>>     <!-- Faces Servlet -->
>>     <servlet>
>>         <servlet-name>FacesServlet</servlet-name>
>>         <servlet-class>javax.faces.webapp.FacesServlet</servlet- 
>> class>
>>         <load-on-startup>2</load-on-startup>
>>     </servlet>
>>     <servlet-mapping>
>>         <servlet-name>FacesServlet</servlet-name>
>>         <url-pattern>*.jsf</url-pattern>
>>     </servlet-mapping>
>>
>>     <!-- Sakai listeners -->
>>     <listener>
>>         <listener-class>org.sakaiproject.util.ToolListener</ 
>> listener-class>
>>     </listener>
>>     <listener>
>>         <listener- 
>> class>org.sakaiproject.util.ContextLoaderListener</listener-class>
>>     </listener>
>>
>> </web-app>
>>
>> 3) And this is my faces-config
>> <?xml version="1.0"?>
>> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD  
>> JavaServer Faces Config 1.0//EN"
>>     "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
>>
>> <!-- This file generated by Sakai App Builder -AZ -->
>> <faces-config>
>>
>>     <!-- Navigation Rules -->
>>     <navigation-rule>
>>         <from-view-id>/adaptivelearningsystem/welcome.jsp</from- 
>> view-id>
>>         <navigation-case>
>>             <from-outcome>success</from-outcome>
>>             <to-view-id>/adaptivelearningsystem/select-site.jsp</to- 
>> view-id>
>>         </navigation-case>
>>     </navigation-rule>
>>     <navigation-rule>
>>         <from-view-id>/adaptivelearningsystem/select-site.jsp</from- 
>> view-id>
>>         <navigation-case>
>>             <from-outcome>success</from-outcome>
>>             <to-view-id>/adaptivelearningsystem/select-page.jsp</to- 
>> view-id>
>>         </navigation-case>
>>     </navigation-rule>
>>     <navigation-rule>
>>         <from-view-id>/adaptivelearningsystem/select-page.jsp</from- 
>> view-id>
>>         <navigation-case>
>>             <from-outcome>success</from-outcome>
>>             <to-view-id>/adaptivelearningsystem/select-site.jsp</to- 
>> view-id>
>>         </navigation-case>
>>     </navigation-rule>
>>
>>     <!-- Backing Bean -->
>>     <managed-bean>
>>         <description>AdaptiveLearningSystem Tool: AdaptiveSiteBean  
>> Bean</description>
>>         <managed-bean-name>AdaptiveSiteBean</managed-bean-name>
>>         <managed-bean- 
>> class 
>> >org.sakaiproject.adaptivelearningsystem.tool.jsf.AdaptiveSiteBean</ 
>> managed-bean-class>
>>         <managed-bean-scope>session</managed-bean-scope>
>>         <!--  <managed-property>
>>             <description>User Directory Service</description>
>>             <property-name>userDirectoryService</property-name>
>>              
>> <value>#{org_sakaiproject_user_api_UserDirectoryService}</value>
>>         </managed-property> -->
>>     </managed-bean>
>>
>> </faces-config>
>>
>> I am sorry for this long post,
>> Tnx alot, Mak
>> ---- Original Message ----
>> From: Steve Swinsburg <s.swinsburg at lancaster.ac.uk>
>> To: m_yaghmaie at modares.ac.ir
>> Cc: sakai-dev at collab.sakaiproject.org
>> Sent: Thu, Jun 4, 2009, 5:14 PM
>> Subject: Re: [Building Sakai] SiteService GetSites -throws  
>> NullPointerEx ception
>>
>> Hi Mak,
>>
>> How have you injected siteService into AdaptiveSystemService? And
>> then, how have you set AdaptiveSystemService into AdaptiveSiteBean?
>>
>> NPE's like these are commonly caused by the dependencies not being
>> configured correctly. Post your pack's components.xml, and your  
>> tool's
>> web.xml, applicationContext.xml, and faces-config.xml (if using JSF)
>>
>> cheers,
>> Steve
>>
>>
>>
>> On 4 Jun 2009, at 13:38, m_yaghmaie at modares.ac.ir wrote:
>>
>> > Hi,
>> >
>> > I am trying to load all sites in order to show them in my Tool. I  
>> am
>> > using SiteService and I call the following service:
>> >
>> > siteService.getSites(SiteService.SelectionType.PUBVIEW, null, "",
>> > null, SiteService.SortType.ID_DESC, null);
>> > This invocation throws NullPointerException:
>> >
>> > caused by: java.lang.NullPointerException
>> > at
>> > org
>> > .sakaiproject
>> > .adaptivelearningsystem
>> > .impl.AdaptiveSystemService.getAllSites(AdaptiveSystemService.java:
>> > 108)
>> > at
>> > org
>> > .sakaiproject
>> > .adaptivelearningsystem
>> > .tool.jsf.AdaptiveSiteBean.getSites(AdaptiveSiteBean.java:54)
>> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> > at
>> > sun
>> > .reflect
>> > .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>> >
>> > I passed the arguments according to the JavaDoc I found in the
>> > SiteServiceAPI. Is there anything wrong with my code?
>> >
>> > Tnx, Mak
>> > _______________________________________________
>> > sakai-dev mailing list
>> > sakai-dev at collab.sakaiproject.org
>> > http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>> >
>> > TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org
>> > with a subject of "unsubscribe"
>> _______________________________________________
>> sakai-dev mailing list
>> sakai-dev at collab.sakaiproject.org
>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>
>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org 
>>  with a subject of "unsubscribe"
>
> _______________________________________________
> sakai-dev mailing list
> sakai-dev at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>
> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org 
>  with a subject of "unsubscribe"

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20090604/af5b5370/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2437 bytes
Desc: not available
Url : http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20090604/af5b5370/attachment.bin 


More information about the sakai-dev mailing list