jakarta-taglibs-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Strachan <ja...@metastuff.com>
Subject PROPOSAL: io tag library (was Re: PROPOSAL: http tag library)
Date Mon, 05 Mar 2001 12:41:43 GMT
I've attached a JAR of the new io tag library which subsumes and extends the
previous http tag library I posted to this list. I'd like to submit to the
jakarta-taglibs project. Its ready for unpacking into the main
jakarta-taglibs directory, it uses the standard layout & build process etc.

Firstly I've renamed the "http" library to be "io" as it is no longer
limited to HTTP, it now does most simple input/output options thanks to
Java's URL class. So it can support ftp, file, http, (https), xmlrpc, soap
and any other URL supported protocol. The sample web application included in
this distribution demonstrates most of these protocols in action.

This version also has "tag pipelining" integrated into it such that the body
of (say) a http post can be piped in from any other 'pipeline tag' and
similarly the output can be 'piped' too. I'll describe the pipelining in a
seperate email.

<aside>
A seperate file tag library might be useful (e.g. <file:read> <file:write>
<file:mv> <file:cp> <file:createTemp> <file:delete> though this might
be
gnat-tags doman.
</aside>

The main changes are now that the <http:request> tag has become <io:request>
which works for most simple requests with <io:http>, <io:xmlrpc> and
<io:soap> offering additional attributes and features (such as <io:http>
allows HTTP POSTS to be done).

Here are some examples of simple URL requests using FTP and HTTP:-

    <io:request url="ftp://ftp.gnu.org/README"/>
    <io:request url="http://www.something.com/something.html"/>

Here is an example of using the <io:http> tag to do a HTTP post which uses
the content of the current request as the body of the POST. (So this is like
a HTTP POST proxy).

    <io:http url="http://something" action="POST">
        <io:pipe input="<% request.getReader() %>"/>
    </io:http>

Notice that the <http:body> tag has been replaced with a more reusable
<io:pipe> tag in the above example. This new tag can perform arbitrary
piping of data from a specified input to a specified output. If no input is
specified then its body content is used. If no output is specified then the
current JspWriter is used. So to specify a body the following could be
used:-

    <io:http url="http://something" action="POST">
        <io:pipe>
            this is the body of the POST
        </io:pipe>
    </io:http>

In the first example, the <io:pipe> tag is optional, it could be replaced
as:-

    <io:http url="http://something" action="POST" pipeInput="<%
request.getReader() %>"/>

More on pipelining will follow in a seperate email.


<James/>


James Strachan
=============
email: james@metastuff.com
web: http://www.metastuff.com

__________________________________________________________________

If you are not the addressee of this confidential e-mail and any 
attachments, please delete it and inform the sender; unauthorised 
redistribution or publication is prohibited. 
Views expressed are those of the author and do not necessarily 
represent those of Citria Limited.
__________________________________________________________________
  


Mime
View raw message