[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