This is version . It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]

Hula is a Java client API to the WikiRPCInterface. This allows one to programmatically manipulate the content of a Wiki that implements this interface. Hula is distributed under the GNU General Public License

Existing Applications#

Latest Download#

The latest version of Hula is at The full version supplies all the outside libraries used, nolibs doesn't. Source, classes, and javadocs are included in both.
Forgive me if I'm being a bit dense here, but how does one activate the EmailGenerator to read the NotificationList page? From the *.sh file? From within another Wiki page? Is it automatic after the initial activation? -- JoshuaBecker


Different bits of the sample applications require different libraries. The .zip file with 'full' in the name supplies these libraries. Xmlrpc.jar and jakarta-oro.jar are also found in the JSPWiki 1.7.0 download. And, as I said, they are all provided in the full version of the .zip file.


MahlenMorris: Version 2003-12-14 is now out:
  • Fix to RPCClient to deal with possible memory leak in XmlRpcClient. I'm not certain what the deal is, but it looks like XmlRpcClient can hold onto great gobs of memory when called several times, eventually crashing the JVM. My solution is for RPCClient to create a new XmlRpcClient each time it does a call, which seems to work much better.
  • Added TOC (Table of Contents) concept to both LinkUtil and EmailGenerator, making it possible to select a group of pages that are pointed to by another page.
  • Also added author exclusion to EmailGenerator.
  • Now create and use hula.jar, not (thank you for that suggestion, AlexMcLintock).
  • Added TOCstart.jsp and TOCshow.jsp as demos of TOC printing.

MahlenMorris: Version 2002-12-24 is now out:

  • I think I fixed a bug I discovered such that if EmailGenerator is running on a slower machine that was causing it to skip hours occasionally. I think that Thread.sleep() can get more inaccurate on slower machines.
  • Made EmailGenerator more robust in circumstances when the XML-RPC server is unavailable for a long time, due to downtime or network problems.
  • Now EmailGenerator can be called with a command line argument that is the name of the .properties to read for instructions, instead of always using (it will default to if not specified). This means that you can name the properties '', and installing a new version of Hula over the previous one won't affect it.
You know, I was wondering a bit about the skipped hours... But I never managed to get into checking if the fault was in my XML-RPC code or where :-). --JanneJalkanen

MahlenMorris: Version 2002-05-19 is now out:
  • Grrrr. Bug in EmailGenerator was causing it to skip checking every other hour. These Stupid Pills I've been taking are way too strong :0

MahlenMorris: Version 2002-05-18 is now out:
  • Whoops! NPE in interveningPages() if the page is new. Fixed.
  • Fixed crash if server is down for over an hour.

MahlenMorris: Version 2002-05-17 is now out:
  • EmailGenerator now mentions who made the changes described on the page. PageInfo now has a interveningAuthors() method to support this.
  • I've included the PrintWiki *.jsp pages. Look in the apps directory. You'll have to edit them yourselves to point them to other Wikis, and you'll likely want to edit the introductory text.
  • I've dropped the useless RPCClient argument from VersionUtil.diff().
  • Fixed a couple little bugs in PrintWiki.assemble().
  • The current state of the Hoop code is included, mainly because my build included it automatically. Don't use it for anything.

MahlenMorris: Version 2002-04-20 is now out:
  • I've given up on version numbers for the time being, as they have become increasingly non-sensical.
  • EmailGenerator:
    • Added text justification width as a new property message.justify. Default is 72 characters long; if the property is missing, no justification will be done.
    • Added ability for users to specify that when a page has changed, send the whole page in the email, not just the delta. Can apply to an individual page or to RecentChanges. Property entry.wholepageindicator lets the email administrator pick the string that decides this; current default is !.
    • At startup will mention the Wiki server it's trying to contact.
    • Seems to be working nicely. Preformatted text (stuff between 3x{ and 3x}) seems to lose its indentations, but solving that would require parsing of the input. --JanneJalkanen
    • Check also a new application at TouchGraphWikiBrowser.

MahlenMorris: Version 0.7.4 is now out:
  • PageInfo has methods for getting raw text and HTML.
  • EmailGenerator has property so that default time zone can be local time.
  • In EmailGenerator, -pagename means changes to that page(s) won't be shown.

Hey, the last one is a cool feature I was just going to ask you for... You read my mind :-) --JanneJalkanen

MahlenMorris: Version 0.7.3 is now in place:
  • PrintWiki.assemble() can now be used with Wiki's other than this one :)
  • RPCClient now uses ORO's CacheLRU to cache recently used PageInfo's and raw page text. So there's value in keeping RPCClient's around, as the caching can make retrieval significantly faster.

