[Building Sakai] A question about how to use some APIs in project Profile2

Steve Swinsburg steve.swinsburg at gmail.com
Fri Nov 13 15:57:22 PST 2009


Sure, the log should be at c:\tomcat\logs\catalina.out

I'm not sure of the Windows equivalent to 'tail -f catalina.out' which  
will show you the log messages are they are written to the file. You  
might need to open it up in a text editor and just send the relevant  
output from the latest startup failure.

cheers,
Steve


On 14/11/2009, at 10:28 AM, Hai Vo Thanh wrote:

> i added this block
>         <dependency>
>                     <groupId>org.sakaiproject</groupId>
>                       <artifactId>sakai-gradebook-service-api</ 
> artifactId>
>                       <version>2.5.5</version>
>         </dependency>
>  into the place <!--  GENERIC SAKAI DEPENDENCIES --> and this block
>         <dependency>
>                     <groupId>org.sakaiproject</groupId>
>                       <artifactId>sakai-gradebook-service-api</ 
> artifactId>
>                       <version>2.5.5</version>
>                       <scope>provided</scope>
>         </dependency>
> into the place <!-- Sakai 2.5.x specific dependencies -->
> Can you tell me how to get the log for tomcat? i'm using windows 7 +  
> tomcat 5.2.26 zip version. i start tomcat by the command line "c: 
> \tomcat\bin\startup.bat" .
> Thanks
> ----------------
> Hai Vo
>
> From: Steve Swinsburg <steve.swinsburg at gmail.com>
> To: Hai Vo Thanh <v0thanhhai at yahoo.com>
> Cc: "sakai-dev at collab.sakaiproject.org" <sakai-dev at collab.sakaiproject.org 
> >
> Sent: Sat, November 14, 2009 4:58:29 AM
> Subject: Re: [Building Sakai] A question about how to use some APIs  
> in project Profile2
>
> Can you show the dependency block you added and the full error from  
> the beginning?
>
> Cheers
>
> ~ steve
> (sent from my ipod)
>
> On 14/11/2009, at 3:31 AM, Hai Vo Thanh <v0thanhhai at yahoo.com> wrote:
>
>> I added the GradebookService dependency to impl/pom.xml. when i run  
>> the command "mvn clean install sakai:deploy", it was built  
>> successful, but then, tomcat startup failed.It stoped after this  
>> stage:
>>
>> INFO: destroy() (2009-11-13 23:16:23, 495  
>> main_org.sakaiproject.authz.impl.FnctionManagerComponent)
>>
>> so sad :(
>> ------------
>> Hai Vo
>> From: Steve Swinsburg <steve.swinsburg at gmail.com>
>> To: Hai Vo Thanh <v0thanhhai at yahoo.com>
>> Cc: sakai-dev at collab.sakaiproject.org
>> Sent: Fri, November 13, 2009 4:44:11 PM
>> Subject: Re: [Building Sakai] A question about how to use some APIs  
>> in project Profile2
>>
>> Looks good, one more thing to do and that is to add the appropraite  
>> GradebookService dependency to the impl/pom.xml.
>>
>> I'm still waiting to hear back on which GradebookService is meant  
>> to be used, as looking through the Javadocs there are a few.
>>
>> cheers,
>> Steve
>>
>>
>>
>> On 13/11/2009, at 5:01 PM, Hai Vo Thanh wrote:
>>
>>> i've just injected GradebookService in to SakaiProxy like this:
>>>
>>> in SakaiProxy.java : add a prototype int getNumberOfAssignment 
>>> (String gradebookUid);
>>>
>>> in SakaiProxyImpl.java:
>>>
>>>             import some package:
>>>                 import org.sakaiproject.service.gradebook.shared.*;
>>>                 import  
>>> org.sakaiproject.service.gradebook.shared.GradebookService;
>>>                 import  
>>> org.sakaiproject.service.gradebook.shared.Assignment;
>>>                 //import org.sakaiproject.tool.gradebook.Assignment;
>>>                 import org.sakaiproject.assignment.api.*;
>>>
>>>             create a setter for the GradebookService :
>>>                 private GradebookService gradebookService;
>>>                 public void setGradebookService(GradebookService  
>>> gradebookService){
>>>                    this.gradebookService = gradebookService;
>>>                 }
>>>
>>>             implement the api:
>>>                 public int getNumberOfAssignment(String  
>>> gradebookUid){
>>>                     return gradebookService.getAssignments 
>>> (gradebookUid).size();
>>>                 }
>>>
>>> in components.xml: add the following line into the bean.
>>>                 <property name="gradebookService"><ref  
>>> bean="org.sakaiproject.service.gradebook.shared.GradebookService"/ 
>>> ></property>
>>>
>>> and when i deploy. These errors appeared:
>>> [INFO]  
>>> ------------------------------------------------------------------------
>>> [INFO] Compilation failure
>>>
>>> C:\sakai\myprofile2\impl\src\java\org\sakaiproject\profile2\logic 
>>> \SakaiProxyImpl
>>> .java:[40,0] package org.sakaiproject.service.gradebook.shared  
>>> does not exist
>>>
>>> C:\sakai\myprofile2\impl\src\java\org\sakaiproject\profile2\logic 
>>> \SakaiProxyImpl
>>> .java:[41,49] package org.sakaiproject.service.gradebook.shared  
>>> does not exist
>>>
>>> C:\sakai\myprofile2\impl\src\java\org\sakaiproject\profile2\logic 
>>> \SakaiProxyImpl
>>> .java:[42,49] package org.sakaiproject.service.gradebook.shared  
>>> does not exist
>>>
>>> C:\sakai\myprofile2\impl\src\java\org\sakaiproject\profile2\logic 
>>> \SakaiProxyImpl
>>> .java:[44,0] package org.sakaiproject.assignment.api does not exist
>>>
>>> C:\sakai\myprofile2\impl\src\java\org\sakaiproject\profile2\logic 
>>> \SakaiProxyImpl
>>> .java:[913,16] cannot find symbol
>>> symbol  : class GradebookService
>>> location: class org.sakaiproject.profile2.logic.SakaiProxyImpl
>>>
>>> C:\sakai\myprofile2\impl\src\java\org\sakaiproject\profile2\logic 
>>> \SakaiProxyImpl
>>> .java:[914,40] cannot find symbol
>>> symbol  : class GradebookService
>>> location: class org.sakaiproject.profile2.logic.SakaiProxyImpl
>>>
>>>
>>> Did i miss any stage?
>>> Thanks
>>> ---------------
>>> Hai Vo
>>>
>>> From: Steve Swinsburg <steve.swinsburg at gmail.com>
>>> To: Hai Vo Thanh <v0thanhhai at yahoo.com>
>>> Cc: sakai-dev <sakai-dev at collab.sakaiproject.org>
>>> Sent: Fri, November 13, 2009 5:41:14 AM
>>> Subject: Re: [Building Sakai] A question about how to use some  
>>> APIs in project Profile2
>>>
>>> Hi,
>>>
>>> You'll need a setter for the gradebookService API that you are  
>>> injecting. Might be easiest to inject into SakaiProxy, you can see  
>>> the config in components.xml already. Then add a setter to it like  
>>> the rest of the Sakai services are. Then add your method stub to  
>>> SakaiProxy.java and implement it in SakaiProxyImpl.java
>>>
>>> I posted a message about which service to use in a different  
>>> thread, keep an eye on responses there as well.
>>>
>>> cheers,
>>> Steve
>>>
>>> On Fri, Nov 13, 2009 at 8:48 AM, Hai Vo Thanh  
>>> <v0thanhhai at yahoo.com> wrote:
>>> Hi Mr Steve Swinsburg, i am his co-worker, we are doing some  
>>> expansion for the Profile2 project. At this time, we are creating  
>>> a new page in the display screen ( same as My profile,  
>>> Connections, Search....) this page is using for display all grades  
>>> of student have had. Whenever he come to this page, he can see all  
>>> his grades profile. Cause we do not want to change the original  
>>> project, we created some new class in the package  
>>> org.sakaiproject.profile2.tool.pages . at this time, we can get a  
>>> LinkedList<String> of all site id of all course that one user  
>>> joined and display it on my new page. Cause the siteId is also the  
>>> gradebookUid, we try to use the GradebookService to get all the  
>>> Assignment of each site, and at this state we encountered the  
>>> problem.
>>>
>>> I created a new class called MyGradebookApi to inject the  
>>> GradebookService in to our application. For testing i've create  
>>> two method
>>>
>>>    public int getNumberOfAss(String gradebookUid){
>>>         return gradebookService.getAssignments(gradebookUid).size();
>>>     }
>>>
>>> and......
>>>
>>>     public LinkedList<String> getAssNameList(String gradebookUid){
>>>         LinkedList<String> assNameList =new LinkedList();
>>>         LinkedList<Assignment> assList = new LinkedList();
>>>
>>>         List<Assignment> tempList = gradebookService.getAssignments 
>>> (gradebookUid);
>>>         assList.addAll(tempList);
>>>
>>>
>>>         while(!assList.isEmpty()){
>>>             Assignment tempAss = assList.remove();
>>>             String name = tempAss.getName();
>>>             assNameList.add(name);
>>>         }
>>>         return assNameList;
>>>     }
>>>  but it seem the GradeBookService do not work, i created a cousre  
>>> site, i got its siteId, i created some sample Assignment, then in  
>>> my page, i called the method getNumberOfAss and try to display in  
>>> my page, but nothing happened.
>>>
>>> The tool deployed sucessful, cause i modified the pom.xml to add  
>>> some dependencies.
>>> In my class i imported:
>>>     import org.sakaiproject.service.gradebook.shared.*;
>>>     import org.sakaiproject.service.gradebook.shared.Assignment;
>>>     //import org.sakaiproject.tool.gradebook.Assignment;
>>>     import org.sakaiproject.assignment.api.*;
>>>     import java.util.LinkedList;
>>>     import java.util.List;
>>> and create a private variable: private GradebookService  
>>> gradebookService;
>>>
>>> Did i miss any step? Could you give me some advices please?
>>>
>>> Thanks and regards
>>> ========
>>> Hai Vo
>>>
>>>
>>> From: Steve Swinsburg <steve.swinsburg at gmail.com>
>>> To: Small Cat <shadowless4288 at gmail.com>
>>> Cc: sakai-dev at collab.sakaiproject.org
>>> Sent: Fri, November 13, 2009 4:08:48 AM
>>> Subject: Re: [Building Sakai] A question about how to use some  
>>> APIs in project Profile2
>>>
>>> If using Spring, inject the actual API, not the static cover.  
>>> However, don't inject into the tool.
>>>
>>> Since you seem to be modifying Profile2, inject the  
>>> GradebookService into SakaiProxy.java which is where I have kept  
>>> all Sakai related API calls. That is already injected into all  
>>> Tool pages so you can just call sakaiProxy.someMethod() to do  
>>> things.
>>>
>>> Could you let me know what additions you are making to Profile2?  
>>> Are you wanting to contribute them back to the main release of  
>>> Profile2?
>>>
>>> cheers,
>>> Steve
>>>
>>>
>>> On 13/11/2009, at 6:26 AM, Small Cat wrote:
>>>
>>>> ... I want to add a new page using gradebook service into profile  
>>>> 2, I name this page "MyHello.html" and implement it in  
>>>> MyHello.java & MyQuery.java (this class in a new package  
>>>> org.sakaiproject.profile2.tool.mysql    )
>>>>
>>>> I've already use some other service like database api, site  
>>>> service  by using cover (but I fell in using methods of adding  
>>>> bean in compponents.xml >"<). But the problem is that I can't  
>>>> found gradebook cover ...
>>>> I tried to inject it follow these steps :( I use sakai 2.5.5 )
>>>> - add dependency in maven file
>>>> <dependency>
>>>>             <groupId>org.sakaiproject</groupId>
>>>>             <artifactId>sakai-gradebook-service-api</artifactId>
>>>>             <version>${sakai.version}</version>
>>>>         </dependency>
>>>> - add bean in components
>>>> <bean id="org.sakaiproject.profile2.tool.mysql.MyQuery"
>>>>         class="org.sakaiproject.profile2.tool.mysql.MyQuery">
>>>>         <property name="gradebookService"
>>>>             ref="org.sakaiproject.service.gradebook.shared.*">
>>>>         </property>
>>>>     </bean>
>>>> - coding...and this is a test function to get some assignment  
>>>> name ( I think gradebookId = coursesiteID , it is right ? )
>>>> // courseList is a list of course site id
>>>> public LinkedList<String> getAssignmentNameList(
>>>>             LinkedList<String> courseList) {
>>>>         LinkedList<Assignment> assignmentList = new LinkedList();
>>>>         try {
>>>>             while (!courseList.isEmpty()) {
>>>>                 String tmpString = courseList.remove();
>>>>                 List<Assignment> tmpList = gradebookService
>>>>                         .getAssignments(tmpString);
>>>>                 assignmentList.addAll(tmpList);
>>>>             }
>>>>         } catch (Exception e) {
>>>>             e.printStackTrace();
>>>>         }
>>>>
>>>>         LinkedList<String> assignmentNameList = new LinkedList();
>>>>         try {
>>>>             while (!assignmentList.isEmpty()) {
>>>>                 assignmentNameList.add(assignmentList.remove 
>>>> ().getName());
>>>>             }
>>>>         } catch (Exception e) {
>>>>             e.printStackTrace();
>>>>         }
>>>>         return assignmentNameList;
>>>>     }
>>>> /**************************************************************/
>>>>
>>>>  I tried like that in Sakai and it return nothing >"<.
>>>> Can anyone help me ?
>>>>
>>>>
>>>>
>>>> 2009/11/6 Steve Swinsburg <steve.swinsburg at gmail.com>
>>>> You've got a ; in the bean definitions, not sure if that matters  
>>>> too much though. But as for the dependency in the pom, if matters  
>>>> if you are on 2.5 or 2.6+. If 2.6 then you don't need that  
>>>> dependency as its in the kernel but for 2.5 you will.
>>>>
>>>> Also, are you modifying the current Profile2 tool? ie
>>>> http://confluence.sakaiproject.org/display/PROFILE/Profile2
>>>>
>>>> I am currently polishing up release of Profile2 for possible  
>>>> inclusion in 2.7 so it would be good to coordinate efforts here.
>>>>
>>>> cheers,
>>>> Steve
>>>>
>>>>
>>>> On 06/11/2009, at 3:47 PM, Small Cat wrote:
>>>>
>>>>> Hi,
>>>>> In the components.xml, I added a bean for my class as :
>>>>>
>>>>> <!--  MyPortfolios -->
>>>>>     <bean id =  
>>>>> "org.sakaiproject.profile2.tool.myportfolios.MyPortfolios;"
>>>>>          
>>>>> class="org.sakaiproject.profile2.tool.myportfolios.MyPortfolios;">
>>>>>
>>>>>         <property name="siteService"  
>>>>> ref="org.sakaiproject.site.api.SiteService"/>
>>>>>
>>>>>     </bean>
>>>>> In relevant pom.xml , I added :
>>>>> <dependency>
>>>>>                     <groupId>org.sakaiproject</groupId>
>>>>>                     <artifactId>sakai-site-api</artifactId>
>>>>>                     <scope>provided</scope>
>>>>>                 </dependency>
>>>>>
>>>>> Is this right ?
>>>>> Thanks ,
>>>>>
>>>>>
>>>>> 2009/11/6 Steve Swinsburg <steve.swinsburg at gmail.com>
>>>>> Hi,
>>>>>
>>>>> Are you making an addition to Profile2 that you might like to  
>>>>> contribute back? If so, thats great! Could you possibly Jira it  
>>>>> here:
>>>>> http://jira.sakaiproject.org/browse/PRFL
>>>>>
>>>>> For your issue, it's most likely an API injection issue. You'll  
>>>>> need to make sure you have the dependency in the relevant POM  
>>>>> and in the components.xml so Spring can inject it into the  
>>>>> beans. However if you Jira this task we can go over the goal and  
>>>>> implementation details.
>>>>>
>>>>> cheers,
>>>>> Steve
>>>>>
>>>>>
>>>>>
>>>>> On 06/11/2009, at 1:51 AM, Small Cat wrote:
>>>>>
>>>>>> Dear all,
>>>>>> I want to add some functions for Profile2, and one of them can  
>>>>>> show all scores of assigments in all course sites...
>>>>>> But I can't use some APIs as getSites.... ( I can use it in  
>>>>>> other tools, but in Profile2 I don't know why it can't )
>>>>>> This is error when I deploy :
>>>>>>
>>>>>> [ERROR] BUILD FAILURE
>>>>>> [INFO]  
>>>>>> ------------------------------------------------------------------------
>>>>>> [INFO] Compilation failure
>>>>>>
>>>>>> C:\sakai\profile2-1.2.1\tool\src\java\org\sakaiproject 
>>>>>> \profile2\tool\myportfolio
>>>>>> s\MyPortfolios.java:[22,52] cannot access  
>>>>>> org.sakaiproject.entity.api.EntityProd
>>>>>> ucer
>>>>>> file org\sakaiproject\entity\api\EntityProducer.class not found
>>>>>>                         courseSiteList = siteService.getSites 
>>>>>> (SelectionType.ACCE
>>>>>> SS,
>>>>>>
>>>>>> C:\sakai\profile2-1.2.1\tool\src\java\org\sakaiproject 
>>>>>> \profile2\tool\myportfolio
>>>>>> s\MyPortfolios.java:[35,60] cannot access  
>>>>>> org.sakaiproject.entity.api.Edit
>>>>>> file org\sakaiproject\entity\api\Edit.class not found
>>>>>>                         courseList.add(courseSiteList.remove 
>>>>>> (0).getTitle());
>>>>>>
>>>>>> How to use getSites in Profile2 , if can not, what methods I  
>>>>>> can use to replace ?
>>>>>> Thank you,
>>>>>> -- 
>>>>>> Regards,
>>>>>> Tran Trung Kien
>>>>>> _______________________________________________
>>>>>> 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"
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> Regards,
>>>>> Tran Trung Kien
>>>>
>>>>
>>>>
>>>>
>>>> -- 
>>>> Regards,
>>>> Tran Trung Kien
>>>> <MyHello.html><MyQuery.java><MyHello.java>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> 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/20091114/28668b1f/attachment.html 


More information about the sakai-dev mailing list