* Release 1.1: 2001-12-03 Michael Bayne * build.xml: Added a build task for generating a class hierarchy diagram using viztool. * src/java/com/samskivert/util/StringUtil.java: Added toString(boolean[]). 2001-11-29 Michael Bayne * src/java/com/samskivert/xml/ValidatedSetNextRule.java: Added a rule that allows for object validation before it is passed up to its parent. Useful for making sure an object was fully parsed before throwing it into the mix. * src/java/com/samskivert/xml/SetNextFieldRule.java: Added toString(). * src/java/com/samskivert/xml/SetFieldRule.java: Don't skip field setting when the body text is empty because we might want to set an empty array field or something. * src/java/com/samskivert/xml/SetNextFieldRule.java: Created a rule like SetNext but that sets the child object into a field of the parent rather than calling a method with the child as an argument. * src/java/com/samskivert/util/StringUtil.java: Javadoc edit. * src/java/com/samskivert/util/StringUtil.java: Modified toString() so that it can be optionally provided with opening and closing box characters (the parentheses in (0, 1, 2, 3)). 2001-11-26 Michael Bayne * src/java/com/samskivert/util/ValueMarshaller.java, src/java/com/samskivert/xml/SetFieldRule.java, src/java/com/samskivert/xml/SetPropertyFieldsRule.java: Moved the value marshalling code out of SetFieldRule and into a separate class. Created a digester rule that sets public fields of objects based on element attributes. * src/java/com/samskivert/xml/CallMethodSpecialRule.java: Need to be able to throw an exception in parseAndSet(). * src/java/com/samskivert/util/Tuple.java: Made Tuple serializable. * build.xml: Pass -breakiter to javadoc so it doesn't complain. * src/java/com/samskivert/util/HashIntMap.java: Forgot 'implements Serializable'. * tests/src/java/com/samskivert/util/HashIntMapTest.java: Created unit test for HashIntMap. * src/java/com/samskivert/util/HashIntMap.java: Made HashIntMap serializable and moved test code into a test driver. * src/java/com/samskivert/util/Tuple.java: Add equals() and hashCode() implementations that allow a Tuple to be used as a HashMap key. * src/java/com/samskivert/util/CompoundIterator.java: Fixed a bug with hasNext(). 2001-11-20 Michael Bayne * build.xml: Moved the optimization compile parameter into a property to make it easier to change and more obvious. * src/java/com/samskivert/velocity/DispatcherServlet.java: We should have been using setProperty() not put() and accordingly we can't set a logger object in the properties, but must set the logger class. * src/java/com/samskivert/velocity/ServletContextLogger.java: Be smarter about extracting the servlet context from the application context reference. * src/java/com/samskivert/velocity/DispatcherServlet.java, src/java/com/samskivert/velocity/ServletContextLogger.java: Add servlet context logger during servlet initialization phase. Allow servlet context to be specified at construct time to servlet context logger. * src/java/com/samskivert/velocity/ServletContextLogger.java: Added a log system implementation that routes log messages to the servlet context so that we don't have to fiddle around with Velocity trying to create velocity.log files in inopportune places that collide with velocity.log files from other Velocity-using applications. * src/java/com/samskivert/util/CompoundIterator.java: Created an iterator that iterates over iterators. 2001-11-18 Michael Bayne * src/java/com/samskivert/util/StringUtil.java: Added support for toString()ing points and dimensions. 2001-11-17 Michael Bayne * src/java/com/samskivert/xml/CheckVersionRule.java: Created a rule for checking file format version numbers. * src/java/com/samskivert/xml/CallMethodSpecialRule.java: Created an XML Digester rule that allows the calling code to invoke whatever string to argument translations it desires and then call whatever method it wants to on the object on the top of the stack. * src/java/com/samskivert/xml/SetFieldRule.java, tests/rsrc/xml/setfieldtest.xml, tests/src/java/com/samskivert/xml/SetFieldRuleTest.java: Created SetFieldRule which allows the XML Digester to set public fields on objects with automatic conversion from a string to the appropriate field type (currently supports int, Integer, String, int[] and String[]). * src/java/com/samskivert/xml/package.html: Formatting. * tests/build.xml: Require that JUnit forks so that we don't end up with wacky conflicts between xerces.jar loaded by ant and our own copies of an XML parser implementation. * src/java/com/samskivert/xml/SimpleParser.java: Added header. 2001-11-10 Michael Bayne * src/java/com/samskivert/jdbc/SimpleRepository.java: If the connection chokes while we're opening it, we need to let the connection provider know that it's no longer any good. * build.xml: OptimizeIt! 2001-11-09 Michael Bayne * src/java/com/samskivert/xml/SimpleParser.java: Modified simple parser to take either an absolute path to the file being parsed or an input stream. 2001-11-08 Michael Bayne * tests/src/java/com/samskivert/servlet/SiteResourceLoaderTest.java: SiteResourceLoader no longer automatically falls back to the servlet context, so we have to simulate that ourselves. * tests/build.xml: Don't find anything with Test in it, just anything that ends with Test. * src/java/com/samskivert/io/NestableIOException.java, src/java/com/samskivert/xml/SimpleParser.java: Created NestableIOException for things that need to throw an IOException that contains another exception. Use NestableIOException in SimpleParser when the parser chokes. 2001-11-06 Michael Bayne * src/java/com/samskivert/velocity/Application.java, src/java/com/samskivert/velocity/DispatcherServlet.java: Removed some debug logging. * src/java/com/samskivert/velocity/Application.java, src/java/com/samskivert/velocity/DispatcherServlet.java, src/java/com/samskivert/velocity/SiteResourceManager.java, src/java/com/samskivert/servlet/MessageManager.java, src/java/com/samskivert/servlet/SiteResourceLoader.java: A crapload of changes: load more stuff from servlet config; message manager now supports site-specific translation messages; application automatically configures Velocity to use things like the SiteResourceManager and the ImportDirective. * src/java/com/samskivert/velocity/SiteJarResourceLoader.java: Pass SiteResourceLoader in constructor, changed name to SiteJarResourceLoader, no longer pass fallbackToServletContext argument. * src/java/com/samskivert/servlet/SiteResourceLoader.java, src/java/com/samskivert/velocity/SiteResourceManager.java: Commented out some debug log messages. * src/java/com/samskivert/servlet/MessageManager.java: Added code to cache resolved resource bundles in the request object so that we don't have to re-resolve the bundle for every single message lookup. * src/java/com/samskivert/velocity/SiteResourceManager.java: Activate caching for the time being. * src/java/com/samskivert/servlet/SiteResourceLoader.java: Need to explicitly check to make sure the site-specific jar file exists. * src/java/com/samskivert/velocity/Application.java, src/java/com/samskivert/velocity/DispatcherServlet.java, src/java/com/samskivert/velocity/ImportDirective.java, src/java/com/samskivert/velocity/ServletContextResourceLoader.java, src/java/com/samskivert/velocity/SiteJarResourceLoader.java, src/java/com/samskivert/velocity/SiteResourceKey.java, src/java/com/samskivert/velocity/SiteResourceManager.java: Many changes to provide site-specific resource loading (we're almost there) and to bring things up to date with some Velocity changes Geir made at my prompting. * src/java/com/samskivert/servlet/SiteResourceLoader.java: Added ability to retrieve last modified time of the site-specific jar file. * src/java/com/samskivert/servlet/SiteIdentifier.java: Added clarification to documentation indicating the valid range of values for site identifiers. * src/java/com/samskivert/servlet/IndiscriminateSiteIdentifier.java: Documentation fix. * src/java/com/samskivert/util/IntListUtil.java, tests/src/java/com/samskivert/util/IntListUtilTest.java: Created a version of ListUtil that works with arrays of ints. * src/java/com/samskivert/util/ListUtil.java: Clear out the last element of the array when the rest of the array is shifted down to remove an element. 2001-11-05 Michael Bayne * src/java/com/samskivert/servlet/SiteResourceLoader.java, tests/src/java/com/samskivert/servlet/SiteResourceLoaderTest.java: Added a version of getResourceAsStream() that takes the site identifier for when the site has already been identified. * docs/notes.txt: Notes. * lib/README: Updated library dependencies. * tests/README, tests/build.xml, tests/rsrc/servlet/srl/README, tests/rsrc/servlet/srl/default/body.txt, tests/rsrc/servlet/srl/default/footer.txt, tests/rsrc/servlet/srl/default/header.txt, tests/rsrc/servlet/srl/defaultout.txt, tests/rsrc/servlet/srl/site1.jar, tests/rsrc/servlet/srl/site1out.txt, tests/rsrc/servlet/srl/site2.jar, tests/rsrc/servlet/srl/site2out.txt, src/java/com/samskivert/test/TestUtil.java: Created a testing framework for the samskivert library based on JUnit and ant. The test drivers are located in a separate hierarchy and are built and invoked as a single ant target. * src/java/com/samskivert/servlet/SiteResourceLoader.java, tests/src/java/com/samskivert/servlet/SiteResourceLoaderTest.java: Created site resource loader which loads resources based on the site identified from an http request. Also created a unit test driver for the loader. 2001-11-02 Michael Bayne * src/java/com/samskivert/velocity/DispatcherServlet.java: Geir didn't like velocityWillInit(), so he created initVelocity() which we override when setting the application context. * src/java/com/samskivert/velocity/DispatcherServlet.java: Have to set the application context in velocityWillInit() (which I added) so that it's around before Velocity.init() gets called, which happens in super.init(). * src/java/com/samskivert/velocity/ServletContextResourceLoader.java: Be more robust and log a warning if we're used without first properly setting the servlet context into the application context. * src/java/com/samskivert/velocity/DispatcherServlet.java, src/java/com/samskivert/velocity/ServletContextResourceLoader.java: Modified dispatcher servlet to stick servlet context into Velocity's application context and implemented a servlet context resource loader which loads resources via ServletContext.getResourceAsStream(). * build.xml: Fixed classpath so that things in classes are preferred, things in lib/*.jar are next and things in /usr/share/java/*.jar are last. * src/java/com/samskivert/velocity/Application.java: Fixed spelling error: createSiteIdentifier(), not createSiteIdentifer(). * src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java: Sort the domain mappings once we've loaded them; fixed a SQL bug; wrote toString() for the mapping object. 2001-11-01 Michael Bayne * src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java, src/sql/create_site_tables.mysql: Created a site identifier that reads data from a JDBC table. * src/java/com/samskivert/velocity/Application.java, src/java/com/samskivert/velocity/DispatcherServlet.java: Changed preInit() to postInit() in Application so that calls to things like createSiteIdentifier() can happen after the application is initialized and has access to things like connection providers. * src/java/com/samskivert/jdbc/Repository.java: Made Operation public because otherwise I can't do something like this: public FooRepository extends SimpleRepository implements SimpleRepository.Operation { } which seems wacky to me but I can see how we may not have entered the protected namespace of the extended class while we're processing our interface implementation declarations. Seems a bit like a bug though. * src/sql/create_user_tables.mysql: Formatting. * src/java/com/samskivert/util/ServiceUnavailableException.java: Created a runtime exception that can be thrown if for some reason a service can't make its services available (like the database is down, or their team lost, or their girlfriend turned out to be a guy). * src/java/com/samskivert/velocity/Application.java, src/java/com/samskivert/velocity/DispatcherServlet.java: Applications now create a site identifier at init time which can be used to identify sites in the course of operating the application. * src/java/com/samskivert/velocity/FormTool.java: Added action() and submit() which make doing standard things like a hidden form field named "action" and a submit button named "submit" more convenient. * src/java/com/samskivert/velocity/FormTool.java: Added support for checkbox form elements. * src/java/com/samskivert/velocity/FormTool.java: Extracted common code, added support for password input fields. * src/sql/create_user_tables.mysql, src/java/com/samskivert/servlet/user/User.java, src/java/com/samskivert/servlet/user/UserRepository.java: The big name-change ola: userid -> userId, etc. Added siteId to user record (and table). 2001-10-31 Michael Bayne * src/java/com/samskivert/servlet/IndiscriminateSiteIdentifier.java, src/java/com/samskivert/servlet/SiteIdentifier.java: Created a site identifier interface which is used to determine through which site a particular request originated. * src/java/com/samskivert/velocity/DispatcherServlet.java, src/java/com/samskivert/velocity/FormTool.java: Created a form tool for generating form fields that automatically inherit the values from the request parameters. Modified dispatcher servlet to put one in the context for every request. * src/java/com/samskivert/velocity/DispatcherServlet.java: Needed a FriendlyException import. * src/java/com/samskivert/servlet/util/DataValidationException.java, src/java/com/samskivert/servlet/util/ExceptionMap.java, src/java/com/samskivert/servlet/util/FriendlyException.java, src/java/com/samskivert/servlet/util/HTMLUtil.java, src/java/com/samskivert/servlet/util/ParameterUtil.java, src/java/com/samskivert/velocity/Application.java, src/java/com/samskivert/velocity/DispatcherServlet.java, src/java/com/samskivert/velocity/DummyLogic.java, src/java/com/samskivert/velocity/InvocationContext.java, src/java/com/samskivert/velocity/Logic.java, src/java/com/samskivert/velocity/MessageResolver.java, src/java/com/samskivert/velocity/package.html: Converted my web application framework to work with Velocity and cleaned up some other stuff (removed multiple application support because it was pointless). Moved some general purpose things into servlet.util (still need to modify the WebMacro version of the framework to use the general purpose versions). * docs/notes.txt: Notes. 2001-10-29 Michael Bayne * docs/notes.txt: Notes. 2001-10-25 Michael Bayne * src/java/com/samskivert/jdbc/StaticConnectionProvider.java: Better error reporting. 2001-10-18 Michael Bayne * src/java/com/samskivert/util/StringUtil.java: Added a version of hexlate() that only prints out the first N bytes. 2001-10-17 Michael Bayne * src/java/com/samskivert/swing/VGroupLayout.java: Was missing a break in a switch statement. 2001-10-15 Walter Korman * src/java/com/samskivert/xml/SimpleParser.java: Created a simple extensible parser class to take care of common character data gathering and file parsing machinations. 2001-10-15 Michael Bayne * src/java/com/samskivert/util/IntTuple.java: Created specialization of tuple for holding a pair of ints. 2001-10-09 Michael Bayne * src/java/com/samskivert/swing/GroupLayoutTest.java, src/java/com/samskivert/swing/HGroupLayout.java, src/java/com/samskivert/swing/VGroupLayout.java: Fixed a bug in the right justification code related to insets handling. * src/java/com/samskivert/swing/HGroupLayout.java, src/java/com/samskivert/swing/VGroupLayout.java: Added code to deal with left-over pixels that may occur due to rounding error when the number of free components doesn't divide evenly into the number of pixels they need to occupy. 2001-10-04 Michael Bayne * src/java/com/samskivert/util/Config.java: Added getProperties() which allows one to fetch the properties object associated with a particular namespace identifier. 2001-10-03 Michael Bayne * src/java/com/samskivert/util/MethodFinder.java: Added a version of findMethod() that takes the arguments themselves rather than the types of the arguments. * src/java/com/samskivert/util/ClassUtil.java, src/java/com/samskivert/util/MethodFinder.java: More comment edits. * src/java/com/samskivert/swing/Controller.java, src/java/com/samskivert/util/ClassUtil.java, src/java/com/samskivert/util/LoopingThread.java, src/java/com/samskivert/util/MethodFinder.java: Fixed up javadoc comments. Removed some unneeded final declarations in Methodfinder. * build.xml: Updated Sun's javadoc URL. * src/java/com/samskivert/util/ClassUtil.java, src/java/com/samskivert/util/MethodFinder.java: Adapted code from Paul Holser for looking up a reflected method that matches a certain set of argument types that works the compiler works. 2001-10-02 Michael Bayne * src/java/com/samskivert/util/LoopingThread.java: Modified code to handle an exception that propagates up past iterate(). It still causes the thread to exit by default, but it provides a mechanism for overriding that behavior and it logs the exception rather than quietly dying. 2001-09-28 Michael Bayne * src/java/com/samskivert/jdbc/MySQLLiaison.java: Close the statement that we use to get the last inserted id. 2001-09-27 Michael Bayne * src/java/com/samskivert/util/CollectionUtil.java: Added toIntArray() which converts the contents of a collection to an int array. 2001-09-21 Michael Bayne * src/java/com/samskivert/io/PersistenceException.java, src/java/com/samskivert/jdbc/ConnectionProvider.java, src/java/com/samskivert/jdbc/Repository.java, src/java/com/samskivert/jdbc/SimpleRepository.java, src/java/com/samskivert/jdbc/StaticConnectionProvider.java, src/java/com/samskivert/servlet/user/UserExistsException.java, src/java/com/samskivert/servlet/user/UserManager.java, src/java/com/samskivert/servlet/user/UserRepository.java: Moved PersistenceException into com.samskivert.io because it's not specific to JDBC. * src/java/com/samskivert/util/ListUtil.java: Added indexOf() and indexOfEqual(). 2001-09-20 Michael Bayne * src/java/com/samskivert/jdbc/LiaisonRegistry.java, src/java/com/samskivert/jdbc/MySQLLiaison.java: Liaison fixups. * src/java/com/samskivert/util/ConfigUtil.java: Throw a FileNotFoundException in loadProperties() if we are unable to locate the properties file in the classpath. * src/java/com/samskivert/jdbc/LiaisonRegistry.java: Log a warning if we find that we need to use the default database liaison because that's generally a bad deal. * src/java/com/samskivert/jdbc/DatabaseLiaison.java, src/java/com/samskivert/jdbc/DefaultLiaison.java, src/java/com/samskivert/jdbc/LiaisonRegistry.java, src/java/com/samskivert/jdbc/MySQLLiaison.java, src/java/com/samskivert/jdbc/SimpleRepository.java: Finished up liaison stuff. * src/java/com/samskivert/jdbc/SimpleRepository.java, src/java/com/samskivert/jdbc/StaticConnectionProvider.java, src/java/com/samskivert/jdbc/jora/Session.java, src/java/com/samskivert/servlet/user/UserExistsException.java, src/java/com/samskivert/servlet/user/UserManager.java, src/java/com/samskivert/servlet/user/UserRepository.java, src/java/com/samskivert/io/PersistenceException.java, src/java/com/samskivert/jdbc/ConnectionProvider.java, src/java/com/samskivert/jdbc/DatabaseLiaison.java, src/java/com/samskivert/jdbc/JORARepository.java, src/java/com/samskivert/jdbc/LiaisonRegistry.java, src/java/com/samskivert/jdbc/MySQLLiaison.java, src/java/com/samskivert/jdbc/MySQLRepository.java, src/java/com/samskivert/jdbc/Repository.java: Serious database services rethink. It's cleaner, more loosely coupled and more extensible now. Whee! * docs/notes.txt: Crapload of notes on database services. * build.xml: Switch from jarfile= to file=. It's the New Way (tm). 2001-09-15 Michael Bayne * src/java/com/samskivert/servlet/user/UserRepository.java, src/java/com/samskivert/util/Collections.java, src/java/com/samskivert/util/HashIntMap.java, src/java/com/samskivert/util/IntMap.java, src/java/com/samskivert/util/IntervalManager.java: Reworked IntMap to be a proper Java collection in the style that the java.util collections established. This means that IntMap becomes HashIntMap, IntMap is now an interface that extends the standard Map interface and a new Collections class is provided that allows one to create a synchronized wrapper around an IntMap. 2001-09-14 Walter Korman * src/java/com/samskivert/swing/util/SwingUtil.java: Added getPolygon() to return a polygon bounding a given rectangle. 2001-08-30 Walter Korman * src/java/com/samskivert/swing/ToolTipManager.java: Separate the tool tip interval frequency from the mouse delay before a tool tip is shown. 2001-08-29 Walter Korman * src/java/com/samskivert/util/Config.java: Added support for retrieving boolean configuration values. 2001-08-28 Walter Korman * src/java/com/samskivert/swing/ToolTipManager.java, src/java/com/samskivert/swing/ToolTipObserver.java, src/java/com/samskivert/swing/ToolTipProvider.java, src/java/com/samskivert/swing/util/ToolTipUtil.java: Added ToolTipProvider interface, and track and pass along the mouse position associated with tool tip display so that tool tips can be positioned more appropriately within their container. 2001-08-23 Walter Korman * src/java/com/samskivert/swing/util/SwingUtil.java: Added drawStringCentered(). * src/java/com/samskivert/swing/ToolTipManager.java, src/java/com/samskivert/swing/ToolTipObserver.java: Monitor the component's ancestor events so that the tool tip interval can be registered and unregistered based on component visibility. 2001-08-22 Walter Korman * src/java/com/samskivert/swing/ToolTipManager.java, src/java/com/samskivert/swing/ToolTipObserver.java: Initial version of classes to support working with tool tips in a more generic, extensible and lightweight fashion than is possible with the current incarnation of Swing tool tips. 2001-08-15 Michael Bayne * src/java/com/samskivert/util/StringUtil.java: Added support for enumerations and iterators to toString(). * build.xml: Pulled more things out into parameters. * build.xml: Added dist to the all target. * src/java/com/samskivert/util/ListUtil.java: Added testAndAdd() for adding elements only if they are not already in the list. Modified clear...() and remove...() to cope with being passed a null list. * src/java/com/samskivert/util/ListUtil.java: Added contains() and containsEqual(). * src/java/com/samskivert/util/ListUtil.java: Created a class for managing lists of object arrays for those times when you don't want the overhead of a separate object that goes along with ArrayList, and when you don't need strict list ordering. * Release 1.01: 2001-08-13 Michael Bayne * code/swing/Controller.java: Added classes to support having controllers that manage high level user interface interaction. See the controller class for explanation. * Release 1.0: 2001-08-12 Michael Bayne * various: Initial release. $Id: NEWS,v 1.5 2002/12/12 19:02:19 mdb Exp $