MahlenMorris: Version 0.7.1 is now out:
  • The .zip file is now better organized. You can just unzip the 'full' version and run it.
  • There are scripts for running the email generator (modify the properties file first!). Please test the .sh version and inform me of its flaws; I don't have a Unix box to try it on.
  • EmailGenerator is now more robust when communications with the Wiki XML-RPC server fails. If any exception occurs when trying to put together the email, EmailGenerator should sleep 3 minutes and then try again.
  • The thread doesn't sleep for as long between emails, so the email should be sent within a minute of the hour designated. Really, though, I should just be calculating how long to sleep. Describing the behavior of my code always makes me aware of its flaws.

MahlenMorris: Version 0.7 of Hula is now available at I believe that this version fully supports the JSPWiki 1.7.0 base-64 XML-RPC API. Improvements from 0.6 include:
  • EmailGenerator now has an file, where connection info and so forth can be specified. A sample is available in the file. The file should be in the current directory when EmailGenerator is started. It is re-read each hour, so that you can tweak the format of the emails or what have you without stopping the program.
  • EmailGenerator now doesn't halt when the server is unavailable.
  • The LinkUtil class is now more useful. I'm working on an application that uses it.
  • listLinks now supports 1.7.0 method.
  • Janne's superior UTC<->Local conversion technique is now used.
  • Whatever other random dumbness i noticed.

It's 1:30 in the morning here in California as I post this, so any bugs wouldn't be a surprise :). But I'd still like to hear about them below.

MahlenMorris: Version 0.6 is available at Much cleaner code, a few new methods, and it can autodetermine the time zone (which is now in milliseconds). Plus there's now code for diffing between different versions of a page; it's being used in the Email code for NotificationList. Completely incompatible with version 0.5, by the way, the packages have all changed.

As you may observe, I'm toying with the name Hula for this project.

The email generation code used for NotificationList is also now included.

All comments welcome.

I have created a little Java class library that makes it easier to write clients that connect to the WikiRPCInterface. It's currently at the rather arbitrary version number of 0.5. It's compatible with the 1.6.12-beta of the server. It relies on the Apache XML-RPC class library.

Also included is the PrintWiki class that's doing the work of merging the pages on this page. It's not very sophisticated, and currently works strictly with this Wiki site. (on Feb 28 2003 the page linked above was returning a 500 servlet exception.)


This is quite cool, I have to admit :-).

Note that the XML-RPC API changed a bit in 1.7.0. Any chances in getting the changes reflected in the RPCClient code? I'd love to install this on an other Wiki site I'm running... --JanneJalkanen

What changes have I missed, Janne? The only ones i know of are:

  • UTF-8 support. Not sure i need this, since I'm doing all the conversions already.
  • listLinks changes. I have updated code for this, I just haven't pushed out a new version yet. Done.
  • Your improved time-zone-figuring-out-code. Will fold it in soon. Done.

Otherwise, as far as I know, the code i have is working fine against 1.7.0. Mind you, I have a long list of things I'd like to add, but no other compatibility issues. What am I unaware of? --MahlenMorris

JanneJalkanen: I was referring to the listLinks changes, especially the fact that we're now using strings to denote the link type instead of integers. But if you've already updated it, then I have nothing to worry about :-). Anyway, the API should be stable now, i.e. I'll add to it, but I won't change it unless I really, really have to...

Do you still have to make the link parsing JSPWiki-specific? Isn't the plain HREF enough? I'm referring to version 0.7.1. --JanneJalkanen

I'm presuming you're talking about the PrintWiki class. I haven't put any time into that lately (I've been polishing EmailGenerator), so it hasn't been updated to use listLinks(). But if someone's actually going to use it, I'll try to sharpen it up. -- MahlenMorris

Janne, does 0.7.3 do the trick? -- MahlenMorris

It would seem so.

