{"id":3915,"date":"2013-04-08T09:20:14","date_gmt":"2013-04-08T13:20:14","guid":{"rendered":"http:\/\/www.dr-chuck.com\/csev-blog\/?p=3915"},"modified":"2013-04-08T09:20:14","modified_gmt":"2013-04-08T13:20:14","slug":"reusing-parts-of-sakais-lti-java-implementation","status":"publish","type":"post","link":"https:\/\/www.dr-chuck.com\/csev-blog\/2013\/04\/reusing-parts-of-sakais-lti-java-implementation\/","title":{"rendered":"Reusing Parts of Sakai&#8217;s LTI Java Implementation"},"content":{"rendered":"<p>I have been recently talking to several folks about LTI implementations in Java environments and whether there is reusable code in the Sakai course tree.<\/p>\n<p>The answer is &#8216;yes&#8217; &#8211; and I have structured the Sakai source tree to make this as easy as possible by isolating the generic code form the Sakai code.  The &#8220;generic&#8221; code in the Sakai course tree is based on the IMS code and is copyright IMS (and others) under the Apache License.  The  Sakai-specific code is copyright by the Sakai (Apereo) Foundation under the ECL 2.0 license.  The Sakai-specific code is useful as an example but not particularly useful as direct reuse.<\/p>\n<p>The reusable (non-Sakai) code is here:<\/p>\n<p><a href=\"https:\/\/source.sakaiproject.org\/svn\/basiclti\/trunk\/basiclti-util\/\" target=\"_new\">https:\/\/source.sakaiproject.org\/svn\/basiclti\/trunk\/basiclti-util\/<\/a><\/p>\n<p>The Sakai code that makes use of these utilities is scattered throughout, but here are the high points:<\/p>\n<p>Code that calls all the Sakai APIS and fills up the data structures and exercises the above utility code.<br \/>\n<a href=\"https:\/\/source.sakaiproject.org\/svn\/basiclti\/trunk\/basiclti-common\/src\/java\/org\/sakaiproject\/basiclti\/util\/SakaiBLTIUtil.java\" target=\"_new\">https:\/\/source.sakaiproject.org\/svn\/basiclti\/trunk\/basiclti-common\/src\/java\/org\/sakaiproject\/basiclti\/util\/SakaiBLTIUtil.java<\/a> <\/p>\n<p>The servlet that contains  the web services to handle this incoming web services &#8211; this of course is Sakai specific, but the outline is useful and it makes good use of the utility code above:<br \/>\n<a href=\"https:\/\/source.sakaiproject.org\/svn\/basiclti\/trunk\/basiclti-blis\/src\/java\/org\/sakaiproject\/blti\/ServiceServlet.java\" target=\"_new\">https:\/\/source.sakaiproject.org\/svn\/basiclti\/trunk\/basiclti-blis\/src\/java\/org\/sakaiproject\/blti\/ServiceServlet.java<\/a> <\/p>\n<p>A php test harness that pretends to be a simple tool to launch and does some very simple exercising of the XML web service APIs:<br \/>\n<a href=\"https:\/\/source.sakaiproject.org\/svn\/basiclti\/trunk\/basiclti-docs\/resources\/docs\/sakai-api-test \" target=\"_new\">https:\/\/source.sakaiproject.org\/svn\/basiclti\/trunk\/basiclti-docs\/resources\/docs\/sakai-api-test<\/a>  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have been recently talking to several folks about LTI implementations in Java environments and whether there is reusable code in the Sakai course tree. The answer is &#8216;yes&#8217; &#8211; and I have structured the Sakai source tree to make this as easy as possible by isolating the generic code form the Sakai code. The [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3915","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/3915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/comments?post=3915"}],"version-history":[{"count":5,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/3915\/revisions"}],"predecessor-version":[{"id":3920,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/3915\/revisions\/3920"}],"wp:attachment":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/media?parent=3915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/categories?post=3915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/tags?post=3915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}