applet are forcibly destroyed when it is destroyed, even though the applet's
class loader sticks around and it is started up again with the same classes
(which have already been static initialized). Twisty maze of passages.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1939 6335cc39-0255-0410-8fd6-9bcaacd3b74c
I'm pretty sure source files should be ISO-8859-1.
If you're more comfortable with entity tags appearing in a /* */ style
comment, then maybe that's what we should use for the header text.
(The Java Coding Guidlines say you should use a /* */ comment at the top
of the file.)
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1938 6335cc39-0255-0410-8fd6-9bcaacd3b74c
properly cache the results of our insert based on the newly assigned primary
key. Also avoid freakout if an attempt is made to store() a non-primary-key
using object.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1928 6335cc39-0255-0410-8fd6-9bcaacd3b74c
where we will need to cache the results of a modifier (like an insert or an
update). Added hasPrimaryKey() to DepotMarshaller which we will soon use
externally.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1927 6335cc39-0255-0410-8fd6-9bcaacd3b74c
by the tests build file. Added a call to build the tests to the standard dist
call to discourage test rot. Modified build process to copy library
dependencies into dist/lib during build so that dist/ contains all build
dependencies and build results at the end of the build.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1925 6335cc39-0255-0410-8fd6-9bcaacd3b74c
provide one. Separate out logging for depot so that fine grained logging can be
enabled if needed without turning on such logging for all of samskivert.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1918 6335cc39-0255-0410-8fd6-9bcaacd3b74c
various fancy things like embedded objects and constraints and kitchen sinks
are not yet implemented, but the basic bits are functional (including IDENTITY
column primary key handling).
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1916 6335cc39-0255-0410-8fd6-9bcaacd3b74c
thousand lines of super funny looking generics and reflection filled code the
first time, it just worked. Yay for static typing or something.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1909 6335cc39-0255-0410-8fd6-9bcaacd3b74c
complements createActionButton() but gives you control over creating the button
(and works for any AbstractButton derivation).
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1904 6335cc39-0255-0410-8fd6-9bcaacd3b74c
same methods. But then I went ahead and added String varargs versions,
otherwise any old code that passes a String[] would have to cast to
Object[] to avoid compiler warnings. (Because the args don't quite match,
the compiler is unsure whether you want your String[] to be the first Object
arg or whether the whole String[] should be cast to the Object[].)
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1901 6335cc39-0255-0410-8fd6-9bcaacd3b74c
certainly *never* what you want. However, I don't know who's calling these
methods (and they are doing so through Velocity so I can't just recompile
everything to find out; yay for dynamic languages), so I won't remove them
outright. I did remove the dangerous methods from CurrencyUtil.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1896 6335cc39-0255-0410-8fd6-9bcaacd3b74c
I originally had append have the signature:
public static <T extends Object, E extends T> T[] append (
T[] values, E value)
At first I thought I had done a good thing by ensuring that a subclass
element could be added, but then realized that E was pointless because
an E can be passed in for the T parameter anyway.
That got me thinking about generics and I found this:
http://weblogs.java.net/blog/arnold/archive/2005/06/generics_consid_1.html
Some of it made me laugh, and while I didn't read all the comments, I
spotted this gem:
[excerpt]
The trouble with generics--and this has been known for many years--
is what I'd like to call the Elvis/Einstein boundary. (Google for
Mort/Elvis/Einstein if you wonder why the King enters the picture...)
List<E>. solves a problem that Elvis had: What the !@#$ is in that
collection?
But before he knows it, he is at
<T> int binarySearch(List<? extends Comparable<? super T>> list, T key).
That`s for Einstein, not Elvis.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1895 6335cc39-0255-0410-8fd6-9bcaacd3b74c
the string is tested against maxLength, but is trimmed at a point
such that the result string will be maxLength after the addition of
the 'append' parameter.
I'm pretty sure nothing (around these parts) depended on the old behavior.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1894 6335cc39-0255-0410-8fd6-9bcaacd3b74c
Sometimes we used the apache predicate, sometimes we rolled our own.
I'm rolling our own now because I want generic support.
Implementation details are subject to change, but two that we may want
to discuss sooner than later:
- I called the arbitration method "isMatch()", but almost went with
"evaluate()" and considered "is()".
- I made Predicate an abstract class rather than an interface because I felt
it was cool to be able to create filtered Iterators or views of collections
using the Predicate.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1893 6335cc39-0255-0410-8fd6-9bcaacd3b74c
For observer lists, we do not care if two observers happen to
implement equals() such that they agree to be the same, we care
only if they're the exact same observer.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1891 6335cc39-0255-0410-8fd6-9bcaacd3b74c