{"id":295,"date":"2007-04-22T02:58:24","date_gmt":"2007-04-22T06:58:24","guid":{"rendered":"http:\/\/www.dr-chuck.com\/wordpress\/?p=295"},"modified":"2011-12-17T12:22:43","modified_gmt":"2011-12-17T16:22:43","slug":"wurfl-wireless-universal-resource-file-added-to-pda-support-in-sakai","status":"publish","type":"post","link":"https:\/\/www.dr-chuck.com\/csev-blog\/2007\/04\/wurfl-wireless-universal-resource-file-added-to-pda-support-in-sakai\/","title":{"rendered":"WURFL (Wireless Universal Resource File) added to PDA support in Sakai"},"content":{"rendered":"<p>Coming back form the airport &#8211; I was playing with my Treo and realized that if I *knew* I was talking to a narrow device, I could do things like place the &#8220;Log In&#8221; text more nicely.<br \/>\nThere was a discussion on the dev list a whle back about a thing called WURFL(Wireless Universal Resource File) that gave yo all kinds of properties about mobile phones. So at 6AM on a bus, I decided to &#8220;look into&#8221; what it would take.  Now about 20 hours later I have it ready to go :)  It was trickier than I thought.<br \/>\nThe biggest issue was the existing Java APIs around WURFL did a really bad job of matching user agents &#8211; particularly when a Treo 600 user agent changes on upgrades with minor versions change on the browser compatibility.<br \/>\nSo, I pulled the source into Sakai, fixed it, added an acknowledgement, and made it work for the PDA portal.  All to save a line on my Treo 600 display :)<br \/>\nI put in my stock dev notes that have little or no meaning.<\/p>\n<p><!--more--><br \/>\ncharles-severances-computer:\/tmp csev$ cvs -d:pserver:anonymous@wurfl.cvs.sourceforge.net:\/cvsroot\/wurfl login<br \/>\nLogging in to :pserver:anonymous@wurfl.cvs.sourceforge.net:2401\/cvsroot\/wurfl<br \/>\nCVS password:<br \/>\ncharles-severances-computer:\/tmp csev$<br \/>\ncvs -z3 -d:pserver:anonymous@wurfl.cvs.sourceforge.net:\/cvsroot\/wurfl co -P tools<br \/>\ncvs checkout: Updating tools<br \/>\ncvs checkout: Updating tools\/asp<br \/>\nU tools\/asp\/CheckCapability.asp<br \/>\nU tools\/asp\/DeviceCapability.asp<br \/>\n~\/dev\/sakai\/portal\/portal-charon\/charon csev$ svn commit<br \/>\nSending        charon\/pom.xml<br \/>\nSending        charon\/project.xml<br \/>\nAdding         charon\/src\/webapp\/WEB-INF\/wurfl.xml<br \/>\nAdding         charon\/src\/webapp\/WEB-INF\/wurfl_patch.xml<br \/>\nTransmitting file data &#8230;.<br \/>\nCommitted revision 29429.<br \/>\nsvn commit project.xml pom.xml src\/java\/net<br \/>\nSending        pom.xml<br \/>\nSending        project.xml<br \/>\nAdding         src\/java\/net<br \/>\nAdding         src\/java\/net\/sourceforge<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/CapabilityMatrix.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/ListManager.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/ObjectsManager.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/UAManager.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/Wurfl.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/WurflDevice.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/WurflException.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/WurflServletInit.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/WurflSource.java<br \/>\nAdding         src\/java\/net\/sourceforge\/wurfl\/wurflapi\/WurflTester.java<br \/>\nTransmitting file data &#8230;&#8230;&#8230;&#8230;<br \/>\nCommitted revision 29430.<br \/>\nChange the processing of the Loose matching to simply drop<br \/>\nnumbers, spaces, and periods &#8211; so as to factor out version<br \/>\nchanges.<br \/>\nAlso switch to using logging rather than System.out.println.<br \/>\n:~\/dev\/sakai\/portal\/portal-impl\/impl\/src\/java\/net csev$ svn commit<br \/>\nAdding         net\/README.txt<br \/>\nSending        net\/sourceforge\/wurfl\/wurflapi\/ObjectsManager.java<br \/>\nSending        net\/sourceforge\/wurfl\/wurflapi\/Wurfl.java<br \/>\nTransmitting file data &#8230;<br \/>\nCommitted revision 29432.<br \/>\nAdd support for mobile portals using the WURFL libraries.<br \/>\nSending        portal-api\/api\/src\/java\/org\/sakaiproject\/portal\/api\/Portal.java<br \/>\nSending        portal-impl\/impl\/src\/java\/org\/sakaiproject\/portal\/charon\/SkinnableCharonPortal.java<br \/>\nTransmitting file data ..<br \/>\nCommitted revision 29433.<br \/>\nAdd support ot the PDA portal do emit simpler HTML when dealing with<br \/>\na smaller PDA device.  This uses WURFL (Wireless Universal<br \/>\nResource File) with some local modifications.<br \/>\nSee http:\/\/wurfl.sourceforge.net\/ for details<br \/>\nSending        portal-impl\/impl\/src\/java\/org\/sakaiproject\/portal\/charon\/handlers\/PDAHandler.java<br \/>\nSending        portal-render-engine-impl\/pack\/src\/webapp\/vm\/defaultskin\/macros.vm<br \/>\nSending        portal-render-engine-impl\/pack\/src\/webapp\/vm\/defaultskin\/pda.vm<br \/>\nTransmitting file data &#8230;<br \/>\nCommitted revision 29434.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coming back form the airport &#8211; I was playing with my Treo and realized that if I *knew* I was talking to a narrow device, I could do things like place the &#8220;Log In&#8221; text more nicely. There was a discussion on the dev list a whle back about a thing called WURFL(Wireless Universal Resource [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-295","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\/295","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=295"}],"version-history":[{"count":1,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/295\/revisions"}],"predecessor-version":[{"id":2402,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/posts\/295\/revisions\/2402"}],"wp:attachment":[{"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/media?parent=295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/categories?post=295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dr-chuck.com\/csev-blog\/wp-json\/wp\/v2\/tags?post=295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}