April 22, 2007

WURFL (Wireless Universal Resource File) added to PDA support in Sakai

Coming back form the airport - 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 "Log In" text more nicely.

There 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 "look into" what it would take. Now about 20 hours later I have it ready to go :) It was trickier than I thought.

The biggest issue was the existing Java APIs around WURFL did a really bad job of matching user agents - particularly when a Treo 600 user agent changes on upgrades with minor versions change on the browser compatibility.

So, 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 :)

I put in my stock dev notes that have little or no meaning.

charles-severances-computer:/tmp csev$ cvs -d:pserver:anonymous@wurfl.cvs.sourceforge.net:/cvsroot/wurfl login
Logging in to :pserver:anonymous@wurfl.cvs.sourceforge.net:2401/cvsroot/wurfl
CVS password:
charles-severances-computer:/tmp csev$


cvs -z3 -d:pserver:anonymous@wurfl.cvs.sourceforge.net:/cvsroot/wurfl co -P tools
cvs checkout: Updating tools
cvs checkout: Updating tools/asp
U tools/asp/CheckCapability.asp
U tools/asp/DeviceCapability.asp

~/dev/sakai/portal/portal-charon/charon csev$ svn commit
Sending charon/pom.xml
Sending charon/project.xml
Adding charon/src/webapp/WEB-INF/wurfl.xml
Adding charon/src/webapp/WEB-INF/wurfl_patch.xml
Transmitting file data ....
Committed revision 29429.

svn commit project.xml pom.xml src/java/net
Sending pom.xml
Sending project.xml
Adding src/java/net
Adding src/java/net/sourceforge
Adding src/java/net/sourceforge/wurfl
Adding src/java/net/sourceforge/wurfl/wurflapi
Adding src/java/net/sourceforge/wurfl/wurflapi/CapabilityMatrix.java
Adding src/java/net/sourceforge/wurfl/wurflapi/ListManager.java
Adding src/java/net/sourceforge/wurfl/wurflapi/ObjectsManager.java
Adding src/java/net/sourceforge/wurfl/wurflapi/UAManager.java
Adding src/java/net/sourceforge/wurfl/wurflapi/Wurfl.java
Adding src/java/net/sourceforge/wurfl/wurflapi/WurflDevice.java
Adding src/java/net/sourceforge/wurfl/wurflapi/WurflException.java
Adding src/java/net/sourceforge/wurfl/wurflapi/WurflServletInit.java
Adding src/java/net/sourceforge/wurfl/wurflapi/WurflSource.java
Adding src/java/net/sourceforge/wurfl/wurflapi/WurflTester.java
Transmitting file data ............
Committed revision 29430.

Change the processing of the Loose matching to simply drop
numbers, spaces, and periods - so as to factor out version
changes.

Also switch to using logging rather than System.out.println.

:~/dev/sakai/portal/portal-impl/impl/src/java/net csev$ svn commit
Adding net/README.txt
Sending net/sourceforge/wurfl/wurflapi/ObjectsManager.java
Sending net/sourceforge/wurfl/wurflapi/Wurfl.java
Transmitting file data ...
Committed revision 29432.

Add support for mobile portals using the WURFL libraries.

Sending portal-api/api/src/java/org/sakaiproject/portal/api/Portal.java
Sending portal-impl/impl/src/java/org/sakaiproject/portal/charon/SkinnableCharonPortal.java
Transmitting file data ..
Committed revision 29433.

Add support ot the PDA portal do emit simpler HTML when dealing with
a smaller PDA device. This uses WURFL (Wireless Universal
Resource File) with some local modifications.

See http://wurfl.sourceforge.net/ for details

Sending portal-impl/impl/src/java/org/sakaiproject/portal/charon/handlers/PDAHandler.java
Sending portal-render-engine-impl/pack/src/webapp/vm/defaultskin/macros.vm
Sending portal-render-engine-impl/pack/src/webapp/vm/defaultskin/pda.vm
Transmitting file data ...
Committed revision 29434.

Posted by csev at April 22, 2007 02:58 AM