[Building Sakai] Sakai 2.9 Entity Providers

Aaron Zeckoski azeckoski at unicon.net
Tue Jun 25 05:18:58 PDT 2013


Take a look at this component only project here as an example:
https://source.sakaiproject.org/svn/msub/unicon.net/tincanapi-provider/trunk

In the pack you will see the xml file is properly deployed to
WEB-INF/components.xml after building with maven.

Follow the way the POM files are setup for that project (as far as the
build part is concerned).
-AZ


On Tue, Jun 25, 2013 at 8:02 AM, Paul Wando Mungai <paulwando at gmail.com> wrote:
> When I uncomment it, components.xml gets copied in WEB-INF/classes instead
> of WEB-INF
>
>
> On Tue, Jun 25, 2013 at 1:59 PM, Aaron Zeckoski <azeckoski at unicon.net>
> wrote:
>>
>> Paul,
>> The issue is that you have commented out this part (the build resource
>> definition) in the pom.xml file:
>>
>> <build>
>>         <sourceDirectory>src/java</sourceDirectory>
>>         <resources>
>>             <resource>
>>                 <directory>${basedir}/src/webapps/WEB-INF/</directory>
>>                 <includes>
>>                     <include>*.xml</include>
>>                 </includes>
>>             </resource>
>>         </resources>
>>         <finalName>witse-entity-provider</finalName>
>>     </build>
>>
>> As a result, you component is not getting the spring xml file included
>> as part of it when it is built so you spring beans are not starting up
>> (which includes your provider). Sakai looks for that components.xml
>> file in that location when starting a component up. If it is not there
>> then there is not a failure, but your service won't be handled by
>> spring without it.
>>
>> -AZ
>>
>>
>> On Fri, Jun 21, 2013 at 8:19 AM, Aaron Zeckoski <azeckoski at unicon.net>
>> wrote:
>> > Paul,
>> > Is there somewhere I can try your code out?
>> > AutoRegister only works when something is a component but since that
>> > would appear to be the case I am guessing something else is going on.
>> > -AZ
>> >
>> >
>> > On Fri, Jun 21, 2013 at 8:09 AM, Paul Wando Mungai <paulwando at gmail.com>
>> > wrote:
>> >> I have written the following provider (which was working well in 2.8),
>> >> however, it doesnt seem to be registered. No errors are thrown. It
>> >> module
>> >> gets deployed correctly in tomcat/components.
>> >>
>> >> ------------------------------------------------/Code starts
>> >> here/----------------------------------------------------
>> >>
>> >> public class WitsEAddToolsToSiteEntityProviderImpl extends
>> >> AbstractEntityProvider implements CoreEntityProvider,
>> >> AutoRegisterEntityProvider, ActionsExecutable, RESTful {
>> >>
>> >>     private SiteService siteService;
>> >>     public final static String ENTITY_PREFIX = "addsitetools";
>> >>     //private CourseCreatorUtils courseCreatorUtils;
>> >>     private UserDirectoryService userDirectoryService;
>> >>     private ToolManager toolManager;
>> >>     private static ResourceLoader rb = new
>> >> ResourceLoader("addsitetools");
>> >>     private EntityBrokerManager entityBrokerManager;
>> >>
>> >>
>> >>     @Autowired
>> >>     public void setSiteService(SiteService siteService) {
>> >>         this.siteService = siteService;
>> >>     }
>> >>
>> >>     public void setEntityBrokerManager(EntityBrokerManager
>> >> entityBrokerManager) {
>> >>         this.entityBrokerManager = entityBrokerManager;
>> >>     }
>> >>
>> >>     @Autowired
>> >>     public void setUserDirectoryService(UserDirectoryService
>> >> userDirectoryService) {
>> >>         this.userDirectoryService = userDirectoryService;
>> >>     }
>> >>
>> >>     @Autowired
>> >>     public void setToolManager(ToolManager toolManager){
>> >>         this.toolManager = toolManager;
>> >>     }
>> >>     /*
>> >>     @Autowired
>> >>     public void setCourseCreatorUtils(CourseCreatorUtils
>> >> courseCreatorUtils){
>> >>         this.courseCreatorUtils = new CourseCreatorUtils(siteService,
>> >> userDirectoryService, toolManager);
>> >>
>> >>     }*/
>> >>
>> >>     @Override
>> >>     public String getEntityPrefix() {
>> >>         return ENTITY_PREFIX;
>> >>     }
>> >>
>> >>     @Override
>> >>     public boolean entityExists(String string) {
>> >>         return true;
>> >>     }
>> >>
>> >>     @Override
>> >>     public String createEntity(EntityReference er, Object o,
>> >> Map<String,
>> >> Object> map) {
>> >>         //return "addsitetools create entity";
>> >>         return null;
>> >>     }
>> >>
>> >>     @Override
>> >>     public Object getSampleEntity() {
>> >>         return "addsitetools sample entity";
>> >>     }
>> >>
>> >>     @Override
>> >>     public void updateEntity(EntityReference er, Object o, Map<String,
>> >> Object> map) {
>> >>         System.out.println("addsitetools entity updated");
>> >>     }
>> >>
>> >>     @Override
>> >>     public Object getEntity(EntityReference er) {
>> >>         return "addsitetools  entity";
>> >>     }
>> >>
>> >>     @Override
>> >>     public void deleteEntity(EntityReference er, Map<String, Object>
>> >> map) {
>> >>         System.out.println("addsitetools entity deleted");
>> >>     }
>> >>
>> >>     /**
>> >>      * site/siteId
>> >>      */
>> >>     @EntityCustomAction(action = "site", viewKey =
>> >> EntityView.VIEW_LIST)
>> >>     public List<SiteTool> addSiteTools(EntityView view, Map<String,
>> >> Object>
>> >> params) {
>> >>
>> >>         //get siteId
>> >>         String siteId = view.getPathSegment(2);
>> >>
>> >>         List<SiteTool> siteTools =
>> >> courseCreatorUtils.addSiteTools(siteId);
>> >>
>> >>         return siteTools;
>> >>     }
>> >>
>> >>     @Override
>> >>     public String[] getHandledOutputFormats() {
>> >>         return new String[]{Formats.XML, Formats.JSON, Formats.FORM};
>> >>     }
>> >>
>> >>     @Override
>> >>     public String[] getHandledInputFormats() {
>> >>         return new String[]{Formats.HTML, Formats.XML, Formats.JSON};
>> >>     }
>> >>
>> >>     @Override
>> >>     public List<?> getEntities(EntityReference er, Search search) {
>> >>         return null;
>> >>     }
>> >> }
>> >>
>> >> ------------------------------------------------/Code ends
>> >> here/----------------------------------------------------
>> >> --
>> >> Regards,
>> >> Paul Mungai
>> >>
>> >> "Ability is what youre capable of doing. Motivation determines what you
>> >> do.
>> >> Attitude determines how well you do it" By Lou Holtz, Notre Dame
>> >> Football
>> >> Coach
>> >>
>> >> _______________________________________________
>> >> 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"
>> >
>> >
>> >
>> > --
>> > Aaron Zeckoski - Software Architect - http://tinyurl.com/azprofile
>>
>>
>>
>> --
>> Aaron Zeckoski - Software Architect - http://tinyurl.com/azprofile
>
>
>
>
> --
> Regards,
> Paul Mungai
>
> Twitter: PaulMungaiW
> LinkedIn: http://za.linkedin.com/pub/paul-mungai/b/388/512
> Blog: http://pmungai.wordpress.com
>
>
> "Ability is what youre capable of doing. Motivation determines what you do.
> Attitude determines how well you do it" By Lou Holtz, Notre Dame Football
> Coach



-- 
Aaron Zeckoski - Software Architect - http://tinyurl.com/azprofile


More information about the sakai-dev mailing list