[Building Sakai] Clog tool version for Sakai 2.9.1

Steve Swinsburg steve.swinsburg at gmail.com
Thu Jul 4 03:27:14 PDT 2013


Yes I was thinking the same thing, and since there is no NOT NULL constraint, null is allowed but will throw the NPE if it is null. So that check should be all that is needed. Can you file a Jira?

Cheers,
Steve

Sent from my iPad

On 04/07/2013, at 19:33, JUAN JOSé MEROñO SáNCHEZ <jjmerono at um.es> wrote:

> 
> Hi,
> 
>     There are no duplicates deployed, only 0.9.4 version present. I'm not upgrading any version is a new installation. These are clog tables in Oracle:
> 
> CREATE TABLE CLOG_POST
> (
>    POST_ID          CHAR (36) NOT NULL,
>    SITE_ID          VARCHAR2 (255),
>    TITLE            VARCHAR2 (255) NOT NULL,
>    CONTENT          CLOB NOT NULL,
>    CREATED_DATE     TIMESTAMP NOT NULL,
>    MODIFIED_DATE    TIMESTAMP,
>    CREATOR_ID       VARCHAR2 (255) NOT NULL,
>    KEYWORDS         VARCHAR2 (255),
>    ALLOW_COMMENTS   NUMBER (10, 0),
>    VISIBILITY       VARCHAR2 (16) NOT NULL,
>    PRIMARY KEY (POST_ID)
> );
> 
> CREATE TABLE CLOG_AUTOSAVED_POST
> (
>    POST_ID          CHAR (36) NOT NULL,
>    SITE_ID          VARCHAR2 (255),
>    TITLE            VARCHAR2 (255) NOT NULL,
>    CONTENT          CLOB NOT NULL,
>    CREATED_DATE     TIMESTAMP NOT NULL,
>    MODIFIED_DATE    TIMESTAMP,
>    CREATOR_ID       VARCHAR2 (255) NOT NULL,
>    KEYWORDS         VARCHAR2 (255),
>    ALLOW_COMMENTS   NUMBER (10, 0),
>    VISIBILITY       VARCHAR2 (16) NOT NULL,
>    PRIMARY KEY (POST_ID)
> );
> 
> CREATE TABLE CLOG_COMMENT
> (
>    COMMENT_ID      CHAR (36) NOT NULL,
>    POST_ID         CHAR (36) NOT NULL,
>    SITE_ID         VARCHAR2 (255) NOT NULL,
>    CREATOR_ID      CHAR (36) NOT NULL,
>    CREATED_DATE    TIMESTAMP NOT NULL,
>    MODIFIED_DATE   TIMESTAMP NOT NULL,
>    CONTENT         CLOB NOT NULL,
>    PRIMARY KEY (COMMENT_ID)
> );
> 
> CREATE TABLE CLOG_AUTHOR
> (
>    USER_ID          CHAR (36) NOT NULL,
>    SITE_ID          VARCHAR2 (255) NOT NULL,
>    TOTAL_POSTS      NUMBER (10, 0) NOT NULL,
>    LAST_POST_DATE   TIMESTAMP,
>    TOTAL_COMMENTS   NUMBER (10, 0) NOT NULL,
>    PRIMARY KEY (USER_ID, SITE_ID)
> )
> 
>     After adding a new post, it appears in the database, but keywords column is empty (null) and fails when try to display posts. If I add something manually in keywords column then the post appears and everything works.
> I've added this line in Post.java to avoid NPE, I don't know if mysql returns "" instead of null so this only affects Oracle installations, but with this line everything works.
> 
>     public void setKeywordsText(String keywordsText) {
>         if (keywordsText==null) return;
>         String[] keywordsArray = keywordsText.split(",");
>         setKeywords(Arrays.asList(keywordsArray));
>     }
> 
> Another better way to fix the problem? Thanks !!
> 
> 
> El 04/07/2013 9:38, Steve Swinsburg escribió:
>> Hi,
>> 
>> This may be an oracle only bug. Though can you first check you have no duplicates deployed:
>> 
>> [steve:~/dev/sakai/tomcat/2.9.x]$ find . -name clog*
>> ./components/clog-pack
>> ./components/clog-pack/META-INF/maven/org.sakaiproject.clog/clog-pack
>> ./components/clog-pack/WEB-INF/lib/clog-impl-0.9.4.jar
>> ./shared/lib/clog-api-0.9.4.jar
>> ./shared/lib/clog-help-0.9.4.jar
>> ./webapps/clog-tool
>> ./webapps/clog-tool/clog-translations-en_DEBUG.js
>> ./webapps/clog-tool/clog-translations-en_GB.js
>> ./webapps/clog-tool/clog-translations-es_ES.js
>> ./webapps/clog-tool/clog-translations-pt_PT.js
>> ./webapps/clog-tool/clog-translations-sv_SE.js
>> ./webapps/clog-tool/clog-translations-tr_TR.js
>> ./webapps/clog-tool/css/clog.css
>> ./webapps/clog-tool/js/clog.js
>> ./webapps/clog-tool/js/clog_permissions.js
>> ./webapps/clog-tool/js/clog_utils.js
>> ./webapps/clog-tool/META-INF/maven/org.sakaiproject.clog/clog-tool
>> ./webapps/clog-tool/tools/clog.xml
>> ./webapps/clog-tool/tools/clogadmin.xml
>> ./webapps/clog-tool/WEB-INF/classes/clog-rss.properties
>> ./webapps/clog-tool/WEB-INF/classes/clog.properties
>> ./webapps/clog-tool/WEB-INF/classes/org/sakaiproject/clog
>> ./webapps/clog-tool/WEB-INF/classes/org/sakaiproject/clogadmin
>> ./webapps/clog-tool.war
>> ./work/Catalina/localhost/clog-tool
>> 
>> Also, from what version clog are you upgrading? Can you post the structure of the clog_post table? Are the contents of the entry in that table for the particular post correct? I wonder if there was an issue with it saving the data.
>> 
>> cheers,
>> Steve
>> 
>> 
>> On Wed, Jul 3, 2013 at 11:02 PM, JUAN JOSé MEROñO SáNCHEZ <jjmerono at um.es> wrote:
>>> 
>>> We are trying to deploy Clog 0.9.4 in Sakai 2.9.2 using Oracle, but we've got this error when we try to add a new entry.
>>> 
>>> INFO  org.sakaiproject.clog.tool.entityprovider.ClogPostEntityProvider  - Failed to get post with id 'a99b812b-5344-467c-ab36-a78e40fedb8a'. This could happen if this is the first time a post has been saved or published.
>>> java.lang.Exception: getPost: Unable to find post with id:a99b812b-5344-467c-ab36-a78e40fedb8a
>>>         at org.sakaiproject.clog.impl.PersistenceManager.getPost(PersistenceManager.java:514)
>>>         at org.sakaiproject.clog.impl.ClogManagerImpl.getPostHeader(ClogManagerImpl.java:101)
>>>         at org.sakaiproject.clog.tool.entityprovider.ClogPostEntityProvider.createEntity(ClogPostEntityProvider.java:132)
>>>         at org.sakaiproject.entitybroker.rest.EntityHandlerImpl.handleEntityAccess(EntityHandlerImpl.java:667)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.dispatch(DirectServlet.java:183)
>>>         at org.sakaiproject.entitybroker.servlet.SakaiDirectServlet.dispatch(SakaiDirectServlet.java:146)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.handleRequest(DirectServlet.java:154)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.service(DirectServlet.java:132)
>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
>>>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>         at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:695)
>>>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>>         at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
>>>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>>>         at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>>>         at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>>>         at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>>>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>         at java.lang.Thread.run(Thread.java:722)
>>> DEBUG umu.sakai.login.event.UmuLoginEvent  - Evento: clog.post.created::/clog/e2968dfa-2579-4afb-b87d-d6aacb502846/posts/a99b812b-5344-467c-ab36-a78e40fedb8a
>>> DEBUG org.sakaiproject.search.component.service.impl.SearchNotificationAction  - Notify clog.post.created
>>> DEBUG org.sakaiproject.search.component.service.impl.SearchIndexBuilderImpl  - Add resource org.sakaiproject.event.impl.BaseNotificationService$BaseNotification
>>> Edit at 1d62945::0:clog.post.created@/clog/e2968dfa-2579-4afb-b87d-d6aacb502846/posts/a99b812b-5344-467c-ab36-a78e40fedb8a[m, 2]
>>> DEBUG org.sakaiproject.search.component.service.impl.SearchIndexBuilderImpl  - new entitycontent producer
>>> DEBUG org.sakaiproject.search.component.service.impl.SearchIndexBuilderImpl  - Matched Entity Content Producer for event 0:clog.post.created@/clog/e2968dfa-2579-4afb-b87d-d6aacb502846/posts/a99b812b-5344-467c-ab36-a78e40fedb8a[m, 2] with org.sakaiproject.clog.impl.ClogContentProducer at de6bc2
>>> DEBUG org.sakaiproject.search.component.service.impl.SearchIndexBuilderImpl  - SEARCHBUILDER: Added Resource 1 /clog/e2968dfa-2579-4afb-b87d-d6aacb502846/posts/a99b812b-5344-467c-ab36-a78e40fedb8a
>>> WARN  org.sakaiproject.clog.impl.ClogManagerImpl  - getEntity(): java.lang.NullPointerException
>>> WARN  org.sakaiproject.event.impl.ClusterEventTracking  - postEvent, notifyObservers(), event: 0:clog.post.created@/clog/e2968dfa-2579-4afb-b87d-d6aacb502846/posts/a99b812b-5344-467c-ab36-a78e40fedb8a[m, 2]
>>> java.lang.NullPointerException
>>>         at org.sakaiproject.clog.impl.NewPostNotification.getSubject(NewPostNotification.java:91)
>>>         at org.sakaiproject.clog.impl.NewPostNotification.getHeaders(NewPostNotification.java:105)
>>>         at org.sakaiproject.util.EmailNotification.reNotify(EmailNotification.java:221)
>>>         at org.sakaiproject.util.EmailNotification.notify(EmailNotification.java:161)
>>>         at org.sakaiproject.event.impl.BaseNotificationService$BaseNotification.notify(BaseNotificationService.java:1111)
>>>         at org.sakaiproject.event.impl.BaseNotificationService.update(BaseNotificationService.java:613)
>>>         at java.util.Observable.notifyObservers(Observable.java:159)
>>>         at org.sakaiproject.event.impl.BaseEventTrackingService.notifyObservers(BaseEventTrackingService.java:126)
>>>         at org.sakaiproject.event.impl.ClusterEventTracking.postEvent(ClusterEventTracking.java:305)
>>>         at org.sakaiproject.event.impl.BaseEventTrackingService.post(BaseEventTrackingService.java:276)
>>>         at org.sakaiproject.clog.impl.SakaiProxyImpl.postEvent(SakaiProxyImpl.java:451)
>>>         at org.sakaiproject.clog.tool.entityprovider.ClogPostEntityProvider.createEntity(ClogPostEntityProvider.java:145)
>>>         at org.sakaiproject.entitybroker.rest.EntityHandlerImpl.handleEntityAccess(EntityHandlerImpl.java:667)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.dispatch(DirectServlet.java:183)
>>>         at org.sakaiproject.entitybroker.servlet.SakaiDirectServlet.dispatch(SakaiDirectServlet.java:146)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.handleRequest(DirectServlet.java:154)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.service(DirectServlet.java:132)
>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
>>>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>         at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:695)
>>>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>>         at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
>>>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>>>         at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>>>         at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>>>         at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>>>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>         at java.lang.Thread.run(Thread.java:722)
>>> ERROR org.sakaiproject.clog.tool.entityprovider.ClogPostEntityProvider  - Caught exception whilst getting posts.
>>> java.lang.NullPointerException
>>>         at org.sakaiproject.clog.api.datamodel.Post.setKeywordsText(Post.java:102)
>>>         at org.sakaiproject.clog.impl.PersistenceManager.transformResultSetInPostCollection(PersistenceManager.java:625)
>>>         at org.sakaiproject.clog.impl.PersistenceManager.getPosts(PersistenceManager.java:476)
>>>         at org.sakaiproject.clog.impl.ClogManagerImpl.getPosts(ClogManagerImpl.java:119)
>>>         at org.sakaiproject.clog.tool.entityprovider.ClogPostEntityProvider.getEntities(ClogPostEntityProvider.java:223)
>>>         at org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl.internalGetEntities(EntityBrokerManagerImpl.java:590)
>>>         at org.sakaiproject.entitybroker.impl.EntityBrokerManagerImpl.getEntitiesData(EntityBrokerManagerImpl.java:442)
>>>         at org.sakaiproject.entitybroker.rest.EntityHandlerImpl.handleEntityAccess(EntityHandlerImpl.java:561)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.dispatch(DirectServlet.java:183)
>>>         at org.sakaiproject.entitybroker.servlet.SakaiDirectServlet.dispatch(SakaiDirectServlet.java:146)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.handleRequest(DirectServlet.java:154)
>>>         at org.sakaiproject.entitybroker.util.servlet.DirectServlet.service(DirectServlet.java:132)
>>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
>>>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>         at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:695)
>>>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>>>         at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
>>>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>>>         at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
>>>         at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>>>         at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>>>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>         at java.lang.Thread.run(Thread.java:722)
>>> INFO: EntityEncodingManager: No entities to format (json) and output for ref (/clog-post)
>>> 
>>> Any idea?
>>> 
>>> El 03/07/2013 9:25, Steve Swinsburg escribió:
>>>> Yep 0.9.4 is in the wild. 
>>>> 
>>>> Cheers
>>>> Steve
>>>> 
>>>> Sent from my iPhone
>>>> 
>>>> On 03/07/2013, at 17:02, Adrian Fish <adrian.r.fish at gmail.com> wrote:
>>>> 
>>>>> Steve, you've just tagged 0.9.4, right?
>>>>> 
>>>>> Marco, sorry for not getting back earlier. My day job at the moment does not involve a lot of Sakai so I have to wait 'til I'm at home to do Sakai stuff. Steve's done the business with a 0.9.4 tag so I'd just do some testing on that. As he says, make sure you clear out all the old jars so you don't get dll hell.
>>>>> 
>>>>> Cheers,
>>>>> Adrian.
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On 3 July 2013 00:26, Steve Swinsburg <steve.swinsburg at gmail.com> wrote:
>>>>>> Clog 0.9.4 should be released today so just hold out for that. And that works well with 2.9. Make sure you remove old versions from tomcat, that is probably the cause of the problem you are getting. 
>>>>>> 
>>>>>> Cheers
>>>>>> Steve
>>>>>> 
>>>>>> Sent from my iPhone
>>>>>> 
>>>>>> On 03/07/2013, at 0:54, Marco Antonio Bernal Cataño <bernalmarcoa at gmail.com> wrote:
>>>>>> 
>>>>>>> Adrian , I was  this error in the import to clog, whit clog 0.9.3 in sakai-2.9.2 :
>>>>>>> 
>>>>>>> org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.sakaiproject.clog.api.ClogManager' defined in file [/opt/sakai92cindi/components/clog-pack/WEB-INF/components.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'importBlog1Data' of bean class [org.sakaiproject.clog.impl.ClogManagerImpl]: Bean property 'importBlog1Data' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
>>>>>>> 
>>>>>>> And if I use the clogAdmin  to import only populate the post tlables and no  the clog_author table.
>>>>>>> 
>>>>>>> Are  you recommend work whith  clog trunk with  sakai 2.9.2 ?
>>>>>>> 
>>>>>>> 
>>>>>>> 2013/7/1 Adrian Fish <adrian.r.fish at gmail.com>
>>>>>>>> Trunk and 0.9.3 are a lot different. Trunk should be cool on 2.9.1 though. What problems have you encountered?
>>>>>>>> 
>>>>>>>> Cheers,
>>>>>>>> Adrian.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 1 July 2013 16:28, Jaco Gillman <jaco at opencollab.co.za> wrote:
>>>>>>>>> Hi All
>>>>>>>>> 
>>>>>>>>> I am trying to install Clog on a Sakai 2.9.1 release. Which Clog tag version must I use or must trunk be used? I checked out both Clog-trunk and Clog-0.9.3, compared them with each other which shows a lot of differences. Trunk does not seem to cater for Sakai 2.9.1 or am I wrong? Online documentation also seems to be a outdated...
>>>>>>>>> 
>>>>>>>>> Any help/advice would be much appreciated.
>>>>>>>>> 
>>>>>>>>> Regards,
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Jaco Gillman
>>>>>>>>> 
>>>>>>>>> Java Developer
>>>>>>>>> 
>>>>>>>>> opencollab
>>>>>>>>> 
>>>>>>>>> Tel: +27 21 970 4017  |  Fax: +27 21 914 3098
>>>>>>>>> 
>>>>>>>>> Email: jaco at opencollab.co.za  |  Skype: gillmanjc
>>>>>>>>> 
>>>>>>>>> Web: www.opencollab.co.za
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> See OpenCollab email disclaimer at http://www.opencollab.co.za/email-disclaimer
>>>>>>>>> _______________________________________________
>>>>>>>>> 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"
>>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> 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"
> 
> _______________________________________________
> 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/20130704/3e58c0b9/attachment.html 


More information about the sakai-dev mailing list