We have implemented improved WAP support for JetSpeed
that we would like to give back to the community (see
proposal below).

It works well with a Nokia 7110 and we'll now test
with several other WAP phones from Ericsson, Siemens
and Motolora; potentially this will require addition
of new user agent templates to the appropriate JetSpeed
classes.

Best regards,

Thomas

Thomas Schaeck
IBM Pervasive Computing Division
Phone: +49-(0)7031-16-3479  e-mail: [EMAIL PROTECTED]
Address: IBM Deutschland Entwicklung GmbH,
Schoenaicher Str. 220, 71032 Boeblingen, Germany

-------------------------------------------------------

Proposal for Improved WAP Support

Author: Sascha Alda (IBM)
Date: 11/24/2000

WML - Aggregation within Jetspeed 1.1 (and 1.2 b)

In the current version of Jetspeed the aggregation or
illustration of WML content is implemented like this:
In case that a request comes from a WAP-phone that
supports WML, the WAPPortletController is responsible
to create example mark-up. The whole WML mark-up is
generated within this controller, i.e. the Turbine
structure is not used here. No PSML file is loaded and
thus no personalized nor a customized WML page can be
generated and aggregated by Jetspeed. No controls or
any other controller are really supported for the
aggregation of WML code.

Enhancing Jetspeed with a new WML-Aggregation Support

Each controller/control renders content of portlets in a
special way. For example, the RowColumnController places
the portlet's content in a row or in a column. The actual
rendering of content depends on the requested MIME type.
Likewise to the content and layout of a normal HTML page,
a PSML file defines the content and layout of a WML page.
This allows for personalization also for WML, allowing
the user to have customized WML pages. (To allow for
multiple PSML files per user, we have implemented a simple
multi-page capable user profiler; this probably will not
be necessary anymore when JetSpeed's default profiler is
enhanced.)

We display the titles of the portlets as links in one deck
that contains one page. The user can then select a certain
title in order to view the actual content of the portlet
displayed in a separate deck.

We will implement controllers/controls that are able to handle
both HTML and WML. For the moment this is sufficient, however,
a controller/control could of course be capable to handle
even more MIME types.

Design and Implementation Details

In order to accomplish rendering WML content, we have
implemented one new controller and two new controls. Also,
we have extended the functionality of the existing controller
RowColumnController. RowColumnController has become the new
default controller for the MIME type WML, replacing the former
default controller WAPPortletController.
Thus, if one has not defined a particular controller within
a PSML file, the RowColumnController will be used automatically.
Moreover, RowColumnController is now capable to render WML as
well as HTML content, since this controller is also the default
controller for HTML. The new controller, the so-called
SimplePortletController, is to be used for rendering the titles
of a set of portlets only. Each title will be displayed as a
link. Thus, the user sees a list of links within his page.
By selecting one particular link, the actual content of the
portlet will be loaded and displayed on the screen.
The SimplePortletController is capable to render the titles
for both of the currently supported MIME types, i.e. WML and
HTML. However, the illustration of the titles of portlets makes
only sense for MIME type WML due to the restricted memory
facilities of WAP phones or of PADs, respectively.

In order to decorate the content of portlets two additional
controls have been designed: FullPortletControl and
SimplePortletControl. SimplePortletControl simply renders the
title of a portlet. This control should be used in connection
with the SimplePortletController in order to illustrate all
titles of a set of portlets within a page. FullPortletControl
renders the whole content of a portlet and places the title of
the portlet above the content in a title bar. Also,
FullPortletControl has become the new default control for the
MIME types WML and HTML.

In the following section the interaction among the different
components will be explained in detail. Because the focus of
this proposal is on WML aggregation, we restrict ourselves
on the explanation of WML aggregation.

As already mentioned, the first step of the aggregation of
WML content is rendering of the titles of all portlets. The
SimplePortletController in connection with the
SimplePortletControl can accomplish this. In a PSML file,
this must be modeled as follows:

<portlets>
 <controller
name="org.apache.jetspeed.portal.controllers.SimplePortletController>
 </controller>
   <entry type="ref" parent="PortletONE">
      <layout position="0"/>
      <control
name="org.apache.jetspeed.portal.controls.SimplePortletControl"/>
   </entry>
   <entry type="ref" parent="PortletTWO">
      <layout position="1"/>
      <control
name="org.apache.jetspeed.portal.controls.SimplePortletControl"/>
   </entry>
</portlets>

Note, that both SimplePortletController as well as
SimplePortletControl must be defined explicitly, in order to
achieve that the titles of  the portlets will be displayed
correctly. Otherwise, the default controller or the default
control, respectively, will be taken instead, leading to a
somewhat divergent rendering of content. Additionally, a title
bar will be placed above the list of titles, which includes the
text defined in the site.header.welcome field in the JR.P. File.
The user is now able to select a link to a portlet, whose content
will be generated and displayed appropriately. This selection is
a similar process to the process of maximizing a portlet within
a HTML page. Likewise the maximization of a portlet, a request
comes in the Home screen of Jetspeed. For the chosen portlet, a
default control and default controller will be selected, which
render the content of the particular portlet. It has already
been brought up, that the default controller for WML is
RowColumnController, which renders the content of the chosen
portlet. The default control FullPortletControl decorates the
content with an appropriate title bar including the title of
the portlet.

The FullPortletControl places the content of a portlet within
one card. Hence, in order to be compliant with the
FullPortletControl, the content must be organized in that way,
that it can be placed within one card without problems.




--
--------------------------------------------------------------
Please read the FAQ! <http://java.apache.org/faq/>
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Archives and Other:  <http://marc.theaimsgroup.com/?l=jetspeed>
Problems?:           [EMAIL PROTECTED]

Reply via email to