Commit Graph

6152 Commits

Author SHA1 Message Date
Michael Bayne 30c8fb162d Updated the POM and modified the Ant build to obtain dependencies from the POM.
That's now the canonical place to list the dependencies, which will make
eventual publishing of Narya to Maven Central easier, and will make using
things like m2eclipse smoother.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6223 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-22 21:23:20 +00:00
Michael Bayne 9d2ca42eac Convert Narya (most of the way) over to a Maven Ant task based build. The
ActionScript bits remain belligerent, but the Java stuff is mostly shipshape.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6222 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-22 21:12:29 +00:00
Dave Hoover 555b865bbf Teach eclipse about jmustache down in our M2_REPO
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6221 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-22 20:48:55 +00:00
Dave Hoover 0e18ec920e Unused import
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6220 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-22 20:48:54 +00:00
Michael Bayne fbfcd9db90 One baby step toward making Narya obtain its depenendies from Maven.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6219 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-22 16:23:15 +00:00
Michael Bayne 4b443fe148 Last night, I read about the Mustache templating library (a derivative of
Google's CTemplate) and got all hot and bothered, because it seemed like it
would be sufficiently powerful to replace Velocity for our Narya templating
needs.

I then sought out a Java implementation and found one, and quickly discovered
that it lacked the right level of awesome for my needs. So I foolishly decided
to write my own, because Mustache seemed simple enough that I could reimplement
it in a few hours.

A few hours later, I had a neat and tidy reimplementation of Mustache and then
set about to converting Narya to using it. Then the fun began.

I discovered that Mustache wants everything in a hash, but sometimes you just
want to iterate over the elements of a list, and print them into the template
whole-hog. So I extended Mustache with the special "this" variable for printing
the whole context instead of pulling values out of it by name.

Then I remembered that Velocity allows you to do a deep dive into objects,
calling methods and calling methods on the return values of those methods.
Velocity even allows you to pass constants as arguments to those methods (true,
strings, integers). Well, I reimplemented the compound keys, so that you can
call foo.bar.baz, but I didn't go so far as to support constant arguments. That
seemed a step too far into complexity land and to be the sort of thing that
Mustache tries to avoid. So with compound keys, I just had to add a few
alternative versions of methods we were already calling, since we only ever
passed true/false as an argument.

Then I realized that Mustache doesn't do any smart trimming of newlines, so if
you have:

{{#stuff}}
blah blah
{{/stuff}}

You get the annoying newline after the open-tag and after the close-tag. So I
modified my implementation to trim newlines in those circumstances, so that
template authors don't have to do a bunch of template-weirding whitespace
jockeying.

Then I discovered that Mustache doesn't support any notion of scope. So when
you're inside a so-called section, the only variables visible are those bound
by that section. The stuff outside the section is totally invisible. Well,
that's not how Velocity works, you can reference things outside your loop
iterations. It seemed no terribly affront to Mustache to make things work that
way as well, so I did that.

Then I discovered a problem with the fact that Mustache implicitly binds the
loop object to the root of the namespace, so if you have {{name}} outside the
loop and then your loop object also contains a {{name}} field, then you can't
see the outside {{name}} anymore because it's shadowed. Tough titties, in this
case, I just changed our code to not shadow the name.

Then I encountered a bunch of uses of $vidx to put a space before all but the
first element of a list. So I added two more special variables -first and -last
which allow you to do just that sort of thing (and more) in a more template
friendly way because you don't need a Turing complete language just to decide
whether or not you need to mind the gap.

Then I encoutered some uses of $vidx directly, where we were using it to assign
constants in invocation service related classes. So I added another special
variable -index which resolves to basically the same thing that $vidx resolves
to (a 1-based counter indicating which element you're on in your list
iteration). I rationalized to myself that if you wanted to automatically number
laundry lists in your templates, having -index would be nice.

Finally, I have Narya's templating stuff producing character-for-character
replicas of what it used to do with Velocity. Well, actually there's one
newline in a place where there didn't used to be one, but I think that newline
makes sense and it was maybe some sort of Velocity bug that caused it not to
exist.

I've tested the gendobj, genservice and genreceiver tasks. I have no tested
whatever uses streamable_as.tmpl, but I'm pretty confident that it will work
exactly as before because I modified hundreds of lines of other templates in
exactly the same ways and they all work just fine.

So the world gets yet another templating library:

http://code.google.com/p/jmustache/


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6218 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-22 06:42:47 +00:00
Charlie Groves c61038277c Go back on looking in the child classpath first; that means the client version of the presents
classes are found before the tools version, and class equality comparisions don't work.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6217 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-22 01:18:48 +00:00
Mark Johnson e96310b43b - Prefer reading from the created classpath instead of the parent classpath
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6216 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-19 23:47:24 +00:00
Charlie Groves 20d97bf26a Mark StreamableArrayList and StreamableHashMap as replaced by their basic Java counterparts. Basic
Map and List types are streamed as fields, which are smaller on the wire.  I'd deprecate them, but
yohoho uses them all over the place.

Handle generating code for StreamableArrayList and StreamableHashMap in actionscript for existing
code.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6215 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-18 21:18:36 +00:00
Dave Hoover 3a25e8a3b9 Update source headers to point to our new home.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6214 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-18 18:01:12 +00:00
Charlie Groves 250e74e339 Move all the fileset and classloading wanging into GenTask
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6213 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-16 23:16:14 +00:00
Charlie Groves 9c945bbacd No need to generate a default constructor; let it be filled in the non-auto section if desired. Don't indent the implements statement if there isn't an extends.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6212 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-16 23:15:44 +00:00
Dave Hoover ce3538c409 Boo, Ray's right; I can't do that.
Not all streamable things are Streamable (e.g. String, Integer)

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6211 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 20:53:21 +00:00
Charlie Groves 88239d8c42 Use Maps.equals, test streaming Integer values in a Map
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6210 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 20:30:03 +00:00
Dave Hoover c675a8297d Update README with modern information
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6209 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 20:16:11 +00:00
Dave Hoover e59135fdd5 Values in StreamableHash[Int]Maps must be Streamable, so let the compiler know.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6208 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 20:16:11 +00:00
Dave Hoover ea58e7a7b7 Whitespace
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6207 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 20:16:09 +00:00
Dave Hoover d17407cfaf Generics
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6206 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 20:16:07 +00:00
Dave Hoover 34dfd3ebd6 Wrong "its"
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6205 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 20:16:06 +00:00
Michael Bayne 9bb2916dc1 Oh boy, the new Velocity needs commons-lang. Whee!
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6204 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 16:30:48 +00:00
Michael Bayne 6acb1c483a More version removal.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6203 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 16:12:02 +00:00
Michael Bayne bc3b6654ca Use the latest Velocity.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6202 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 16:09:51 +00:00
Charlie Groves 13f43728ec Generate streaming code for Map
Is there a reason Map isn't Equalable?  java.util.Map requires an equals implementation, and it has
the same lack of guarantee of its values implementing equals.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6201 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 08:42:39 +00:00
Charlie Groves bcbeb03345 Only two pieces of debugging code slipped past me in that small commit
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6200 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 07:56:13 +00:00
Charlie Groves aad715138c Make writing List fields on Streamables possible from ActionScript again, and fix List reading and
writing in the code generated by GenActionScriptStreamableTask.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6199 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 07:53:38 +00:00
Charlie Groves 377fafae1e Add asunit tests for generated streamables
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6198 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-15 00:42:12 +00:00
Charlie Groves 9e5d4b95fa regenerated
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6197 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-14 23:15:03 +00:00
Charlie Groves 5d48f7726a Add a generated source updating tool and an actionscript streamable generator built with it.
GeneratedSourceMerger merges the latest version of generated source into a previously generated
version a la GenRecordTask SourceFile.  Unlike them, it doesn't have a hardcoded set of sections to
update.  Instead it finds any sections using the // GENERATED <name> START and // GENERATED <name>
END markers in newly generated version and replaces those same sections in the old version.

GenActionScriptStreamableTask creates actionscript Streamable classes from their Java counterparts
like GenActionScriptTask, but unlike GenActionScriptTask it doesn't attempt to parse Java source to
generate actionscript.  It only generates actionscript code to do streaming and leaves any
custom implementation to the user.



git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6196 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-14 22:55:44 +00:00
Michael Bayne 45b0891629 Provisional POM for building (and publishing) Narya via Maven. Nothing to sea
here, keep clam.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6195 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-14 20:24:12 +00:00
Michael Bayne 1471e82f3a Provide a HistoryList mechanism down here in the basic service.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6194 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-14 16:19:17 +00:00
Michael Bayne c431ee00d1 No ant runtime libraries when compiling please.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6193 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-14 16:14:51 +00:00
Michael Bayne 586b29fa09 The ChatDirector requires a MessageManager, so let's promote that to a real
CrowdContext service instead of sneaking it into the ChatDirector's
constructor. That way other CrowdContext users can make use of the
MessageManager as well.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6192 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-14 15:45:06 +00:00
Michael Bayne 706844db08 We need tools.properties in narya-tools.jar as well.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6191 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-14 01:01:49 +00:00
Michael Bayne 6f1188faff Build a narya-tools.jar with just the tools stuff, for projects that already
have Narya and her myriad dependencies in tow, and need to put narya-tools into
their classpath.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6190 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-14 00:41:16 +00:00
Michael Bayne 339c822d3a Let Eclipse know about Narya's gwt-user.jar and gwt-utils dependencies.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6189 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-13 17:04:26 +00:00
Michael Bayne 0007febea3 Oh for fuck's sake. Don't rename Velocity because they do a bunch of pointless
reflection internally to look default implementations by class name. Sigh.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6188 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-13 00:30:19 +00:00
Michael Bayne 3462ee2661 Exception is already Serializable and GWT accepts Serializable in lieu of
IsSerializable. If possible, it would be nice to keep GWT references out of
narya-base (where com.threerings.web ends up).

I'm already dealing with the breakage caused by GWT in narya-distrib, but I'd
rather not have to filter GWT out of narya-base *and* narya-distrib in every
Proguard configuration from here to Gomorrah, if possible.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6187 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-12 18:05:30 +00:00
Michael Bayne f0a9dc8dd7 We must be vigilant about overriding Ant's retarded defaults. In the latest
version of Ant, it issues a warning if you fail to do so. Genius!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6186 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-12 17:44:18 +00:00
Michael Bayne f4af1915b0 Build narya-tools with jarjar so as to hide its included dependencies in the
unfortunate event that someone puts it on a real project classpath.

Modified GenTask to totally hide Velocity from derived classes so that external
libraries can make use of it in their own Ant tasks without inheriting a
Velocity dependency and also becoming booched because Velocity was renamed in
jarjar and won't link against an unrenamed Velocity.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6185 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-12 17:35:41 +00:00
Par Winzell 480893d0b0 No gwt-dev needed, we're not compiling.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6184 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 20:32:42 +00:00
Par Winzell bdff124525 Strings have length, Zell.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6183 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 20:23:24 +00:00
Par Winzell 72d0016963 I guess I have to actually use a Java5 SDK for Narya. How's that whole 'convert to java 6' thing going, yohoho folks?
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6182 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 20:10:34 +00:00
Par Winzell d4ee1a9d4e We don't have GWT until we have gwt-utils, too, I guess.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6181 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 19:59:57 +00:00
Par Winzell f7bd94543f Delete brief experiment.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6180 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 19:29:48 +00:00
Par Winzell e0e47a1a1a Build some GWT bits, if GWT is present.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6179 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 19:22:20 +00:00
Par Winzell d26267c704 GWT frontend and servlet for editing runtime configuration.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6178 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 19:21:48 +00:00
Par Winzell 3069062034 Some basic GWT infrastructure.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6177 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 19:21:24 +00:00
Ray Greenwell 1b30ef96cf Quell enthusiastic logging for an inevitable action.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6176 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-07 17:28:49 +00:00
Andrzej Kapolka ba118de010 Looks like this should just return if it can't get the value, rather than
set the (possibly non-nullable) value to null.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6175 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-05 21:03:09 +00:00
Mike Thomas 26d497861f Fix a bug where the client & server happen to attempt to change location nearly simultaneously.
Rather than ignoring all forced moves from the server, let's instead ignore those which are truly duplicates of our pending move, but merely postpone those which are a separate move until our pending move is complete.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6174 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-10-05 20:54:41 +00:00