MahlenMorris: Actually, it may not exactly work. I noticed today that you've changed the currently running JSPWiki back to link HREF's with fully qualified links (with http://www.ecyrd..) instead of the relative links you had a while ago, which I wasn't expecting. This has the effect of making links to pages outside of the current set not work correctly. If you're just printing the page or moving it to some object where those links don't matter, then this bug on my part is not an issue. I've fixed it in the code, and it will be in the next release..

But now I'm curious, Janne, what are you using/planning to use it for, may I ask?

JanneJalkanen: Well, isn't it just about doing a simple search-replace operation when link type is "internal"? Whether we give out the full link or not depends on whether the jspwiki.baseURL has been set in or not. This is required for the RSS feed for JSPWiki to work, since it has no implicit concept of an originating server.

As for what I was going to use it for... Well, I have some wacky ideas brewing in my mind. Also, I want to make sure that the RPC API does not limit you to JSPWiki only (even though there are quite few Wikis that support it so far).

MahlenMorris: My fix for the above bug is that it checks the href of an internal link, and only prepends the baseURL if the href doesn't start with "http://". Before it was always prepending the baseURL. Bad assumption on my part.

And i as well am trying to make sure the Hula apps work across WikiEngines. Along those lines, Hoop is progressing, albeit slowly (cursed real life!) I hope to release the .jsp files for the page selector in the next release.

I also use the eMail-notification of changes to keep up with changes in this Wiki. Great work, thanks!

Two things would make it even better though:

  • having a few lines of context (like in diff -u format)
  • breaking long lines at some reasonable limit preserving the initial '>' and '<' characters

MahlenMorris: Those are both good ideas, Torsten. I'll have to rub my chin over them, so as to make it appear that I'm thinking hard :)



  • AlexMcLintock I would really like to print out my Wiki in a "tree-like" fashion - printing the Main page, then the pages linked from there, and then the pages linked from each of those pages in turn. I guess we could try breadth or depth first.
However I don't see how to use the XML-RPC interface to control this.
    • MahlenMorris Try the new TOCstart.jsp page and look at the code it calls.

<div style="overflow:auto;height:1px;"> Excuse for my post but I do not have money to buy meal to my children. Forgive me please. car insurence air fares flights auto loan amortization schedules dinosaur hunting games pictures of women forced to have sex st josephs college sydney girl of the age 5 years photo 1970 s trivia game dirt bike rideing games for free barbie girl free sheet music free 1000 free games installing xbox games the most desirable jobs pain management nurse practitioner jobs decent sex lines gay sex blow jobs gay and lesbian churches in rhode island bbc radio 2 home bogle dog breads play scattergories game online gay dubois pennsylvania alice cooper music html codes adult size bunk beds moraine park technical college discounted educational computer games fresno home for sale coeur d alene idaho hotels blackwhite sex minnesota music studios lighted dog collars gay teen swim diseny channel games precision auto detailing products priceless girls real estate forms free effects of music downloading civil air patrol grisoft disney channel and games bennington college gay teen free nude videos team building games for adults barnesville ga real estate disney games for elementary home made car kennedy space center jobs free car accident diagrams college poetry custom car steering wheels cigar cutter scoutaward html paul little bear space music disney online games girls having sex gallery dog training myspace music files paul collins music disney princess games cannot set home page adult safe hockey league wichita ks reyl auto disney toon games disney vidio games so maine community college car for sale renfrew real estate rochester kanye west lyrics college dropout central community college sanford roan mountain tn real estate uploads for portable music devices gamecube mario sunshine cheats adult communities lakeland fl masonic lodge air base in iraqi christiana pa real estate example of job interview thank you letter girl scouts global citizen corps stadium capicity for college staduims business cleaning home start air house maintenance training floating dog dock gay sex blow jobs masterbation do video games cause muscle fatigue airline aggragator cushinoid dog do video games cause violence in children adult casual sex used video game store adult poser view music for people by jules styne star wars episod 3 gameboy game cheats buds auto do windows 98 games work with windows xp ever after sheet music doctor games dodge ball games dodge ball pe games pennsylvania estate tax changes air force medal acronyms cf united airline international airline airfares top music of the 80 s does playing games effect kids grades perry street richmond real estate listings famous pinup girl artist discovery home health website pixiegirl29 arena football league salary does video games increase your reaction time does violent video games help bring down crime rate dog breeding games online business ideas for home treasures of classical music game meat girls dominating girls dog games sex park in paris dog pile games humiliating sex stories midwest air transport and kevin hillner comcast job opportunity girls loves dogs doh games import drag racing games benalmadena adult holiday best jobs in australia nike mens air classic sb skateboarding shoes 11 green domania real estate values college sailing sex and the city anchors away something stupid music video free music wavs storhouse furniture christian music wholesale outlets reg sicherung xp home verzeichnis man and dog porn porn game online for free dollhouse games online air control box sex cartons real estate in springfield missouri area car bonet take six music vintage auto furniture nude pics of really young girls what music was played in broly second coming american rockband 2006 college softball rankings hotels in chapel hill n aba music form college guys dora games for kids for free henti sex games hmong music songs remix frainier real estate school atlantic city nj best list of music 2006 </div>

Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
zip 207.2 kB 1 19-Mar-2006 00:48 MahlenMorris
« This particular version was published on 20-May-2006 10:40 by