[Building Sakai] "UserDirectoryService" or "User" instances from my Tool "SelfCert"
Steve Swinsburg
steve.swinsburg at gmail.com
Wed Feb 2 03:43:57 PST 2011
The issue is the case of the first letter of the properties.
In your spring config you have it uppercase:
<property name="UserDirectoryService"
ref="org.sakaiproject.user.api.UserDirectoryService" />
In your class you have it lowercase:
private UserDirectoryService userDirectoryService;
cheers,
Steve
On 02/02/2011, at 10:39 PM, Gautham wrote:
>
> Hi Steve,
>
> I am getting this Error when I am accessing the "UserDirectoryService" or
> "User" instances from my Tool "SelfCert".
>
> org.sakaiproject.portal.api.PortalHandlerException:
> java.lang.IllegalArgumentException: Unable to find registered context for
> tool with ID sakai.selfcert
>
> Tomcat is showing:
> Caused by: org.springframework.beans.NotWritablePropertyException: Invalid
> property 'UserDirectoryService' of bean class
> [org.sakaiproject.selfcert.tool.SelfCertItemsBean]: Bean property
> 'UserDirectoryService' is not writable or has an invalid setter method. Did
> you mean 'userDirectoryService'?
>
> I have do changes to "applicationcontext.xml" and "SelfCertItemsBean.java"
> and as suggested by you
>
> SelfCertItemsBean:
> =========================
>
> package org.sakaiproject.selfcert.tool;
>
> import java.util.ArrayList;
> import java.util.HashMap;
> import java.util.List;
> import java.util.Map;
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>
> import org.sakaiproject.selfcert.logic.ExternalLogic;
> import org.sakaiproject.selfcert.logic.SelfCertLogic;
> import org.sakaiproject.selfcert.model.SelfCertItem;
>
> import org.sakaiproject.user.api.UserDirectoryService;
> import org.sakaiproject.user.api.User;
>
> /**
> * This is the backing bean for actions related to SelfCert Items
> * @author Sakai App Builder -AZ
> */
> public class SelfCertItemsBean {
>
> private static Log log = LogFactory.getLog(SelfCertItemsBean.class);
>
> public SelfCertItem newItem = new SelfCertItem();
> public Map selectedIds = new HashMap();
>
> private UserDirectoryService userDirectoryService;
> public void setUserDirectoryService(UserDirectoryService
> userDirectoryService)
> {
> this.userDirectoryService = userDirectoryService;
> }
>
> private User user;
> public void setUser(User user)
> {
> this.user = user;
> }
>
> private SelfCertLogic logic;
> public void setLogic(SelfCertLogic logic) {
> this.logic = logic;
> }
>
> private ExternalLogic externalLogic;
> public void setExternalLogic(ExternalLogic externalLogic) {
> this.externalLogic = externalLogic;
> }
>
> public ArrayList messages = new ArrayList();
>
> public void init() {
> log.debug("init");
> }
>
> public SelfCertItemsBean() {
> log.debug("constructor");
> }
>
> public String getCurrentUserDisplayName() {
> return externalLogic.getUserDisplayName(externalLogic.getCurrentUserId());
> }
>
> /**
> * @param item a SelfCertItem to check
> * @return true if the current user can remove or update the item
> */
> public boolean canDelete(SelfCertItem item) {
> log.debug("check Delete for: " + item.getId());
> return logic.canWriteItem(item, externalLogic.getCurrentLocationId(),
> externalLogic.getCurrentUserId());
> }
>
> /**
> * @return a List of SelfCertItem objects visible to the current user in
> the current site
> */
> public List getAllVisibleItems() {
> return logic.getAllVisibleItems(externalLogic.getCurrentLocationId(),
> externalLogic.getCurrentUserId());
> }
>
> /**
> * @param id the unique id of the item
> * @return a SelfCertItem or null if not found
> */
> public SelfCertItem getItemById(Long id) {
> return logic.getItemById(id);
> }
>
> public void addOrUpdateItem(SelfCertItem item) {
> logic.saveItem(item);
> }
>
> /**
> * @param item a SelfCertItem to remove
> * @return true if the item can be removed by the current user, false
> otherwise
> */
> public boolean checkRemoveItemById(Long id) {
> log.debug("check and Remove for: " + id);
> SelfCertItem item = logic.getItemById(id);
> if ( item != null &&
> logic.canWriteItem(item, externalLogic.getCurrentLocationId(),
> externalLogic.getCurrentUserId()) ) {
> logic.removeItem(item);
> return true;
> }
> return false;
> }
>
> public String getUserType() {
> String userId = (String)externalLogic.getCurrentUserId();
> String type="";
> String currentUserId="";
> //User currentUsername="";
>
> /*try{
> User currentUser = userDirectoryService.getCurrentUser();
>
> //currentUsername = userDirectoryService.getCurrentUser();
>
> }*/
>
>
> try{
> user = userDirectoryService.getUser(userId);
>
> System.out.println("**********"+user.toString()+"****");
>
> type = user.getType();
> }
> catch(org.sakaiproject.user.api.UserNotDefinedException unde)
> {
> System.out.println(unde.getMessage());
> }
>
> catch(Exception e)
> {
> type = "Type NA";
> System.out.println(e.getMessage());
> }
> return("User");
> }
>
> ==========================================
>
> "applicationcontext.xml"
> ==================
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
> "http://www.springframework.org/dtd/spring-beans.dtd">
>
> <!-- This file generated by Sakai App Builder -AZ -->
> <beans>
>
> <!-- list the backing beans here -->
> <bean id="itemsBean"
> class="org.sakaiproject.selfcert.tool.SelfCertItemsBean"
> init-method="init">
> <property name="logic"
> ref="org.sakaiproject.selfcert.logic.SelfCertLogic" />
> <property name="externalLogic"
> ref="org.sakaiproject.selfcert.logic.ExternalLogic" />
>
> <property name="UserDirectoryService"
> ref="org.sakaiproject.user.api.UserDirectoryService" />
> <property name="User"
> ref="org.sakaiproject.user.api.User" />
>
> </bean>
>
> </beans>
> ===============================
>
> Does I need to add/ change any other files to access "UserDirectoryService"
> or "User" instances from my Tool "SelfCert"
>
> Any Information will be highly appreciated
>
> --
> View this message in context: http://old.nabble.com/%22UserDirectoryService%22-or-%22User%22-instances-from-my-Tool-%22SelfCert%22-tp30825250p30825250.html
> Sent from the Sakai - Development mailing list archive at Nabble.com.
>
> _______________________________________________
> 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"
More information about the sakai-dev
mailing list