Jetspeed TODO
Last Modified: $Date$
Latest version at: http://www.working-dogs.com/jetspeed/cvsweb/index.cgi/jetspeed/docs
Author: burton@apache.org
*************************************** TODO ***********************************
- remove PortletFactory from CVS
- remove xml.peer.registrymarkup classes
****** PSML.NEXT support *****
- remove registry.xsd from CVS
- implement profile support
- implement all easy registry reference mechanisms
****** HIGH PRIORITY ******
- ARCHITECTURE: see if it is possible to remove all explicit package declarations
within the API. IE do not refer to any classes with the full name.. org.apache.jetspeed.etc.
- MAJOR BUG: Currently Jetspeed doesn't support more than 2 level on PortletEntry
inheritence. Since it just normalizes from ref -> ref -> abstract only the
first ref will get any values. The second ref will not. The correct way to
do this is from abstrace -> ref -> ref on down the chain
- BUG in FeedDaemon:
> There remains a problem when the FeedDaemon runs twice (it should also be in
> the cvs version). The Feeder can not know if a portlet is in the registry,
> and both the getPortlet (if it is not) and the addPortlet (if it is) throw
> PortletExceptions. So, the second time the feeder runs, it removes all
> entries from the registry that are already there. The third time, it puts
> them again, and so on...
- TODO: Add a test for the DiskCache. Should test local URLs so that NT/UNIX
and all JDKs work. IE file:// mapping.
- FEATURE: convert all XML parser requests to use JAXP.
- BUG: make sure that I can logon with the Hypersonic SQL configuration
- Should I create a CapabilityMap entry in PortletConfig??? This would
certainly increase performance and since the CapabilityMap never changes...
- Fix the Turbine infinite redirect problem. This is still within CVS and it
appears to manifest itself when the client can't establish (or doesn't
support) session management. This is very important to get this fixed within
Jetspeed because the WAP functionality will break if it can't establish a new
session as this will infinitely redirect. We will also loose performance here
because a new ClientCapabilityMap will have to be created for every new client
request
- FEATURE: Rework the Channel Browser and Channel Search so that MimeType
content is used correctly.
- BUG: Many content engines are NOT using the correct getLastModification() or
'Last-Modified' header impl. PHP is a major offender here. It returns the
last modification date of the .php file on the filesystem. Therefore this
Portlet will *never* get updated. We need to use the OCS XSLT mechanism to
build out a deployment expiration mechanism.
- We should use the OCS refresh mechanism to dynamically reload this info. There
was a PROPOSAL sent to the mailing list. Provide an impl of this if no other
is provided.
- BUG: if Jetspeed is serving a local URL that is a CGI/dynamic content, it tries
to read this from the disk instead of HTTP. We need a failover if the content
isn't on disk:
This was done for performance reasons. It is much cheaper to fetch this URL
from the filesystem instead of the HTTP server. There needs to be some
detection code here.
- if file exists
- use local file
- if file does not exist
- assume URL is some type of CGI/dynamic content.
- if url does not exist allow the webserver to report an error.
- BUG: FileServerPortlet doesn't not expire itself when running under Tomcat?
- BUG: When running in a new Servlet Context under Tomcat (reported by Neeme Praks):
> I have context for jetspeed set to "/jetspeed" and I have my XSP file in
> http://myhost/jetspeed/myfile.xml, the physical path is
> root-to-tomcat\webapps\jetspeed\myfile.xml (Win2K system). When
> resolving the URL to physical, JetspeedDiskCache returns
> file://root-to-tomcat/webapps/jetspeed/jetspeed/myfile.xml.
> As much as I understand, EngineContext.getInstance().getDocumentRoot()
> returns root-to-tomcat\webapps\jetspeed and then the
> /jetspeed/myfile.xml from URL is appended to this, resulting in one
> extra "jetspeed". Haven't figured a way out yet how to fix this...
- Add support to that Jetspeed can resolve its own document root mapping.
****** NORMAL PRIORITY ******
- FEATURE: In MetaData (meta-data) add a "default=boolean" attribute. This
is necessary because sometimes you want to use metadata to provide a
default title/description but still let a portlet define its own. OCS
should use the dublic core metatdata as defaults but still let portlets
provide their own... if they don't then we can fall back on the defaults.
- We should apply the following patch to ocs.xsl:
Index: src/content/xsl/ocs.xsl
==================================================================
RCS file: /products/cvs/jetspeed/jetspeed/src/content/xsl/ocs.xsl,v
retrieving revision 1.6
diff -r1.6 ocs.xsl
28a29,30
>
>
38a41,44
>
>
>
>
46a53,56
>
>
>
>
- BUG: If the PortletRegistry receives another Application then the
Applications Portlet isn't smart enough to realize that its content has
changed. It needs to expire itself when another application has been added
to PSML
- Improve Portlet subcription. You should be able to pick from a couple of
generic portlets. Then you should also be able to search from additional
portlets using keywords (from OCS) or domain name.
- Portlets should have the the ability to be added to a users profile so
they when they logon they get their own profile and their own portlets.
- Under scripts/sql create an external/turbine and external/jyve directories.
Jyve and Turbine should go under both.
- FEATURE: Move ClientCapabilityMap string matches into the
JetspeedResources.properties file as regexp
- BUG: Make the Portlet CapabilityMap have inheritance. This is important so
that we can have an abstract RSS-WML Portlet
- Take this out into the PortletRegistry... replace all the Mozilla-WML
entries, etc with this.
- BUG: Make JCM more WAP/XSL/Cocoon friendly by not including the stylesheet
within JetspeedResources.properties. Instead, put this within the PSML
registry
- For 1.2b2 move this over to xml.apache.org
- FEATURE: Put portlet editing and maximization in PSML.
- FEATURE: Do documentation on JCM for 1.2
- FEATURE: Build in a daemon to syndicate JCM via RSS and OCS
******* REQUIRED DOCUMENTATION FOR 1.2 ********
- Better documentation on the control panel and daemons is required for 1.2
- Document how the PortletRegistry works.
- Document properties files better
- Document the Daemon package
- Document the Admin console
- Document how the updated FeedDaemon works
- Document how user customization works
- ... on JCM, what it is and how to use it.
- describe what the bookmarklet does
- tell them that it stores the password in clear text
- Documentation on how to setup user authentication
- Docs and a dist of Turbine for setting up SQL
********************************** 1.2b2 ***************************************
- (DONE) ARCHITECTURE: try to move all castor generated code references into one single
peer package. The peer-factory package should be a factory and used to obtain
references to objects in the registry.peer package
- (DONE) in the PortletRegistry... addEntry and removeEntry should throw
PortletExceptions
- (DONE) FEATURE/BUG: Jetspeed internals (PortletRegistry.getEntry()) was
throwing a RuntimeException if default.psml was specifying an entry that was
never registered. Rework the PortletRegistry so that it throws a *real*
Exception
- (DONE) REWORK: rework the way Portlets are viewed:
- (DONE) Remove the PortletViewerScreen
- (DONE) The Home screen should except:
/portlet
/portlet-controller
as path info.
- (DONE) PortletControllerFactory should have a new method:
getPortletController( MimeType mimeType )... this will return the
default PortletController for the specified mimetype.
- (DONE) (BUG): The URLFetcherDownloader wasn't adding content to the DiskCache
- (DONE) in Home.java rework WAP/HTML support so that:
- (DONE) if non-HTML MimeTypes are used
- (DONE) at the begining: turn off Layout (IE: use EmptyLayout)
- (DONE) at the end: instead of returning an element, output directly to the
Servlet output stream
- (DONE) build out a MOTD for Jetspeed so that after users start it they know exactly
how to run it.
- (DONE) Fix the 'tomcat-build' so that we don't have to go to /servlet/jetspeed but
just /jetspeed
- (DONE) remove need to build classpath by putting files in WEB-INF/lib
- (DONE) BUG: Make sure that portlet property inheritance works.
- (DONE) Moreover links seem to fail within Jetspeed. The reason seems to be that if can't
figure out that the URL is really in the cache.
- (DONE) FEATURE: Fix my Ant build script for the Jetspeed/Tomcat distribution. There
should be a target for 'jetspeed-tomcat-dist'
- (DONE) Provide a CapabilityMap for Portlets
- (DONE) Provide a in PSML.
- (DONE) BUG: remove enable.userauthentication. If this is set to false it causes
the User object to be null which then throws NPEs during Jetspeeds operation
Since a database is now a required component within Jetspeed this shouldn't
be a problem.
- (DONE) FEATURE: Put all PROPOSALS into CVS as /docs/proposals with STATUS,
AUTHOR, etc as a header
- (DONE) FEATURE: upgrade to Xerces 1.1.2 and Xalan 1.1
- (DONE) BUG: Make absolute SURE that the DTD for my.netscape.com is NOT getting
fetched by Xerces. Try this with the latest version of Xerces and Xalan.
- (DONE) FEATURE: ECS performance improvement... is it a waste to continually call output()
within ECS. Should I buffer this up? Should ECS internally handle buffering
its output with a String? If I have AbstractPortlet have a String named 'content'
and a boolean flag named 'dirty' I can have setContent() dynamically generate the
correct output.
- (DONE) BUG: Have the public.cache.url resolve from a Jetspeed URL resolver (ServerContext?)
and remove public.cache.directory... just one more thing to break
- (DONE) Put the XML.com jetspeed article within sitebook
********************************** 1.3 *****************************************
- Support the refreshRate in OCS. This should map to the expire mechanism in
Jetspeed. We should put this in PSML and we can get the data via XSLT
- implement support to dynamically reload:
TurbineResources.properties
JetspeedResources.properties
- When using the DiskCache to fetch a URL... we have been serving it from the
local filesystem if this is on LOCALHOST. This is done so that the URL isn't
slowed down by being placed in the cache. However it doesn't work for dynamic
content.. IE .jsp, .asp, etc. Implement this:
We need a regular expression entry within JetspeedResources.properties
http.server.dynamic.content=*.jsp
http.server.dynamic.content=*.cfm
http.server.dynamic.content=*/servlet/*
This way we can say that if these URLs are dynamic not to read them from the filesystem.
- In PSML rename to
- Make all methods that aren't inherited either static or final. This should
improve performance on some JVMs... This way the JIT can inline the code
because it knows that it doesn't have to worry about inheritance.
- Add the ability for a URL to bypass the cache. Maybe:
http://www.cnn.com
- Add the ability to set a mime type for a url. Maybe:
http://localhost/test.gif
This would work well for a FileServerPortlet so that it can have an tag
For WAP this would work for text/wap or something
- Support a configuration interface for Portlets. Provide a mechanism so that
you can edit a Portlets init parameters. Use PortletConfig.getInitParameterNames()
to figure out what to allow for editing.
- Rework the way navigations are used with Turbine/Jetspeed. Make it possible
to kill these off via specifying them in the URI.
- Write a portlet that allows the USER to input a remote URL into Jetspeed.
This URL should have some tags stripped.