Re: [gwt-contrib] About GWT opinion in thoughtworks technology radar july 2011

2011-08-03 Thread Bruce Johnson
When you read opinions like this, you have to interpret the author's
perspective relative to his/her incentives. Thus, GWT consultants will
observe the reasons GWT is really good. Consultants skilled in things other
than GWT will find reasons that their solutions are better. There isn't a
right answer.

More inline below.

On Wed, Aug 3, 2011 at 2:53 AM, Emilio Bravo emilio@gmail.com wrote:

 First, in many ways, JavaScript is more powerful and expressive than
 Java, so we suspect that the generation is going in the wrong
 direction.


It paints a picture, but there are no facts or evidence in the above
statement. Words like powerful and expressive are popular when
discussing these sorts of topics precisely because they're vague enough that
it's hard to argue with them.

You can pick literally any topic and find people eager to take all sides.
The question is how seriously you should take the assertion made by the
author.

Do you trust the author? Why? If so, take the judgment seriously. If you
don't have any particular reason to trust the author relative to others who
have a different conclusion, then ignore the article and judge for yourself
or listen to those with more direct experience using the technology in
question.

Someone's willingness to write down their assertion doesn't make it more
correct. And no tool is right or wrong for every project.

Secondly, it is impossible to hide a complex abstraction difference
 like that from event-driven desktop to stateless-web without leaky
 abstraction headaches eventually popping up


Of course abstractions leak. We knew that when we designed GWT and the
design accounts for that. GWT generally doesn't depend on isolating you from
JS or the DOM except in cases where memory leaks are the inevitable
by-product of not adding widget-like machinery. To put that another way: the
absence of GWT's abstractions that leak is UI code that very likely has
memory leaks. That there are many GWT libraries that interop with
handwritten JS is among the evidence that the above statement
seems under-informed and dismissively definitive (e.g. impossible).

Third, it suffers from the same shortcomings of many elaborate
 frameworks, where building simple, aligned applications is quick and
 easy, building more sophisticated but not supported functionality is
 possible but difficult, and building the level of sophistication
 required by any non-trivial application becomes either impossible or
 so difficult it isn’t reasonable.


This one is almost funny. GWT usually gets beat up for the precise opposite:
it's good for big apps but not easy enough for small ones. Among the tens of
thousands of apps that overcame the above-asserted abstraction headaches
and managed to do something sophisticated include Angry Birds, AdWords
(with hundreds of thousands of lines of browser code), Lombardi Blueprint
(acquired by IBM), DimDim (acquired by Salesforce.com), and, in the last
couple of weeks, Google Offers, Hotel Finder, and Web Fonts.

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] delayTestFinish allowing the next test to begin before the previous one finishes (2.1.0.m3)?

2010-10-01 Thread Bruce Johnson
[+Scott and Kelly from Google]

On Thu, Sep 30, 2010 at 4:54 PM, Damon Lundin damon.lun...@gmail.comwrote:

 We are trying to upgrade from 2.0.4 to 2.1.0.m3 because of some bugs
 in 2.0.4 but in doing so our GWT test cases have begun failing and I
 have determined it's because the next test is beginning before the
 previous one is complete and they are messing each other up.  I know
 that delayTestFinish is meant to allow for tests to make use of async
 calls and it's been working for us but now it's not.

 We have a number of tests that roughly look like this:

 public void test03 {
  delayTestFinish(12);
  rpcService.someServerCall(new AsyncCallback() {
public void onSuccess() {
  // Do some stuff
  DeferredCommand.addCommand(new Command() {
public void execute() {
  // More stuff
  finishTest();
}
  }
}
  }
 }

 public void test04 {
  delayTestFinish(12);
  ...
 }

 Our code actually uses DeferredCommands in a long chain of calls but
 in short, test04 begins executing before we call finishTest() in the
 previous test and I don't think that's supposed to happen.

 I could further debug this if someone could explain to me what
 implemented in the translatable version of this class means and how
 I would debug this translatable version.  Any advice on how to
 proceed?

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] RR: allow CheckBox to accept null?

2010-08-26 Thread Bruce Johnson
Fwiw, I don't actually care. It just seemed like something that needed
some devil's advocacy.

On Thursday, August 26, 2010, Ray Ryan rj...@google.com wrote:
 Andrew, how would this be?
     CheckBox cb = new CheckBox();

     cb.setValue(null);
     assertFalse(cb.getValue());
 rjrjr

 On Thu, Aug 26, 2010 at 5:57 PM, Andrew Pietsch andrew.piet...@gmail.com 
 wrote:
 I personally would like to see it support null, not because null is a
 valid UI state but just to be consistent with all the other widgets.
 As far as pectin is concerned the bindings always created before the
 real value arrives so wigets are aften set to null. I've tried to
 avoid wiget specific logic in the core bindings as much as possible
 (it's a slippery slope to ugliness) and CheckBox is the odd one out.
 As a somewhat silly thought would a marker interface be an option i.e.
 perhaps something like `CheckBox implements HasValue, BarfsOnNull` so
 there's at least a mechanism to find out?

 On Aug 26, 6:00 pm, Johan Rydberg johan.rydb...@edgeware.tv wrote:
 On 8/25/10 6:16 PM, Ray Ryan wrote: The use case is dealing with boolean 
 values that may benull, and
  really a check box is just the wrong UI there. Withdrawn.

 I know of at least one data binding framework, gwt-pectin, that signals
 no value usingnull. As a work-around gwt-pectin has it's ownCheckBox
 impl that acceptsnull.

 Take this example; We have a master-detail interface.  aCheckBoxhas
 been bound to selectedElement.male.  If there is not a selected
 element, a no value signal should be sent down through data binding,
 not False. Right?

 But then again, there's really no way to communicate something like a
 placeholder value for acheckbox.  But I still thinkCheckBoxshouldacceptnull, 
 for the interface to be consistent.

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors





 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors


Re: [gwt-contrib] RR: allow CheckBox to accept null?

2010-08-25 Thread Bruce Johnson
Can you provide a little more context for why it should work this way?

On Tue, Aug 24, 2010 at 6:49 PM, Ray Ryan rj...@google.com wrote:

 When we made the CheckBox widget implement HasValue, we had it throw an
 illegal argument exception when setValue() is called with null.

 I think we goofed.

 Can we get away with relaxing that? I'd like this to be the case:

 CheckBox cb = new CheckBox();
 cb.setValue(null);
 assertNull(cb.getValue());


 rjrjr

  --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] RR: allow CheckBox to accept null?

2010-08-25 Thread Bruce Johnson
Glad I looked at it funny, then.

Micro-design reviews ftw.

On Wed, Aug 25, 2010 at 12:16 PM, Ray Ryan rj...@google.com wrote:

 Yeah, thinking about it by the light of day I think it's the wrong
 direction.

 The use case is dealing with boolean values that may be null, and really a
 check box is just the wrong UI there. Withdrawn.


 On Wed, Aug 25, 2010 at 7:01 AM, Bruce Johnson br...@google.com wrote:

 Can you provide a little more context for why it should work this way?

 On Tue, Aug 24, 2010 at 6:49 PM, Ray Ryan rj...@google.com wrote:

 When we made the CheckBox widget implement HasValue, we had it throw an
 illegal argument exception when setValue() is called with null.

 I think we goofed.

 Can we get away with relaxing that? I'd like this to be the case:

 CheckBox cb = new CheckBox();
 cb.setValue(null);
 assertNull(cb.getValue());


 rjrjr

  --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


  --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


  --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Re: Introducing the Abstractizer compiler optimization (issue 4893) (issue609801)

2010-06-14 Thread Bruce Johnson
50%? That would be astonishing, but I must admit I'm skeptical :-)

Thomas, have you tried it on a bigger app? Something like Showcase or the
Expense Report app?

On Mon, Jun 14, 2010 at 4:05 PM, Lex Spoon sp...@google.com wrote:

 It's a fun idea! Methods that are only there for their type signatures
 could have their bodies removed.

 Ideally, ControlFlowAnalyzer would be able to identify such methods, and
 Pruner would remove their bodies. With that arrangement, the CFA and the
 method abstracting would mutually benefit each other. It would also lead to
 better code splitting.

 ControlFlowAnalyzer already has a notion of instantiable types. I believe
 it needs to be improved, though, to be effective at abstracting methods. To
 test that theory, set a break point in Pruner.execImpl right before it calls
 setInstantiableTypes. At that point, the question is whether the
 abstractable methods are marked as being called or not. I believe they will
 be marked as callable.

 To improve that, a new set could be added to hold the classes that are
 targets of new. Then, when ControlFlowAnalyzer visits a virtual method
 call, it would have the information it needs to skip over the abstractable
 methods.

 I am still mulling over the general idea, but that's my initial reaction.
 If push comes to shove, we could certainly add another whole-tree walk like
 in this patch, and it would be an improvement. It would make a bigger
 improvement, though, if we can factor it into an existing optimization.

 Lex

  --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Re: Array implementation for Lightweight Collections. Pure Java implementation only. (issue232801)

2010-03-25 Thread Bruce Johnson
On 3/25/10, Daniel Rice (דניאל רייס) r...@google.com wrote:
   I disagree with point (1).  The APIs are not the same, just almost the
 same.  IMHO the builder should have a freeze method while the MutableArray
 should not.  This makes it clear that freezing is a build-time process.  It
 seems to me that this could be done with a little interface inheritance and
 probably wouldn't impact generated code size at all.  Thoughts?

(How exactly would the builder and mutable array classes differ? All
of the points below rest on there not being a meaningful difference.)

I agree it's a little weird not to have a builder, but then again, it
would be weird to have a builder with freeze() instead of create()
that can be called multiple times. To me, it's worse to purport to
follow a pattern people assume they understand intuitively (i.e.
Builder in this case) but then have different functionality (freeze
vs. create) than to simply say, It's unusual, but easy to learn and
maximally efficient.

And there's also an argument to be made that fewer classes are easier,
all else being equal. Which would favor not having a builder that is
quite redundant to mutable array.

-- Bruce

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

To unsubscribe from this group, send email to 
google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
email with the words REMOVE ME as the subject.


[gwt-contrib] Re: Array implementation for Lightweight Collections. Pure Java implementation only. (issue232801)

2010-03-25 Thread Bruce Johnson
On Thursday, March 25, 2010, Freeland Abbott fabb...@google.com wrote:
 Am I right to think that the problem with builder.create() is that it implies 
 a defensive copy, to allow you to do builder.add() afterwards, and we want to 
 avoid that?  (If not, then what is the problem?)

Yes, or to avoid having people call build() multiple times. Using a
builder means at least two objects (builder + product(s)) for any
array creation.

 The solution to that could indeed be a more clever builder: at create() time, 
 we return the existing array as an ImmutableArray, and let go of it in the 
 builder, moving it to a previousList filed or somesuch.  If the user does 
 indeed later reuse the builder with some add() (or remove() or whatever), we 
 do the defensive copy then, lazily.  Presumably two back-to-back create() 
 calls could just return the same list, since it's immutable anyway.

These sorts of tricks usually bite us in both size and speed. Also, it
doesn't avoid the multiple allocations to get just one array
problem.



 I think I like that, personally.  Thoughts?



 On Thu, Mar 25, 2010 at 2:05 PM, Daniel Rice (דניאל רייס) r...@google.com 
 wrote:
   I have the feeling that if we pushed on the API a bit we could satisfy all 
 the constraints without having to do anything weird.  The only downside would 
 be somewhat more interfaces to understand.  For example, the builder could 
 have create() and createFrozen() methods -- a clever builder implementation 
 could still manage to share state between created instances in some cases.




 Dan

 On Thu, Mar 25, 2010 at 1:58 PM, Bruce Johnson br...@google.com wrote:


 On 3/25/10, Daniel Rice (דניאל רייס) r...@google.com wrote:
   I disagree with point (1).  The APIs are not the same, just almost the
 same.  IMHO the builder should have a freeze method while the MutableArray
 should not.  This makes it clear that freezing is a build-time process.  It
 seems to me that this could be done with a little interface inheritance and
 probably wouldn't impact generated code size at all.  Thoughts?

 (How exactly would the builder and mutable array classes differ? All
 of the points below rest on there not being a meaningful difference.)

 I agree it's a little weird not to have a builder, but then again, it
 would be weird to have a builder with freeze() instead of create()
 that can be called multiple times. To me, it's worse to purport to
 follow a pattern people assume they understand intuitively (i.e.
 Builder in this case) but then have different functionality (freeze
 vs. create) than to simply say, It's unusual, but easy to learn and
 maximally efficient.

 And there's also an argument to be made that fewer classes are easier,
 all else being equal. Which would favor not having a builder that is
 quite redundant to mutable array.

 -- Bruce

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

 To unsubscribe from this group, send email to 
 google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
 email with the words REMOVE ME as the subject.







 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

 To unsubscribe from this group, send email to 
 google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
 email with the words REMOVE ME as the subject.


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

To unsubscribe from this group, send email to 
google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
email with the words REMOVE ME as the subject.


[gwt-contrib] Re: Array implementation for Lightweight Collections. Pure Java implementation only. (issue232801)

2010-03-25 Thread Bruce Johnson
What John said. JSO cross-casts allow this.

On Thursday, March 25, 2010, John Tamplin j...@google.com wrote:
 On Thu, Mar 25, 2010 at 6:07 PM, Rodrigo Chandia rchan...@google.com wrote:


 (Sorry for the spam, Bruce. I forgot to press reply to all.)

 I seem to be missing some piece from the puzzle: in which way does
 freezing a MutableArray prevent the allocation of an ImmutableArray
 object?

 // This creates a new MutableArray instance
 MutableArray ma = CollectionsFactory.createMutableArray();
 ma.add(x);
 ma.add(y);
 ...
 // But freezing will also instantiate another object, right?
 ImmutableArray ia = ma.freeze();

 Internally, freeze will perform something like:

 return new ImmutableArrayImplE(elem);

 Or is it that in prod mode we can do special tricks to avoid the creation?
 In Javascript, you simply cast MutableArray to ImmutableArrayImpl and return 
 the same object.


 --
 John A. Tamplin
 Software Engineer (GWT), Google


 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

 To unsubscribe from this group, send email to 
 google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
 email with the words REMOVE ME as the subject.


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

To unsubscribe from this group, send email to 
google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
email with the words REMOVE ME as the subject.


[gwt-contrib] Re: Array implementation for Lightweight Collections. Pure Java implementation only. (issue232801)

2010-03-22 Thread Bruce Johnson
Here's how freeze() got introduced.

You need to be able to have ImmutableArray without any mutators, and you
need to be able to create them, thus you need a builder. A very frequent
pattern will be to build up an array with a builder (the hypothetical
ImmutableArrayBuilder) and then want to get an ImmutableArray from it. So,
you'd often write this:

== BEGIN SNIPPET ==
ImmutableArrayBuilder b = new ImmutableArrayBuilder();
b.add(...);
...
ImmutableArray ia = b.build();

// throw away b
== END SNIPPET ==

A few observations about the above inevitable code snippet:
1) ImmutableArrayBuilder would have an API that's almost the same as
MutableArray, so why make it a separate class?
2) The builder pattern typically allows multiple objects to be built from
the same builder, but it's easy to imagine that typical uses won't actually
want to reuse builder instances, thus we're paying for twice the number of
object allocations (1 builder + 1 product) for the common case.

Why solve it with freeze()? This design makes MutableArray into a builder of
ImmutableArrays that is extremely efficient (since it will be implemented as
return this and will use JSO cross-casting), thus avoiding the wasteful
builder allocation problem. Secondly, the freeze() semantics don't open up
the notion that a single MutableArray could be used as a reusable factory --
unlike build(), freeze() makes it obvious that you can't mess with the
builder anymore.

Hope that makes sense. As Freeland said, this design is based on the idea of
maximum performance, minimum size, and a set of types that allows
applications to avoid expensive allocations and copying. We need a rich
enough set of types that, whatever the circumstances, you're never more than
cheap (hopefully O(1)-time) operation away from having an object that
satisfies the need. For example, we want to encourage handing out aliases to
private fields (making it safe to do so by providing a read-only handle in
the form of the root type).

On Mon, Mar 22, 2010 at 2:06 PM, Ray Ryan rj...@google.com wrote:

 Can you outline a use case? I don't get it. My argument isn't with
 isFrozen, it's with the freezing feature per se. I can't see a reasonable
 use for it.


 On Mon, Mar 22, 2010 at 11:03 AM, Rodrigo Chandia rchan...@google.comwrote:

 isFrozen allows assertions on the status of a mutable collection. During
 normal use (assertions disabled), there should be no need to call isFrozen.
 Moreover, using isFrozen outside of an assertion, or while assertions are
 disabled, is not guaranteed to work at all. The intention is to avoid having
 to pay a runtime penalty and discourage defensive programming.

 Related to the review, it was not my intention to introduce isFrozen just
 yet (but it slipped through, sorry). isFrozen is a construct that only makes
 sense when when Immutable classes are introduced, along with assertions and
 tests relevant to immutability. At this point I wanted to concentrate on the
 Mutable and the parent Read-only classes.

 Is isFrozen still a bad idea when used for assertions only?


 2010/3/22 rj...@google.com

 Can someone explain why isFrozen is a good idea? It sounds really,
 really bad to me.


 http://gwt-code-reviews.appspot.com/232801/show





-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

To unsubscribe from this group, send email to 
google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
email with the words REMOVE ME as the subject.


Re: [gwt-contrib] Re: Array implementation for Lightweight Collections. Pure Java implementation only. (issue232801)

2010-03-22 Thread Bruce Johnson
@John: I totally agree that's a risk, but then again, the situation you
describe would arguably be a bug anyway -- or at least I'd call it
under-specified. Indeed, I hope that in people's paranoia to avoid those
situations, that they are more thoughtful about the types they hand around
in their API, using the exactly the right semantics for the situation at
hand.

And, of course, there are always tradeoffs in design. The design of these
classes to enable people who are coding things correctly and clearly to not
suffer one iota of overhead for which they don't get commensurate value.
That's same reasoning is why it will use assertions instead of exceptions.

On Mon, Mar 22, 2010 at 3:05 PM, John Tamplin j...@google.com wrote:

 On Mon, Mar 22, 2010 at 2:19 PM, Freeland Abbott fabb...@google.comwrote:

 The claim is that you make an ImmutableFoo by freezing a MutableFoo,
 after which the invariant is that no client will change that collection.  It
 isn't a copy, it's a freeze of the thing, so the flag blocks you from
 changing via the original MutableFoo handle.

 Contrast with vanilla Foo, which doesn't have an API for you to change it,
 but is allowed to change by some other bit (e.g. I have a MutableFoo, and
 return to you casting to Foo... I can change it, you can't).

 If you want a copy, copy it yourself (and pay the copy cost explicitly,
 then freeze one, and you can go on changing the other).  Bruce wants to run
 pretty close to the wire, so if you mess it up assertions will tell you
 about the error, but optimized it doesn't, and YMMV w.r.t. the effects.
  Since devmode is always asssertions-on, the expectation is you'd find the
 error soon.


 There was a long discussion about this very point on the original wave of
 the design.

 The problem I have with it is a client may have been given a MutableFoo and
 then at some point later that same object gets frozen and it is no longer
 mutable, and MutableFoo operations will fail on that object without any
 notification of the client that got the MutableFoo that its contract had
 changed.

 You can work around it with conventions, but it seems

 --
 John A. Tamplin
 Software Engineer (GWT), Google


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

To unsubscribe from this group, send email to 
google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
email with the words REMOVE ME as the subject.


Re: [gwt-contrib] Re: Array implementation for Lightweight Collections. Pure Java implementation only. (issue232801)

2010-03-22 Thread Bruce Johnson
I think Rodrigo's point already subsumed what I'm about to say, but there
are three cases here:

1) A read-only reference to a collection that may or may not be mutable by
someone else. This is the purpose of the root type Array, which has not
mutators but doesn't make a guarantee about whether the referenced
collection is mutable or immutable.

2) A reference to a read-only collection whose contents are guaranteed to in
fact be immutable.

3) A normal, mutable array that is read/write.

@Ray: The idea of an immutableView() method doesn't seem to quite handle
these use cases, because either the returned object is a separate object
with a runtime wrapper (the equivalent of unmodifiableList()) or it's a
read-only interface to a collection that isn't really guaranteed to be
immutable, merely read-only. Also note that MutableArray extends the
read-only Array class, and so every MutableArray can be implicitly returned
as a read-only alias anywhere you want, which is even easier than
immutableView().

I would guess it would be fairly typical to use mostly MutableArray and
Array, but ImmutableArray has a real role, too. Imagine a MyPanel that takes
a list of Widgets in its constructor. You could declare the constructor like
this:

   public MyPanel(ImmutableArrayWidget widgets) { ... }

That's useful because you can code the class with full knowledge that the
set of widgets won't be changing out from under you from the calling code --
you can just directly assign that param to a field without making a copy.
Had the constructor been:

   public MyPanel(ListWidget widgets) { ... }

you could never be sure and would probably feel compelled to make a
defensive copy.

I'm going to guess this is how it would play out:

1) Constructors will often take ImmutableArray because it's nice to assign
ctor params directly to fields and know for a fact there's no reason to make
defensive copies.

2) Fields will be declared as MutableArray, and in getters the return type
will be Array, thus allowing getters to safely return references directly,
happy in the knowledge that there is neither a need to make a defensive
outgoing copy nor a risk that the caller can mutate your private field's
contents.

3) Library methods will take the least-specific type that can suffice for
the respective algorithm. For example, binarySearch(), find(), forEach(),
etc. would take a param of type Array, thus allowing either mutable or
immutable arrays to use the method. Then again, sort() would explicitly take
a MutableArray.

And of course, there is no desire to design all this in a vacuum -- and we
shouldn't argue against it in a vacuum either. This is a starting point
strawman, so I'd propose we use this design as a stake in the ground and
then see how it would play it if we retrofitted it into real code, both app
code and library code. Then we'll really get a feel for how useful vs.
confusing it is, and most importantly, we can get metrics on the speed and
size.



On Mon, Mar 22, 2010 at 6:34 PM, Rodrigo Chandia rchan...@google.comwrote:

 Immutability is a stronger assertion than read-only access. If I receive a
 read-only object I better make sure to handle the case of the data being
 changed by others; be it by tacit agreement, using other channels, locking
 or simply ignoring the issue. Immutability guarantees the data is stable and
 unchanging. The agreement is explicit. I will be able to read it to my
 heart's content without worry.

 Granted, being this a simple implementation it has some inconveniences:

 1. The Immutability is achieved by freezing the original Mutable
 container while it may be useful to keep working with the original container
 instead.
 2. The receiver of a MutableArray may find later that someone called freeze
 on the object causing an error.

 This is largely a matter of it being a lightweight implementation. There is
 no contract forcing the mutable view to be tied to the original mutable
 container. A more sophisticated implementation could copy the container,
 implement copy-on-write semantics, or any number of alternative
 implementations. Still the meaning of an immutable collection implies the
 contents will not change, while a read-only view makes no such promise.

 2010/3/22 Ray Ryan rj...@google.com

 My argument is that one is necessary and sufficient. Two is kind of
 pointless if you have achieved one, and maybe even counterproductive.


 On Mon, Mar 22, 2010 at 2:32 PM, Joel Webber j...@google.com wrote:

 I think we're talking about two different things here. Rodrigo's (valid)
 point is that implementing immutability sanely early on is a good idea. And
 this implementation is pretty much analogous to the one you describe from
 Cocoa.

 The question at hand is whether it makes sense to get an immutable
 collection from a mutable one, with no copies. There are two ways to do
 this:
 1. Create an immutable view of a mutable list, but with no guarantees
 that the list won't be mutated by the original owner 

Re: [gwt-contrib] Array implementation for Lightweight Collections. Pure Java implementation only.

2010-03-19 Thread Bruce Johnson
re: package...consider skipping the client convention because it's
meant to be used on the server too. that new form of target-less
naming is part of the design experiment I hope this work can include.

On Friday, March 19, 2010, Rodrigo Chandia rchan...@google.com wrote:
 Sure!

 2010/3/19 Ray Ryan rj...@google.com


 I think bikeshed/{src,test}/com/google/gwt/collections/client/ is just right.
 Be warned, btw, that we have no ant test target in the build.xml there yet. 
 Patches welcome ;-)



 On Fri, Mar 19, 2010 at 12:15 PM, Rodrigo Chandia rchan...@google.com wrote:



 You just told me right in time (talking to myself: how was incantation to 
 revert the last git commit?)
 Just to make sure. The classes should go into:
 bikeshed/src/com/google/gwt/collections/client/




 bikeshed/test/com/google/gwt/collections/client/
 Or would it be better to do a new project under bikeshed/collections?
 2010/3/19 Ray Ryan rj...@google.com



 Great. When you move them to trunk/bikeshed, please don't put them under the 
 com.google.gwt.bikeshed package. We've concluded that was a mistake and will 
 be rejiggering it slightly. Your stuff should stay in its real packages.






 On Fri, Mar 19, 2010 at 9:57 AM, Rodrigo Chandia rchan...@google.com wrote:






 Yes. I like your idea. I'll move the development to bikeshed so nobody thinks 
 this is ready for general consumption. Once the classes are in a good 
 enough state we will migrate (move) things into GWT proper.








 Afterwards, integration of these classes into GWT (aka using them for 
 interesting things) will be done using a branch as some changes might be 
 somewhat intrusive.
 --







 Rodrigo

 El 19 de marzo de 2010 11:51, Miguel Méndez mmen...@google.com escribió:








 I'm not advocating that you save up for one large patch at the end.  You 
 should have the code reviewed in increments as you are planning on doing.  
 All I'm suggesting is that the code not land in trunk/user/... until is 
 ready.  A real branch or bikeshed would be a better place.









 On Thu, Mar 18, 2010 at 4:44 PM, Rodrigo Chandia rchan...@google.com wrote:

 Sure, discussion and comments are welcome.

 I am developing all this in a branch. The idea is to keep reviewing the 
 changes until we are all satisfied with it. I just thought it made more sense 
 to publish small changes rather than posting a huge patch for review at the 
 end. I can do either or something in between, but I tend to lean towards the 
 incremental approach.












 El 18 de marzo de 2010 14:40, Miguel Méndez mmen...@google.com escribió:











 Not sure if this has been discussed already, but you should consider 
 developing these in a branch until the landing plan for the changes is clear.

 On Thu, Mar 18, 2010 at 9:50 AM,  rchan...@google.com wrote:


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

To unsubscribe from this group, send email to 
google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
email with the words REMOVE ME as the subject.


Re: [gwt-contrib] Array implementation for Lightweight Collections. Pure Java implementation only.

2010-03-19 Thread Bruce Johnson
@John: I was thinking about actually not even designating the package as
shared -- instead just make it a regular-looking Java package. As an
experiment.

On Fri, Mar 19, 2010 at 4:23 PM, John Tamplin j...@google.com wrote:

 On Fri, Mar 19, 2010 at 4:21 PM, Rodrigo Chandia rchan...@google.comwrote:

 I guess we could use a supersource trick to swap in the JS-optimized ones


 Correct, see RegExp for an example of how this is done.

 --
 John A. Tamplin
 Software Engineer (GWT), Google

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

 To unsubscribe from this group, send email to
 google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to
 this email with the words REMOVE ME as the subject.


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

To unsubscribe from this group, send email to 
google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this 
email with the words REMOVE ME as the subject.


Re: [gwt-contrib] Re: supporting java.io.InputStream/Reader in GWT's JRE

2010-03-09 Thread Bruce Johnson
On Tue, Mar 9, 2010 at 11:29 AM, Andi Mullaraj andimulla...@gmail.comwrote:

  Also, my coworkers and I are wondering if GWT is single.?

 I am not an English native (so I might have read smth you didn't mean :)),
 but this is very funny. I love her too.


ha ha -- i'm totally stealing that joke.

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] RFC : Soft permutations for the GWT compiler

2010-03-09 Thread Bruce Johnson
Since module-mutator amounts to an API change (and sounds pretty weird
from a distance), please update the (nice) design doc and get unanimous
consent from the SDK team (after getting contributor feedback from the group
here).

On Tue, Mar 9, 2010 at 3:31 PM, BobV b...@google.com wrote:

 Here's what John and I worked out over IM to get the existing runtime
 locales support migrated to soft permutations:

  - The existing locale property continues to work as it currently does.
  - The runtime.locales configuration property is eliminated in favor
 of a runtimeLocale deferred-binding property.
  - The runtimeLocale property is defined and collapsed by a
 ModuleDefMutator which also defines additional rebind rules based on
 the defined locale values.
- One or more ModuleDefMutators are installed by a module-mutator
 class=Foo / which are called before ModuleDef.normalize()
  - The SelectionProperty interface gains a getCollapsedValues() which
 gives the values that are equivalent to the value returned by
 getCurrentValue().
- This allows the runtime performance of the Generators to be optimized.
  - The locale generators are simplified, removing the runtime locale
 factory and instead relying on the soft rebind rules created by the
 ModuleDefMutator.

 This will increase the size of the permutation-selection matrix, but
 this could be mitigated by using property-value extensions.  In the
 same way that es_AR extends es, we might have chrome extends
 safari, iphone extends safari.  The value extension work is
 separate and orthogonal, but plays nicely with the two techniques in

 http://code.google.com/p/google-web-toolkit/wiki/ControllingPermutationExplosion
 .

 Thoughts?

 --
 Bob Vawter
 Google Web Toolkit Team

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] RFC : Soft permutations for the GWT compiler

2010-03-09 Thread Bruce Johnson
Thanks for the explanation. Would be really useful to add to the design doc
with enough formatting to make it easy to understand. It just seems like a
very powerful feature that could interact in very hard-to-understand ways
with various build systems, IDEs, etc. So it would need a lot of vetting.

On Tue, Mar 9, 2010 at 3:48 PM, John Tamplin j...@google.com wrote:

 On Tue, Mar 9, 2010 at 3:31 PM, BobV b...@google.com wrote:

  - The runtimeLocale property is defined and collapsed by a
 ModuleDefMutator which also defines additional rebind rules based on
 the defined locale values.
- One or more ModuleDefMutators are installed by a module-mutator
 class=Foo / which are called before ModuleDef.normalize()
  - The SelectionProperty interface gains a getCollapsedValues() which
 gives the values that are equivalent to the value returned by
 getCurrentValue().
- This allows the runtime performance of the Generators to be
 optimized.
  - The locale generators are simplified, removing the runtime locale
 factory and instead relying on the soft rebind rules created by the
 ModuleDefMutator.


 To clarify the need for ModuleDefMutator -- the way runtime locales work
 currently is that you just define the locales you want to be compile-time
 properties, say en, es, and es_419 (Latin American Spanish) and
 inherit CldrLocales.  The runtime locales will automatically pickup every
 locale that inherits from the current compile-time locale, for example
 picking up es_AR, es_CO, es_MX, etc for the es_419 permutations.  If I later
 added an es_AR locale value (which I might do if I needed a separate
 translation for Argentina), then nothing else has to be be changed -- es_AR
 will no longer be picked up via the es_419 permutation.  Having to specify
 the set of locales and inheritance/aliases between them (which may change
 with each CLDR release) seems like a real pain for a developer, so the idea
 is to allow code to generate the proper collapse-property entries given the
 set of locale values and the inheritance hierarchy among locales.

 --
 John A. Tamplin
 Software Engineer (GWT), Google

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] [google-web-toolkit] r7690 committed - Gflow framework with some local CFG-based optimizations....

2010-03-09 Thread Bruce Johnson
very exciting! nice work.

On Tue, Mar 9, 2010 at 7:20 PM, Scott Blum sco...@google.com wrote:

 w00t!  That's a lot of work that just landed!

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Re: CSS Selector Engine

2010-02-09 Thread Bruce Johnson
And if we can get GwtQuery to the point where a lot of people really like
it, I think we'd seriously consider rolling it into GWT proper.

On Tue, Feb 9, 2010 at 11:34 PM, Ray Cromwell cromwell...@gmail.com wrote:

 GwtQuery was developed before Gwt 2.0 and it's been a while since it's
 been updated, but I believe it always was the intent for it to be a
 'proving ground' for bringing CSS selectors and jQuery like
 functionality into GWT core. Besides GWT 2.0 and/or IE8, let me know
 any issues that are most important to you. Perhaps I can grant those
 interested in helping comitter access.

 -Ray

 On Tue, Feb 9, 2010 at 8:12 PM, jarrod jarrod.carl...@gmail.com wrote:
  Yes, I am quite familiar with the project and have tried using it
  several times. Unfortunately, it does not work very well with GWT 2.0,
  does not support IE8, and appears to be dead as far as code
  maintenance. I certainly wish that weren't the case, but given the
  outstanding issues and lack of any code commits... what can you do?
 
 
 http://code.google.com/p/gwtquery/issues/list?can=1q=colspec=ID+Type+Status+Priority+Milestone+Owner+Summarycells=tiles
 
 
 
  On Feb 9, 10:26 pm, John Tamplin j...@google.com wrote:
  On Tue, Feb 9, 2010 at 9:51 PM, jarrod jarrod.carl...@gmail.com
 wrote:
   I have to believe this topic has been broached before, but why does
   GWT not contain any kind of CSS selector engine?
 
   More and more I am using GWT to build JavaScript API tools for this
   that or the other, and often this means integration with non-GWT code
   (read: hand-written HTML, CSS and JavaScript).
 
   Tool kits like JQuery and Dojo provide great helper methods for
   manipulating the DOM via CSS selectors - a feature that is distinctly
   absent from GWT. And yet, because of the vast differences in browser
   support for various CSS selector methods (and CSS support itself), it
   seems like a perfect fit for GWT, given the deferred binding
   capabilities the compiler offers.
 
   I do not believe GWT needs to support all the fancy helper shortcut
   methods that other toolkits provide. Most of the extra features like
   animation already have reasonable equivalents in GWT, and JQuery's
   method chaining is just a hard-to-read way of minifying your code -
   something GWT also already does. :-)
 
   Probably my favorite CSS engine right now is Sizzle JS (http://
   sizzlejs.com/) and I can't imagine it would be hard to write GWT
   bindings for this library (it has three public methods in the API!).
   In fact, if I can't find them with a quick Google search, maybe I'll
   start a new project to do so.
 
   The bindings would be a good start, but this is definitely a feature
   I'd like to see get first-class support in GWT.
 
  Have you seenhttp://code.google.com/p/gwtquery/wiki/GettingStarted?
 
  --
  John A. Tamplin
  Software Engineer (GWT), Google
 
  --
  http://groups.google.com/group/Google-Web-Toolkit-Contributors

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Re: r7517 committed - Adding RegExp to public GWT (native version, pure Java version, tests)

2010-02-02 Thread Bruce Johnson
On Tue, Feb 2, 2010 at 11:43 AM, Paul Robinson ukcue...@gmail.com wrote:

 [...] I, and maybe quite a few others here, don't have access to Wave.


We can probably do something about that. I'll start another thread where
people who don't have Wave access yet can indicate interest in signing up.

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

[gwt-contrib] Interest in Wave for design docs?

2010-02-02 Thread Bruce Johnson
Hi folks,

There has been some discussion about having design discussions in Wave, but
maybe not everybody has access yet.

Disclaimer: I can't promise the rate at which everyone will get invites, but
as GWT contributors, I'll happily argue that you should be early in the
queue.

Reply to this thread if you'd like to get an invitation.

-- Bruce

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Questions on JsArray*

2010-02-02 Thread Bruce Johnson
@John T: Are you saying we wouldn't want those methods on JsArray classes,
though? Seems like that's an appropriate place to put them. People don't
usually subclass containers like that (do they?).

On Tue, Feb 2, 2010 at 2:50 PM, Tom Schindl tomson...@gmail.com wrote:

 On Tue, Feb 2, 2010 at 8:19 PM, John Tamplin j...@google.com wrote:
  On Tue, Feb 2, 2010 at 2:16 PM, Tom tomson...@gmail.com wrote:
 
  I have some questions and proposals around the JsArray-classes because
  they are handy when working with JSNI but I believe they could be
  improved a bit.
 
  a) Why are not all native methods provided through the wrapper.
 
  One problem is that given how JSOs work, using a name on a parent class
  means no subclass can have a method of that name.  Thus, you want to be
 very
  careful about adding methods to a JSO class that is intended to be
  subclassed.
  A reasonable option would be to add a final subclass which does have
 those
  methods, and you can freely cast any JSO to that class when you need to
 use
  those methods.

 Thanks for your response. You are right. I didn't thought about the
 fact that someone could have already subclassed this base
 implementation and would be broken with such a changes.

 Anyways I'd volunteer to implement the needed classes if you decide
 that this is a good idea.

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Re: r7517 committed - Adding RegExp to public GWT (native version, pure Java version, tests)

2010-02-01 Thread Bruce Johnson
On Mon, Feb 1, 2010 at 4:05 PM, Sami Jaber sami.ja...@gmail.com wrote:

 I'm agree with Thomas. RegExp integration should have been discussed in the
 list. It is landing into the trunk from nowhere for us...


I mentioned a couple of weeks ago that we were switching to a different
version control system -- and this is the first example of the sorts of
hiccups we thought could happen. A Googler, a GWT user but who is not on the
GWT team proper, has been working on this as a potential contribution, and
submitted this patch for a code review. We accidentally approved it for
commit rather than just giving some positive feedback on the code review.
Thus, a work in progress got dumped on svn.

We're still working out what sort of approval process makes sense for these
sorts of contributions, but for a large change like this involving new API
surface area, we definitely do want and need open, public discussion.


 Since the 2.0 release, I feel that there is less interaction with the
 contrib list (btw what have been decided for the roadmap ?) and what we are
 supposed to see in the coming releases.


I think more than anything, you're seeing the effects of a lot of us being
tired from the GWT 2.0 push. An updated roadmap is still forthcoming, but I
can summarize a lot of the ad hoc design discussions starting to take place
like this: we need to fill a lot of gaps in the libraries, especially
widgets and app framewpork sorts of library code. GWT is powerful at
present, but it doesn't make it especially easy to create traditional
business apps quickly. We'd like to change that.


 We can understand that you prefer to use internal waves/lists but please
 let's not forget the openess nature of GWT that contribute to make this
 framework so popular


It's true that Wave is fantastic for design docs, and it's hard not to want
to use that instead of email. Maybe the right answer is to get everyone on
this list to move to Wave :-)

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] GWT Incubator Status Update and Schedule

2010-01-21 Thread Bruce Johnson
Nightly or perhaps less frequent stable snapshot builds is something
we'd like to do for sure. Not sure about exactly when, but it's good
to know there would be an audience to justify looking into it a bit.

On Thursday, January 21, 2010, Arthur Kalmenson arthur.k...@gmail.com wrote:
 Hmm, a nightly build sounds like a cool idea, I wouldn't mind seeing that as 
 well.
 --
 Arthur Kalmenson


 On Thu, Jan 21, 2010 at 3:28 AM, David david.no...@gmail.com wrote:


 Hi,

 It would be nice that the GWT team would release some development
 builds once in a while. That would be very usefull at the point where
 new things are added to the trunk. This way you can get a lot more
 input from the community, since it makes it much easier to use a more
 experimental version of GWT. Compiling from the sources means that we
 need direct access to the internet, but not all companies allow that.

 As long as we have some indication of what is mostly stable and what
 not, we can choose at what point we whish to start using a development
 build.

 David

 On Wed, Jan 20, 2010 at 6:19 PM, monkeyboy dilbert.elbo...@gmail.com wrote:
 Thank you John for your explanation. Now I understand the reason why
 you are shutting down the incubator. What I am suggesting is that
 developers should have a place where they can see what new features
 (libraries,...) are being developed and not to stumble upon this new
 features by chance (like I stumbled upon the doc for
 DataBackedWidgetsDesign for example). You mentioned that you send
 emails when you start a new project. What do I need to do to receive
 such an email?
 I think you guys at Google develop great libraries that are perhaps
 underused because they are hard to find. Let's take Gin for example
 (http://code.google.com/p/google-gin/). I think that more people would
 use it if you had a link to Gin from the GWT Tools and Libraries page.

 Regards.

 On Jan 20, 5:29 pm, John LaBanca jlaba...@google.com wrote:
 Libraries and widgets that we want to incubate will be moved into separate
 projects.  Instead of downloading one incubator jar, you'll be able to (have
 to) download each project individually.  Like Ray said, we're going to
 commit most new features directly to trunk, but we may still want to
 incubate some features if they are highly experimental.  We often setup a
 design doc and send out an email when we start a new project, such as the
 data backed widgets, so the community can be involved.  I'm sure we'll keep
 doing that.

 The advantage of separate projects is that each project can move along at
 its own pace.  The incubator currently has some very stable features, some
 highly experimental ones, and some deprecated code, and it isn't obvious
 which is which (well, except the deprecated stuff).  With individual
 projects, it should be more obvious what the state of the project is.

 Thanks,
 John LaBanca
 jlaba...@google.com

 On Wed, Jan 20, 2010 at 10:57 AM, monkeyboy 
 dilbert.elbo...@gmail.comwrote:

  Then, how about a list of new features in the trunk since the last
  release. That way developers would know if they should become involved
  in the nontrivial (but not too hard) task of compiling GWT from
  source. I take the last comment back if such a list exists. I could
  not find it.

  Regards.

  On Jan 20, 4:26 pm, Ray Ryan rj...@google.com wrote:
   On Wed, Jan 20, 2010 at 6:52 AM, monkeyboy dilbert.elbo...@gmail.com
  wrote:

Hello John.

I'm glad to see that PagingScrollTable will make it to the GWT trunk.
Even now it is a useful widget but I can't wait to see the final
version. I would like to ask a few questions. I am sorry to hear that
the incubator will be shut down. I w
-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

[gwt-contrib] Mirrored version control

2010-01-14 Thread Bruce Johnson
Hi GWT contributors,

This is a quick note to let you know about an internal process change that
the GWT team is making to maintain our sanity during GWT's continued growth
in adoption.

The number of GWT applications built by Google itself -- both outward-facing
apps like Google Wave and AdWords 3 as well as Google's own inward-facing
apps we use to the run the business -- has grown quite a bit over the last
couple of years. This growth brings with it new support challenges, and one
of the biggest is that these projects reside in a different version control
system. Keeping things in sync has created a lot of overhead and, as you can
imagine, headaches.

In the next week or so, we're planning to start committing GWT changes to
the internal version control system first, which will then be mirrored out
to the public svn repository within a few minutes by an automatic sync
process. We have gone to a lot of trouble to make sure that this extra level
of indirection will be so transparent that you won't even notice the change.
Things like commit log comments and author names will continue to appear as
they always have. Design and code reviews will continue to take place on
this public list as always. Contributed patches work the same way as always,
except that they'll be committed indirectly through the mirrored route.

So, again, if all goes as planned, you'll see nothing different. The only
reason we're announcing it at all, is...

1) to apologize in advance if there are some bumps as we get the syncing
thing working properly -- we've tested it a lot, but there's always a chance
of turbulence

2) to let you know to yell if anything looks messed up in the repo, so we
can find and fix those bumps faster :-)

-- Bruce, on behalf of the GWT team
-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Removing the deprecated XxxListeners

2010-01-05 Thread Bruce Johnson
Happy belated birthday!

On Monday, January 4, 2010, Thomas Broyer t.bro...@gmail.com wrote:
 On Mon, Jan 4, 2010 at 7:45 PM, Joel Webber j...@google.com wrote:
 A hearty +1 from me. We've been needing to do this for a while, but have
 been so heads-down on new features that it's fallen by the wayside. On that
 note, we also need to deprecate the DOM class and fix all the widgets to not
 use it (all its functionality was subsumed by Document/Element a long time
 ago). We're working on our 2010 roadmap right now, and this will definitely
 be a part of it.

 That's Really. Good. News!

 (thanks for this birthday gift ;-) )

 --
 Thomas Broyer
 /tɔ.ma.bʁwa.je/ http://xn--nna.ma.xn--bwa-xxb.je/

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors


Re: [gwt-contrib] Re: when-linkers-include name='xs' /

2009-12-22 Thread Bruce Johnson
Lex/Bob: To clarify one thing, did you mean

set-configuration-property

vs.

set-property

in the example of adding a linker conditionally? I think the latter is what
we'd want, right?

I agree it sounds like a nice, unifying change. In the process of cleaning
all this up (e.g. deprecation, errors for invalid combos) we really need to
bite the bullet and actually specify what the real API-level deferred
binding properties are -- the ones people should mention in books and
articles -- versus the ones we just use for intermediate values in an ad hoc
manner with the expectation of changing them at will.

Related future discussion: I'm not really a fan of
set-configuration-property and would love to see it go away since in
principle it unifies with set-property (doesn't it?) All this stuff it
getting too fragmented and confusing.

On Tue, Dec 22, 2009 at 4:17 PM, BobV b...@google.com wrote:

  Do you see a need for more deprecation?  If that's all it is, then it
  seems reasonable to hard code the specific deprecations in the
  compiler rather than adding a general deprecation system for module
  components.

 It would be a nice-to-have.  RayC's impending change to enable
 stack-stripping effectively deprecates the compiler.emulatedStack
 property.  Similarly, there are some ClientBundle properties which are
 still defined, but that are unused.  The change should be pretty much
 confined to BodySchema and ModuleDef.normalize().

 Otherwise, the two items from your previous email SGTM.

 --
 Bob Vawter
 Google Web Toolkit Team


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Re: when-linkers-include name='xs' /

2009-12-22 Thread Bruce Johnson
Let's take this to a separate thread or a wave, just to keep things
organized.

2009/12/22 John Tamplin j...@google.com

 On Tue, Dec 22, 2009 at 10:09 PM, Bruce Johnson br...@google.com wrote:

 Related future discussion: I'm not really a fan of
 set-configuration-property and would love to see it go away since in
 principle it unifies with set-property (doesn't it?) All this stuff it
 getting too fragmented and confusing.


 The fundamental difference is that a config property may:

- have values which are not valid Java identifiers
- have values not known ahead of time, such as a filename
- have multiple values
- do not impact the set of permutations compiled

 What did you have in mind to unify that with deferred binding properties?

 --
 John A. Tamplin
 Software Engineer (GWT), Google

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] uibinder and bnudled CSS

2009-12-17 Thread Bruce Johnson
Definitely do need to escape, as you said.

On Thursday, December 17, 2009, John Huss johnth...@gmail.com wrote:
 I think you have to escape the css attributes that start with a dash
 like this:

 \-moz-box-shadow: 2px 2px 5px #000;

 You should be getting a warning about it in dev mode if you are not -
 making sure you having logging on at a good level.

 John

 On Dec 17, 6:03 am, nicolas.deloof nicolas.del...@gmail.com wrote:
 Hi

 I'm migrating some nice HTML-fragment to GWT. Thanks to UiBinder this
 is really easy and I get a nice result in few hours.

 I notice the uiBinder seems to rewrite the CSS rules according to
 browser support (I may be wrong) : my CSS uses CSS3 box-shadow :

         box-shadow: 2px 2px 5px #000;
         -moz-box-shadow: 2px 2px 5px #000;
         -webkit-box-shadow: 2px 2px 5px #000;

 This works fine on my Chrome browser, but when I use the uibinder
 version I dont' have shadows anymore. The CSS rule filter should not
 remove any -webkit* rule when targeting a webkit based browser,
 sould'it ? Also the box-shadow is supported by recent webkit browsers
 (it is on chrome 4, but this is in the dev channel)

 2nd question : If my CSS uses background-image: url(...), can I
 include those images in my ClientBundle and still make references to
 them in my CSS fragement ?

 Cheers,
 Nicolas

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors


Re: [gwt-contrib] now.. afetr GWT 2.0?

2009-12-16 Thread Bruce Johnson
Working on a draft one.

What do folks here think is important?

On Wed, Dec 16, 2009 at 7:42 AM, tfreitas tfrei...@gmail.com wrote:

 What about roadmap?

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Re: add option to generate overflow checks

2009-12-15 Thread Bruce Johnson
This needs to be its own thread, but heads up: flags that affect compiler
output (other than -draftCompile) need to become deferred binding properties
so that we can have per-perm flags. Then, we can produce standard sets of
module flags such as Release and Debug that would make easy to activate
groups of such properties at once.

This seems like it fits squarely into the category of flags you'd want to
be per-perm

On Tue, Dec 15, 2009 at 9:45 AM, John Tamplin j...@google.com wrote:

 On Tue, Dec 15, 2009 at 4:00 AM, cromwell...@gmail.com wrote:


 http://gwt-code-reviews.appspot.com/126801/diff/1/5
 File

 dev/core/src/com/google/gwt/dev/jjs/impl/OverflowDetectionNormalizer.java
 (right):

 http://gwt-code-reviews.appspot.com/126801/diff/1/5#newcode55
 Line 55:
 Should we care about JSOs returning values which are already overflowed?
 e.g. byte foo = someJSO.getLargeValue()? (Scott, is a cast auto-inserted
 for this?) A JDeclarationStatement will be missed by this visitor.


 We already catch those in dev mode, but we don't catch overflow because
 running the code in the bytecode means there won't be any overflow.  It
 could be done as bytecode rewriting, but that is actually far more
 complicated since you can't look at the result but have to look at the
 operands before the operation and do a different check per operation.

 --
 John A. Tamplin
 Software Engineer (GWT), Google

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

[gwt-contrib] Re: webAppCreator and RpcServerTemplate.javasrc

2009-12-05 Thread Bruce Johnson
What John said :-)

On Saturday, December 5, 2009, John Tamplin j...@google.com wrote:
 On Sat, Dec 5, 2009 at 4:36 AM, Sami Jaber sami.ja...@gmail.com wrote:


 I know that post RC 2 rules disallow to get last minute modification into the 
 2.0 release. However, this modification would be slightly minor and won't 
 imply any side-effect issues.
 webAppCreator is used in the GPE Plugin and in command line mode, this tool 
 is very important. We all agree that deRPC is aimed at replacing RPC 1.0. So 
 why not generating the Greeting sample with RpcService and RpcServlet classes 
 ?


 GPE understands very well the deRPC new interfaces and synchronize the async 
 interface as before (with RemoteService) ..
 deRPC doesn't have the mileage on it to make it the default, and also has 
 some negatives (such as payload size) that don't make it appropriate 
 everywhere.


 --
 John A. Tamplin
 Software Engineer (GWT), Google


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors


Re: [gwt-contrib] Re: Proposals for mechanisms to strip stack information from compiled output

2009-11-30 Thread Bruce Johnson
@Bob: You rock.
@Ray: I like.

On Fri, Nov 27, 2009 at 1:13 AM, Ray Cromwell cromwell...@gmail.com wrote:


 Bob,
   I love your proposal, if Bruce like's it, I'll go ahead and implement it
 (perhaps without the A/B testing part? We can leave that as a Wiki entry?)

 -Ray

 On Wed, Nov 25, 2009 at 7:23 AM, BobV b...@google.com wrote:

 On Wed, Nov 25, 2009 at 9:58 AM, Bruce Johnson br...@google.com wrote:
  A) I want stack traces everywhere that it isn't costly.

 !-- This is a derived property that doesn't need a property provider
 and indicates that getting a useful stack trace will be expensive --
 define-property name=stackIsExpensive values=true,false /
 set-property name=stackIsExpensive value=false /
 set-property name=stackIsExpensive value=true
  any
when-property-is name=user.agent value=ie6 /
when-property-is name=user.agent value=ie8 /
  /any
 /set-property

 !-- Assuming native is the default value.  Since the native stack
 isn't useful, optimize for code size  --
 set-property name=stack value=strip
  when-property-is name=stackIsExpensive value=true /
 /set-property

  B) I want stack traces on every browser possible, and for browsers in
 which
  it is costly, I want to only burden a random 2% of those users.

 define-property name=inStackExperiment values=true,false /
 property-provider name=inStackExperiment
  // Do something with cookies, recalculating value every week
 /property-provider

 set-property name=stack value=emulated
  when-property-is name=inStackExperiment value=true /
  when-property-is name=stackIsExpensive value=true /
 /set-property

 set-property name=stack value=strip
  when-property-is name=inStackExperiment value=false /
  when-property-is name=stackIsExpensive value=true /
 /set-property

  C) I want maximum fidelity stack traces everywhere, even paying for
  emulation on browsers that have native stack traces, if that's better.

 set-property name=stack value=emulated /

  D) I want the smallest possible script size by default, but I'm willing
 to
  burdon a random 2% of users to capture stack traces.

 set-property name=stack value=strip /
 !-- Assuming that native stack traces are good enough --
 set-property name=stack vaue=native 
  when-property-is name=inStackExperiment value=true /
  when-property-is name=stackIsExpensive value=false /
 /set-property
 set-property name=stack vaue=emulated 
  when-property-is name=inStackExperiment value=true /
  when-property-is name=stackIsExpensive value=true /
 /set-property


 --
 Bob Vawter
 Google Web Toolkit Team


  --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] Re: Proposals for mechanisms to strip stack information from compiled output

2009-11-25 Thread Bruce Johnson
We need to call out some use cases that show how these settings would be
used in practice, for posterity if nothing else.

Could you describe how we would handle each of these high-level intents that
a developer might have?

A) I want stack traces everywhere that it isn't costly.

B) I want stack traces on every browser possible, and for browsers in which
it is costly, I want to only burden a random 2% of those users.

C) I want maximum fidelity stack traces everywhere, even paying for
emulation on browsers that have native stack traces, if that's better.

D) I want the smallest possible script size by default, but I'm willing to
burdon a random 2% of users to capture stack traces.

If we could write clear rules for each of these scenarios, then it's
probably sound and easy enough to understand.

On Wed, Nov 25, 2009 at 9:33 AM, BobV b...@google.com wrote:

 Since emulatedStack and stripStack are mutually-exclusive, I'd say to
 switch to option number three and use the conditional property setters
 to support the old value.  Something like:

 define-property name=compiler.stackMode values=strip, native, emulated
 /
 set-property name=compiler.stackMode value=native /
 set-property name=compiler.stackMode value=emulated 
  when-property-is name=compiler.emulatedStack value=true /
 /set-property

 Also, we should probably get around to adding a way to deprecate old
 deferred-binding properties.

 --
 Bob Vawter
 Google Web Toolkit Team

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] TypeOracle allTypes including types not in a source path

2009-11-23 Thread Bruce Johnson
Maybe not a warning, but maybe an INFO-level log entry, or perhaps a
TRACE-level one. I think the default introduction of source path=client is
net confusing. Forcing people to specify it would have helped (forced?)
people to understand what is going on.

On Mon, Nov 23, 2009 at 1:40 PM, John Tamplin j...@google.com wrote:

 On Mon, Nov 23, 2009 at 1:33 PM, Matt Mastracci matt...@mastracci.comwrote:

 I'll work around the implicit source path issue for now by using fake
 source paths in modules that don't have any additional source
 imports.  If possible, it would be useful if there were a log warning
 explaining that the source path is defaulting to client.


 I don't think that warning there would be good, as that is a pretty common
 default - basically if you are using the recommended package setup and you
 don't have server-shared code, the common case is not needing any source
 tag in your module.

 --
 John A. Tamplin
 Software Engineer (GWT), Google

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] TypeOracle allTypes including types not in a source path

2009-11-23 Thread Bruce Johnson
let's remember to talk about this more for the release after 2.0

On Mon, Nov 23, 2009 at 2:26 PM, Isaac Truett itru...@gmail.com wrote:

 +1 deprecate and warn.

 On Mon, Nov 23, 2009 at 2:24 PM, Ray Ryan rj...@google.com wrote:
  FWIW, this confusion is exactly why webAppCreator no longer generates
  projects that use the implicit include. I wonder if we shouldn't flat out
  deprecate it--in which case a warning would be the right thing.
 
  --
  http://groups.google.com/group/Google-Web-Toolkit-Contributors

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Google Web Toolkit 2.0 RC1 Now Available

2009-11-17 Thread Bruce Johnson
Hi folks!

GWT 2.0 RC1 is now ready for you to try. The full documentation is still
very much a work in progress, but you can at least start trying out the GWT
SDK distribution and the Google Plugin for Eclipse using the following
instructions:

http://code.google.com/p/google-web-toolkit/wiki/GWT_2_0_RC

GWT 2.0 is going to be a big release, so don't be surprised if there are a
few bumps and surprises as we continue to finalize everything. Similarly, we
would caution you against using GWT 2.0 RC1 in production.

We are eager to get your feedback, both good and bad, in the Google Web
Toolkit Developer Forum:

http://groups.google.com/group/google-web-toolkit

If you find specific bugs to report, please do so at the GWT Issue Tracker:

http://code.google.com/p/google-web-toolkit/issues

See you online. Happy coding :-)

-- Bruce, on behalf of the GWT team

--

You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=.




Re: [gwt-contrib] Re: Cannot install gwt-dev-plugin.exe from gwt-dev-missing-plugin.appspot.com

2009-11-17 Thread Bruce Johnson
And, by the way, a lot of this stuff is still in flux. If you're grabbing
bits and pieces as they appear, you mileage is bound to vary widely :-)

On Tue, Nov 17, 2009 at 12:20 PM, Mark Renouf mark.ren...@gmail.com wrote:

 Oh, sorry... I *just* saw r6956. That worked. Thanks!

 On Nov 17, 12:05 pm, John Tamplin j...@google.com wrote:
  Yes, we are aware of it and fixing it right now.
 
  In the meantime, you can use this outrageously long URL:
 
  https://dl-ssl.google.com/tag/s/appguid%3D%7B9a5e649a-ec63-4c7d-99bf-...
 
  On 11/17/09, Mark  Renouf mark.ren...@gmail.com wrote:
 
   All I get is a dialog box Google Installer / Unknown Installer
   Error
 
   Windows XP SP3, IE7, VMware
 
   Screenshot:
  http://google-web-toolkit-contributors.googlegroups.com/web/Screensho.
 ..
 
   --
  http://groups.google.com/group/Google-Web-Toolkit-Contributors
 
  --
  John A. Tamplin
  Software Engineer (GWT), Google

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

[gwt-contrib] Google Web Toolkit 2.0 RC1 Now Available

2009-11-17 Thread Bruce Johnson
Hi folks!

GWT 2.0 RC1 is now ready for you to try. The full documentation is still
very much a work in progress, but you can at least start trying out the GWT
SDK distribution and the Google Plugin for Eclipse using the following
instructions:

http://code.google.com/p/google-web-toolkit/wiki/GWT_2_0_RC

GWT 2.0 is going to be a big release, so don't be surprised if there are a
few bumps and surprises as we continue to finalize everything. Similarly, we
would caution you against using GWT 2.0 RC1 in production.

We are eager to get your feedback, both good and bad, in the Google Web
Toolkit Developer Forum:

http://groups.google.com/group/google-web-toolkit

If you find specific bugs to report, please do so in the GWT Issue Tracker:

http://code.google.com/p/google-web-toolkit/issues

See you online. Happy coding :-)

-- Bruce, on behalf of the GWT team

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] adding new names to the blackout list

2009-11-17 Thread Bruce Johnson
I'm especially excited about goto! Think of how powerful and flexible that
will be!

On Tue, Nov 17, 2009 at 3:13 PM, Daniel Rice (דניאל רייס)
r...@google.comwrote:

  // future reserved words
  abstract, int, short, boolean, interface, static, byte,
  long, char, final, native, synchronized, float, package,
  throws, goto, private, transient, implements, protected,
  volatile, double, public,

  What a future it will be...

 Dan

 On Tue, Nov 17, 2009 at 3:11 PM, Freeland Abbott fabb...@google.com
 wrote:
  I don't promise this is exhaustive, but it catches up to the mozilla and
 IE
  references, plus uneval from issue 3965.  (Which wasn't on the mozilla
  pages, despite being reserved there, so I'm in fact almost sure this
  isn't exhaustive...)
 
  --
  http://groups.google.com/group/Google-Web-Toolkit-Contributors

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Re: [gwt-contrib] adding new names to the blackout list

2009-11-17 Thread Bruce Johnson
+1 Freeland. You may then also like the planned private goto, which
goes somewhere but it doesn't tell you where it's gone.

On Tuesday, November 17, 2009, Freeland Abbott fabb...@google.com wrote:
 Personally, I'm holding out for transient goto... imagine being able to 
 leap to another chunk of code, and then back again when it finishes!

 On Tue, Nov 17, 2009 at 5:27 PM, Bruce Johnson br...@google.com wrote:
 I'm especially excited about goto! Think of how powerful and flexible that 
 will be!


 On Tue, Nov 17, 2009 at 3:13 PM, Daniel Rice (דניאל רייס) r...@google.com 
 wrote:
 // future reserved words
 abstract, int, short, boolean, interface, static, byte,
 long, char, final, native, synchronized, float, package,
 throws, goto, private, transient, implements, protected,
 volatile, double, public,

   What a future it will be...

 Dan

 On Tue, Nov 17, 2009 at 3:11 PM, Freeland Abbott fabb...@google.com wrote:
 I don't promise this is exhaustive, but it catches up to the mozilla and IE
 references, plus uneval from issue 3965.  (Which wasn't on the mozilla
 pages, despite being reserved there, so I'm in fact almost sure this
 isn't exhaustive...)

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors



 --

 http://groups.google.com/group/Google-Web-Toolkit-Contributors




 --
 http://groups.google.com/group/Google-Web-Toolkit-Contributors

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors


[gwt-contrib] Code Review Request: Updated hosted.html to be pretty

2009-11-13 Thread Bruce Johnson
Hi John (and Hi, contrib group!),

I've been fighting to find just the right incantation to make the missing
plugin flow go smoothly. I think it's pretty  close now.

http://gwt-code-reviews.appspot.com/102815

-- Bruce

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

[gwt-contrib] Re: Code Review Request: Made missing plugin iframe prettier

2009-11-13 Thread Bruce Johnson
Committed to tr...@6891 and merged to 2...@6892.

On Fri, Nov 13, 2009 at 12:06 PM, John Tamplin j...@google.com wrote:

 On Fri, Nov 13, 2009 at 12:03 PM, br...@google.com wrote:

 Thanks for the review. Reply below.



 http://gwt-code-reviews.appspot.com/102815/diff/1002/3
 File hosted.html (right):

 http://gwt-code-reviews.appspot.com/102815/diff/1002/3#newcode35
 Line 35: var iframeDiv = topDoc.createElement(div);
 On 2009/11/13 16:55:51, jat wrote:

 Why topDoc instead of $doc?  Do you really want it stepping outside of

 this

 iframe?


 This is the incantation that seemed to work most reliably on IE6 to get
 rid  of the yucky iframe border. I didn't really investigate too much
 why or if there could be a better way. Either way, I think it's fine
 because the iframe contents do completely cover up everything on the
 page (intentionally - I thought hard about the pros/cons).


 Ok, LGTM

 --
 John A. Tamplin
 Software Engineer (GWT), Google


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

[gwt-contrib] Re: Trace that auto detects the calling class/method.

2009-11-10 Thread Bruce Johnson
On Tue, Nov 10, 2009 at 11:12 AM, David david.no...@gmail.com wrote:

 Do I read this correctly that stacktraces in exceptions will just be
 available (also on IE if the emulated mode is enabled at compile time)
 ? That would make my current implementation of finding the source of a
 Trace statement just work without changes. Great stuff.


Yep!

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Fixes NPE in DockLayoutPanelParser when children have no NS

2009-11-04 Thread Bruce Johnson

I just committed to trunk but haven't merged to 2.0. Feel free to roll
mine back and do something better.

On Wednesday, November 4, 2009, Ray Ryan rj...@google.com wrote:
 Thanks for the patch, Bruce. It's is a bit more complicated than it needs to 
 be, though (if parent doesn't have a prefix it will never get parsed), and 
 still doesn't fix the confusing error message. How does the attached look?


 rjrjr

 On Wed, Nov 4, 2009 at 7:05 AM,  j...@google.com wrote:


 On 2009/11/04 03:01:41, bruce wrote:


 LGTM. I think that to really get this right in general, with better
 error messages, we're going to have to normalize the way we handle
 custom parsers around some shared abstractions. But that's for another
 day...
 Might be able to do something about that today. I've got field references 
 done, and I'm thinking that before I start hunting escaping bugs that bit 5% 
 of users I should go stomping NPEs and code gen problems that stomp nearly 
 everybody.



 http://gwt-code-reviews.appspot.com/91813




--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Compiler Optimization Thought: Class merging

2009-11-03 Thread Bruce Johnson
This topic usually centers on all the little types needed for various event
handlers. Happily, @UiHandler in UiBinder removes the whole issue. The
UiBinder code generator can do whatever nastiness it needs to in order to
create the most efficient event handler/dispatch code. IOW, it's not only
more convenient to write your code using @UiHandler, it's almost certainly
more efficient than what you'd create by hand even if you were willing to do
the Hard Thing in your own handwritten code.

On Tue, Nov 3, 2009 at 12:23 PM, Scott Blum sco...@google.com wrote:

 Hi Nathan,

 We've talked about doing something like this, under various names,
 including inner class elision.  It seems worthwhile in the abstract, to
 reduce client-side object counts.  What I'm not sure of is how hard it
 really would be to get right.  In the past we've had discussions about the
 attributes of the classes to be merged.  They'd need to be singletons within
 their containing class, final, initialized up front.. and references
 wouldn't be allowed to escape into the wild.  And that last one is the
 real sticking point for what you want... allowing references to escape gets
 very problematic, but not allowing them to escape makes it very hard to
 actually get it to kick in for the exact case you're trying to solve.

 Scott

 On Tue, Nov 3, 2009 at 11:43 AM, Nathan Wells nwwe...@gmail.com wrote:


 As I was developing this morning, I came across a trade-off that I
 wasn't happy with. Namely, as I create handlers and other interface
 implementations in a given class, the implementations create new
 classes, which adds additional, unnecessary code into the compiled
 output.

 One way around this is to sacrifice my code readability and simply
 have the containing class implement those interfaces. For example,

 class Foo {
  static class BarHandler implements ClickHandler, KeyDownHandler {
...
  }

  static class FooCommand implements Command {
...
  }

  ... class body that doesn't implement and onClick, onKeyDown or
 execute method...

 }

 could compile to something like

 class Foo implements ClickHandler, KeyDownHandler, Command {
  ... merged implementations ...
 }

 Of course, I'm operating under a few assumptions (based on my watching
 this group and the developer group, and my lack of knowledge about how
 the compiler actually works ;)

 1. This isn't already done,
 2. Adding more classes actually significantly increases the bulk of
 compiled output.
 3. The amount of time to add this optimization would be less than the
 pain of the trade-off I'm dealing with.

 Let me know what you think,
 Nathan



 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Random Thought: Compiler transformation Sync - Async

2009-11-02 Thread Bruce Johnson
At a quick glance, something like this seems way better than a wholesale
sync-async rewriter.

It's actually important not to hide genuine asyncrony from the developer,
because it represents an actual app state the developer should account for
(e.g. what UI should be disabled while an async operation is pending? do you
show a please wait or not?). What we'd want is a framework that makes it
easier to produce and reason about necessarily async patterns.

On Mon, Nov 2, 2009 at 12:42 PM, Matt Mastracci matt...@mastracci.comwrote:


 The API is just a skeleton to experiment with all the strong-typing
 that would go along with porting Oni to Java, so there's not much
 there. It helped prove that the concept was sound if I had a chance to
 take a go at it and gave me some code to look at while planning it
 out. There's still a some porting work to take the Oni code and Java-
 fy it.

 I think this is the right first step - once you have a solid async
 library like this, there are some interesting things you can build on
 it (as Stratified JavaScript builds on Oni:
 http://www.croczilla.com/blog/17)
 .

 On 2-Nov-09, at 6:17 AM, Bart Guijt wrote:

  Just checked out Oni - interseting indeed, could have used something
  like that in several recent GWT projects I did.
 
  You mentioned you roughed out an equivalent GWT API - is it publicly
  accessible?




 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Fix a daylight saving bug

2009-10-30 Thread Bruce Johnson
If you're confident in the fix, Dan, instead of adding a test right now,
please just add an issue instead to remind us to review in the future what
kind of testing mechanism we would have needed to make a unit test easy to
create for this case. I want to make sure we revisit this at some point to
round out our testing story, even for hard things to test.

On Fri, Oct 30, 2009 at 1:23 PM, Daniel Rice (דניאל רייס)
r...@google.comwrote:

   I'm not sure how to so this -- my testing involved manually setting the
 machine's time zone.  Ultimately the bug is in the fact that the native
 Javascript Date functions deal with the missing hour differently that Java's
 Date class, and I don't know that I can coerce the Javascript functions into
 doing this specific behavior except by altering the OS environment.

   Also, this particular bug should only manifest when moving the clock
 ahead.  When going in the other direction, there is no missing hour, instead
 there is a duplicated hour.  While that may lead to other problems, it won't
 cause a wrong date to be inferred.

   There's a theoretical possibility that some location could advance their
 clock by something other than one hour.  I'm not sure what to do about that,
 but I don't think there is anywhere in the world that does this at the
 moment.

 Dan

 On Fri, Oct 30, 2009 at 12:41 PM, jlaba...@google.com wrote:

 We should have unit tests for all of these cases, testing DST going in
 both directions (spring and fall).

 LGTM pending unit tests


 http://gwt-code-reviews.appspot.com/90802



 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Inline Polymorphic Function Declarations

2009-10-30 Thread Bruce Johnson
Very cool find.

On Fri, Oct 30, 2009 at 8:00 PM, cromwell...@gmail.com wrote:

 Note, that if you don't desire correct stack traces, you can use the
 following construct:

 _.foo = function() { ... }

 This results in a 6% post-gzip size reduction on Showcase. It might be
 useful to introduce a permutation parameter like
 stripStackInformation, like -XdisableClassMetadata to enable this
 feature.


Please add an issue to go back and actually add this ability. 6% on Showcase
is too good to turn down; likely it would be even bigger on real-world apps
with lots more patterns that induce runtime polymorphism.

In terms of design, I think this would actually be best as a
permutation-specific conditional deferred binding property that the compiler
is sensitive to (that was a mouthful), so that it would be possible to let
app developers control how many stack trace-enabled users there are, in the
same way they can control how many users get the expensive emulated stack
traces on IE. I would guess something like = 10% would need stack traces
enabled to still get good stats.

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Inline Polymorphic Function Declarations

2009-10-30 Thread Bruce Johnson

I wish we could wrap that all up in a simpler-to-understand package.
But a good article would make it at least bearable.

On Saturday, October 31, 2009, Ray Cromwell cromwell...@gmail.com wrote:


 On Fri, Oct 30, 2009 at 8:24 PM, Bruce Johnson br...@google.com wrote:


 In terms of design, I think this would actually be best as a 
 permutation-specific conditional deferred binding property that the compiler 
 is sensitive to (that was a mouthful), so that it would be possible to let 
 app developers control how many stack trace-enabled users there are, in the 
 same way they can control how many users get the expensive emulated stack 
 traces on IE. I would guess something like = 10% would need stack traces 
 enabled to still get good stats.

 Perhaps we can think of it as a tri-state variable: strip stack info, browser 
 supplied stack info, emulated stack info. Choose per permutation.
 -Ray








 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Inline Polymorphic Function Declarations

2009-10-30 Thread Bruce Johnson

yep, and all of them should be per-perm

On Saturday, October 31, 2009, Ray Cromwell cromwell...@gmail.com wrote:
 Maybe it would make sense to move properties which the compiler relies on 
 into a special CompilerFlags.gwt.xml module, then if you want to change class 
 meta data, class cast checking, aggressive optimization, or stack info, 
 there'd be one centralized place to look at and document all the flags.?

 -Ray

 On Fri, Oct 30, 2009 at 9:31 PM, Bruce Johnson br...@google.com wrote:


 I wish we could wrap that all up in a simpler-to-understand package.
 But a good article would make it at least bearable.

 On Saturday, October 31, 2009, Ray Cromwell cromwell...@gmail.com wrote:


 On Fri, Oct 30, 2009 at 8:24 PM, Bruce Johnson br...@google.com wrote:


 In terms of design, I think this would actually be best as a 
 permutation-specific conditional deferred binding property that the compiler 
 is sensitive to (that was a mouthful), so that it would be possible to let 
 app developers control how many stack trace-enabled users there are, in the 
 same way they can control how many users get the expensive emulated stack 
 traces on IE. I would guess something like = 10% would need stack traces 
 enabled to still get good stats.

 Perhaps we can think of it as a tri-state variable: strip stack info, 
 browser supplied stack info, emulated stack info. Choose per permutation.
 -Ray








 





 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Very fast code review: Adding UiBinder to javadoc

2009-10-29 Thread Bruce Johnson
SGTM

On Wed, Oct 28, 2009 at 7:12 PM, Ray Ryan rj...@google.com wrote:

 If you don't feel strongly about it, I'd like to leave it where it is.
 It's a pretty integral part of binder itself.


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: TBR requested

2009-10-29 Thread Bruce Johnson
both lgtmd kthxbye

On Thu, Oct 29, 2009 at 7:28 PM, Ray Ryan rj...@google.com wrote:

 Hey, Bruce. I TBR'd you on these:

 http://code.google.com/p/google-web-toolkit/source/detail?r=6550
 http://code.google.com/p/google-web-toolkit/source/detail?r=6552


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Very fast code review: Adding UiBinder to javadoc

2009-10-28 Thread Bruce Johnson
Hi Ray,

http://codereview.appspot.com/144046

The only thing controversial is that I'm including only the .client package
for now. It wasn't clear what else should go in there.

-- Bruce

P.S. What's up with these guys: .sample, .testing, and .resources? Seems
like there are already established patterns that differ from what you've
done here.

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Very fast code review: Adding UiBinder to javadoc

2009-10-28 Thread Bruce Johnson
On Wed, Oct 28, 2009 at 6:38 PM, Ray Ryan rj...@google.com wrote:

 We usually use gwt-code-reviews.appspot.com, but LGTM'd anyway.


Oh yeah -- thanks. Duh.


 Testing is on its way out of user/src and into user/testing, review
 pending.


'k.



 sample isn't really a sample, it's become a test app. It should
 probably move to user/testing as well.


If it's a genuine test (as in a test case), then under user/test makes
sense.


 resources is unique to UiBinder as far as I know. It's the master copy
 of the file that we serve out of
 http://google-web-toolkit.googlecode.com/files/xhtml.ent, and has to
 be available to UiBinderGenerator as a resource at code gen time. Any
 suggestion where to put it instead?


Maybe in distro-source? That's where the DTD is, and it feels like a sibling
of that maybe. No strong opinion.

http://code.google.com/p/google-web-toolkit/source/browse/#svn/trunk/distro-source/core/src

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Server side I18N

2009-10-21 Thread Bruce Johnson
Thoka, I hope previous replies didn't come across as a debate as to whether
the use cases you describe are valuable or not; clearly they are.
The point is just that we want to identify exactly what the pros/cons of
each world view are to decide, among other things, if there is one right
answer versus just acknolwedging that there should be multiple libraries,
each with different tradeoffs. In this case, it seems quite likely to be the
latter.

So, as Ray suggests, if you'd be willing to make your library available, you
could start evangelizing it to other GWT users and if over time a consensus
emerges in favor of that approach, it would be much easier to justify trying
to roll that functionality into GWT proper.


On Wed, Oct 21, 2009 at 2:37 PM, Thoka thobias.karls...@gmail.com wrote:


 No, the code does not involve changes to the standard library. The
 only thing you have to do is to replace the localization module to
 another in the gwt.xml file. It is very simple and contains about 5
 simple classes. The only thing you have to do manually is to link
 lang.js to a servlet in web.xml.

 We started creating this module for about 3 month ago, and we still
 need to test it more thorough, which is why I posted this here to get
 more people involved for comments, features and optimizations. We've
 deployed an application live containing this server side I18N, and it
 is working like a charm:

 http://www.facebook.com/video/video.php?v=1174821983024ref=mf

 If you are interested in trying it out your selves, I'll be happy to
 supply you with information and source code.

 On Oct 21, 11:22 pm, Ray Ryan rj...@google.com wrote:
  Thoka, does your code involve changes to GWT proper? If not (or if so,
 for
  that matter), would you be willing to create a new Google Code site for
 it?
  It doesn't have to be part of GWT proper to be useful. And there's no
 reason
  it couldn't reach GWT proper via that route--probably more likely for a
  larger feature like this one.
  rjrjr
 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: will deRPC ship with GWT 2.0 ?

2009-10-19 Thread Bruce Johnson
So, here's the deal on deRPC. It doesn't yet have the miles on it that we'd
like, so we're pretty much on the fence as to whether to really ship it in
GWT 2.0 or not.
It has been included in MS1 and will be in MS2, but we may still make a no
go decision before the GWT 2.0 RC comes out.

If you (as in, anyone reading this email) have tried the new RPC stuff and
have feedback, now would be the right time to give it a thumbs up or thumbs
down. At the moment, we're leaning thumbs down -- mainly to be conservative.

-- Bruce

On Mon, Oct 19, 2009 at 3:45 PM, Sami Jaber sami.ja...@gmail.com wrote:

 Following a question I asked privately to Bruce and Amit.
 Thanks for your response gwitters

 Sami

 On Mon, Oct 19, 2009 at 9:38 PM, Bruce Johnson br...@google.com wrote:

 Sami, would you mind asking this question directly on the Contributors
 list? We can answer it so that everyone has a chance to comment.
 Thanks.



 On Sat, Oct 17, 2009 at 1:46 AM, Sami Jaber sami.ja...@gmail.comwrote:

 Bruce,

 What is the status of deRPC API in GWT 2. The code is in the trunk, it
 seems to be work very well (at least with my test cases) but nothing in 
 GWT
 MS1 Amit announce and very few gwtc posts regarding the API/issue.
 Are you planning to ship deRPC with GWT 2 (I would love to regarding
 all the JDO/AppEngine integration) ? Similarly, are you planning to update
 GPE to conform to the new interfaces, RpcService, RpcServlet, etc ... (
 http://code.google.com/eclipse/docs/gwt_rpc.html) ?

 Thanks for you response,

 Sami






--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: will deRPC ship with GWT 2.0 ?

2009-10-19 Thread Bruce Johnson
Love the enthusiasm!
Anyone else?

On Mon, Oct 19, 2009 at 4:26 PM, Sami Jaber sami.ja...@gmail.com wrote:

 IMHO, It would be a mistake not to make it happen for GWT 2

 deRPC is a huge step forward in terms of performance, extensibility,
 command sinking, serialization extensibility, security and so forth
 Everybody know that GWT 2 will introduce new API and many new
 functionalities, why deRPC would not be part of the show?
 Because it has not been intensively tested ? There's probably a lack of
 tests cases, sure, but it is not specific to deRPC. When I see the last
 commit streams, deRPC seems to me more reliable than other APIs. And
 regarding the migration path and the different use case scenarios, this is
 sweet. If you want to stay in legacy land, just use the straight
 RemoteServiceServlet class. If you want to support the two modes, just
 inherits from HybridServiceServlet (as JUnitHostImpl does in the trunk right
 now). If you are a newcomer, forget all the old non-extensible interfaces
 and use RpcServlet and RpcService.

 Releasing deRPC does not mean that you won't be able to patch if later.
 Earlier it will be released, earlier you will get feedback. Please think
 about it.

 My 2 french euros,

 Sami



 On Mon, Oct 19, 2009 at 9:49 PM, Bruce Johnson br...@google.com wrote:

 So, here's the deal on deRPC. It doesn't yet have the miles on it that
 we'd like, so we're pretty much on the fence as to whether to really ship it
 in GWT 2.0 or not.
 It has been included in MS1 and will be in MS2, but we may still make a
 no go decision before the GWT 2.0 RC comes out.

 If you (as in, anyone reading this email) have tried the new RPC stuff and
 have feedback, now would be the right time to give it a thumbs up or thumbs
 down. At the moment, we're leaning thumbs down -- mainly to be conservative.

 -- Bruce

 On Mon, Oct 19, 2009 at 3:45 PM, Sami Jaber sami.ja...@gmail.com wrote:

 Following a question I asked privately to Bruce and Amit.
 Thanks for your response gwitters

 Sami

 On Mon, Oct 19, 2009 at 9:38 PM, Bruce Johnson br...@google.com wrote:

 Sami, would you mind asking this question directly on the Contributors
 list? We can answer it so that everyone has a chance to comment.
 Thanks.



 On Sat, Oct 17, 2009 at 1:46 AM, Sami Jaber sami.ja...@gmail.comwrote:

 Bruce,

 What is the status of deRPC API in GWT 2. The code is in the trunk,
 it seems to be work very well (at least with my test cases) but nothing 
 in
 GWT MS1 Amit announce and very few gwtc posts regarding the API/issue.
 Are you planning to ship deRPC with GWT 2 (I would love to regarding
 all the JDO/AppEngine integration) ? Similarly, are you planning to 
 update
 GPE to conform to the new interfaces, RpcService, RpcServlet, etc ... (
 http://code.google.com/eclipse/docs/gwt_rpc.html) ?

 Thanks for you response,

 Sami








--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Server side I18N

2009-10-19 Thread Bruce Johnson
@Thobias: I want to make sure I'm understanding the root motivation. Is the
problem that compiles are taking too long when you create permutations per
locale? Perhaps the more fundamental question I should ask is: would you
describe exactly what's unserviceable about the current static approach that
John just mentioned?

On Mon, Oct 19, 2009 at 7:57 PM, John Tamplin j...@google.com wrote:

 On Mon, Oct 19, 2009 at 5:23 PM, Thoka thobias.karls...@gmail.com wrote:

 We've been building GWT application for about 3 years now, and we've
 reached the point where compiling the internationalization strings
 into the WAR file is no longer servicable. Today the GWT I18N support
 is primarly based on Constants and Messages which is solely built on
 Java property files.

 How ever, we've solved this issue by putting the internationalization
 settings on the server side and by fetching these strings remotely via
 JavaScript documents. This works perfect, as we now are able to (even
 in live environment) change internationalization files without re-
 compiling the entire project and without even restarting the tomcat
 service.


 Realize the big cost you are paying:

 @DefaultMessage(You have {0,number,#,##0}
 items totaling {0,number,currency})
 @PluralText({one, You have 1 item costing {0,number,currency}})
 String getCartTotal(@PluralCount int items, double total);

 Gets converted into essentially the following:

 String getCartTotal(int items, double total) {
   switch (DefaultRule.select(items)) {
  case 1: return You have 1 item totaling 
 + NumberFormat.getCurrencyFormat().format(total);
  default:  return You have  +
 NumberFormat.getFormat(#,##0).format(items)
 +  items totalling  +
 NumberFormat.getCurrencyFormat().format(total);
}
 }

 And things get inlined/optimized from there.  If you were to fetch the
 format strings from the server at runtime, you would have to include code to
 parse the format string in the runtime as well.  That code gets large --
 which is why String.format isn't currently included in GWT's JRE emulation.
  If you wanted to allow the server strings to have plural support, then you
 even have to add extra work in the client and download multiple format
 strings for each message.

 Having to deploy a new compiled application when you make changes to
 translations doesn't seem a large cost compared to the huge savings by doing
 more work at compile time rather than at runtime.

 Much of the work on GWT is to be able to do more things at compile time
 rather than runtime and this is a good example.

 --
 John A. Tamplin
 Software Engineer (GWT), Google


 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Proposed API Addition - @WithModuleParameters on test cases

2009-10-14 Thread Bruce Johnson
@John L: You taking this one?

On Wed, Oct 14, 2009 at 12:08 PM, Pascal Muetschard
pmuetsch...@google.comwrote:

 I've uploaded another patch set, which merges in the latest changes from
 the trunk.


 On Mon, Oct 12, 2009 at 2:34 AM, John Tamplin j...@google.com wrote:

 On Mon, Oct 12, 2009 at 12:03 AM, John LaBanca jlaba...@google.comwrote:

 @jat -
 When do you think we'll merge the htmlunit branch into trunk so we can
 check in this patch?


 We are supposed to ship MS2 on Wednesday, so it has to be real soon.

 --
 John A. Tamplin
 Software Engineer (GWT), Google




--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: RR : GWT 2.0: Initial thoughts on $entry

2009-10-12 Thread Bruce Johnson

LGTM

On 10/12/09, b...@google.com b...@google.com wrote:
 Hi Scott and Bruce,

 @Bruce, can I get feedback on the API that $entry() provides.

 @Scott, this changset just has the changes to the compiler and hosted
 mode, can you review them?

 http://gwt-code-reviews.appspot.com/77810


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Proposed API Addition - @WithModuleParameters on test cases

2009-09-25 Thread Bruce Johnson
Looks convenient, but I have a few questions/comments.

1) What happens if the module returned by getModuleName() already specifies
a fix value for a given property? More generally, how should one think about
how these annotations dovetail with the settings in the module config?

2) The terminology is different than we've used in the past. Granted, we
haven't been very consistent with the term for deferred binding properties
(e.g. we've also called them client properties), but we've never called
them module parameters. I know that doesn't make for a nice annotation
name, but I do want to avoid introducing yet another name for the same
concept.

3) Would these annotations apply to the benchmarking subsystem? Should they?
Could they?

On Fri, Sep 25, 2009 at 12:09 PM, John LaBanca jlaba...@google.com wrote:

 Patch courtesy of pmuetschard.

 We propose adding the annotation @WithModuleParameters to specify  deferred
 binding properties on specific test methods, as per this patch:
 http://gwt-code-reviews.appspot.com/71801/show

 For a specific example, see the test file in the patch:
 http://gwt-code-reviews.appspot.com/71801/patch/45/49

 This patch is pretty cool, but there are a couple of important items to
 consider:
 1. Using these annotations increases the number of compilations.  In the
 example above, the single test class would require two compilations (one for
 each test case).  If the test case had a third, non-annotated method, the
 number of compilations would be three.  This is a natural side effect that
 would be true even if the user creates a separate test case with a separate
 test module for each parameter combination.

 2. As the patch stands now, @WithModuleParameters is NOT inherited, so if a
 subclass overrides a test method, the annotations will not apply.   I
 suggest we add t...@inherited tag to the definition so that overriding
 subclasses do inherit the annotation.

 Thanks,
 John LaBanca
 jlaba...@google.com

 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Proposed API Addition - @WithModuleParameters on test cases

2009-09-25 Thread Bruce Johnson
On Fri, Sep 25, 2009 at 1:19 PM, Pascal Muetschard
pmuetsch...@google.comwrote:

 1) What happens if the module returned by getModuleName() already specifies
 a fix value for a given property? More generally, how should one think about
 how these annotations dovetail with the settings in the module config?

 The annotation will override what is defined in the module. I think that's
 what is expected and it just works.


Makes sense. Normally, when you set-property you can specify multiple
values (which often generates multiple permutations, though not always).
Seems like the annotation should support that if it doesn't.

2) The terminology is different than we've used in the past. Granted, we
 haven't been very consistent with the term for deferred binding properties
 (e.g. we've also called them client properties), but we've never called
 them module parameters. I know that doesn't make for a nice annotation
 name, but I do want to avoid introducing yet another name for the same
 concept.


 Good point. I will do the rename and publish another patch.


Sadly, I'm not positive what the right name should be. Perhaps
@WithClientProperties?

I'd like to hear from others as to the best term.
@WithDeferredBindingProperties seems too weighty.


  3) Would these annotations apply to the benchmarking subsystem? Should
 they? Could they?

 Yes it could. The simplest way would be to change the benchmark
 JUnitShell.Strategy to extend the new strategy. I don't know the benchmark
 system well, so I didn't want to change it. If somebody that does know the
 benchmark system well could look at this, I'd be more than happy to help...


I'd really like to look into this at the same time. It's always so much
harder to find time to go back and retrofit these kinds of enhancements than
to just add them uniformly when they first go in.

@John L: Thoughts? Could you point Pascal in the right direction w.r.t.
benchmarking?

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Proposed API Addition - @WithModuleParameters on test cases

2009-09-25 Thread Bruce Johnson
On Fri, Sep 25, 2009 at 1:51 PM, John LaBanca jlaba...@google.com wrote:

 I vote for @WithBindingProperties for the annotation name.


Is that a vote that we should start using the term binding properties in
general?

I think that's not quite the right term (perhaps this should be a separate
thread) because increasingly, those properties will affect things like
compiler optimization behavior, code splitting, etc. That is, they don't
only affect how GWT.create() calls get bound.

How about the term client property? It is a property that affects what the
client receives and is in every case somehow a function of the client that
is requesting the script.

-- Bruce

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Introduces inline styles to ui.xml files

2009-09-11 Thread Bruce Johnson
Another w00t!
This is brilliant.

On Thu, Sep 10, 2009 at 7:00 PM, Joel Webber j...@google.com wrote:

 W00t, thanks. Looking forward to using this.Thanks for doing this review,
 Lex.


 On Thu, Sep 10, 2009 at 4:36 PM, rj...@google.com wrote:


 On 2009/09/10 19:54:05, Ray Ryan wrote:


 Committed r6114

 http://gwt-code-reviews.appspot.com/64812




 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Introduces inline styles to ui.xml files

2009-09-11 Thread Bruce Johnson
And those class names get obfuscated, too, right?

On Fri, Sep 11, 2009 at 6:24 PM, Ray Ryan rj...@google.com wrote:

 Want to see the best part? Css namespaces for free, courtesy of
 CssResource.
 ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
   ui:style
 .pretty {
   color: red;
 }
   /ui:style
   ui:style field='otherStyle'
 .pretty {
   color: green;
 }
   /ui:style

   div
 div class='{style.pretty}'I am red./div
 div class='{otherStyle.pretty}'I am green./div
   /div
 /ui:UiBinder


 On Fri, Sep 11, 2009 at 2:23 PM, Bruce Johnson br...@google.com wrote:

 Another w00t!
 This is brilliant.


 On Thu, Sep 10, 2009 at 7:00 PM, Joel Webber j...@google.com wrote:

 W00t, thanks. Looking forward to using this.Thanks for doing this
 review, Lex.


 On Thu, Sep 10, 2009 at 4:36 PM, rj...@google.com wrote:


 On 2009/09/10 19:54:05, Ray Ryan wrote:


 Committed r6114

 http://gwt-code-reviews.appspot.com/64812










 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: New API proposal: BatchedCommand

2009-09-04 Thread Bruce Johnson
I'm definitely not a Java pedant, so maybe there's something
wrong/underinformed with my perspective here, but here's my take...
1) Why Runnable isn't quite right
- Has close associations with threads
- Isn't spec'd to throw Throwable, which means what could be simple callbaks
have to always have try/catch that then invoke exactly the same code path
that the uncaught exception handler would've called anyway.

2) Callable is closer, but it has a close association with the Executor
family, which itself has lots of connotations, most of which we can't honor.

3) I see the spritual similarity to ExecutorService/Future, but I don't see
that there's any proper subset we could implement that would cover the same
use cases. Even if we could, the standard Java for that subset could be
misleading relative to the semantics we are trying to guarantee -- that is,
we'd like to say stuff like runs at the next opporuntity after the event
loop has been processed at least once in the GWT javadoc, otherwise it
comes across as way too abstract.

Perhaps an approach would be to try to perfect the API without trying to
reconcile it, then see if we can map it onto the existing JRE without losing
anything vital.


On Thu, Sep 3, 2009 at 11:21 PM, Ray Cromwell cromwell...@gmail.com wrote:


 Is there a reason why we just don't add Runnable and CallableV to the JRE
 emul and use those instead of Command? This design seems to parallel some of
 the patterns in ExecutorService. I could see some of those patterns being
 useful (like completion queues, which would be useful for staged
 animations).
 -Ray


 On Thu, Sep 3, 2009 at 7:08 PM, Bruce Johnson br...@google.com wrote:

 Okay, here's a strawman for a new-and-improved proposal. All these would
 be in core.
 // Deferred command = on the other side of the event loop
 interface DeferredCommands {
   public static DeferredCommands get();

   public void add(Command cmd);
   public void add(Command cmd, boolean asap);  // asap = faster than
 setTimeout(0)
   public void addPause();
 }

 // Finally command = before you end the current stack trace
 interface FinallyCommands {
   public static FinallyCommands get();

   public void add(Command cmd);
 }

 // Incremental command = call repeatedly quickly to avoid SSWs
 interface IncrementalCommands {
   public static IncrementalCommands get();

   public void add(Command cmd);
   public void add(Command cmd, boolean asap);
 }

 // Timed command = call based clock time (aka regular old timers)
 interface TimedCommands {
   public static TimedCommand get();

   public TimerController scheduleOnce(Command cmd, int millis);
   public TimerController scheduleRecurring(Command cmd, int millis);
 }

 // Allows optional control over a timer after it's created.
 // If the return values in scheduleOnce, etc. aren't used, extra code can
 maybe optimize away.
 interface TimerController {
   public void pause();
   public void resume();
   public void cancel();
 }

 I think that maybe consolidating timers into this mix might be a bit much,
 but, then again, if we're graduating Command to core, then it seems like
 it would be nice to make it the uniform callback interface.

 -- Bruce

 On Thu, Sep 3, 2009 at 9:28 PM, Bruce Johnson br...@google.com wrote:

 I like it a lot Ray. (To be completely honest, I knew you were going to
 say all that, so I decided to sandbag and let you do the typing :-)

 I question if it's really appropriate to explicitly say PreEventLoop
 and PostEventLoop considering that...sometimes...the event loop can
 actually run re-entrantly. Those names sound like a very strong guarantee
 that I don't think we can reliably guarantee. It's more like
 PreCurrentJavaScriptStackFullyUnwinding and PostEventLoop.

 Actually, to take a step back (which is my very favorite thing to do),
 there are several kinds of things that could be consolidated:

 1) Single-shot timers
 2) Recurring timers
 3) Incremental commands that run as soon as possible after the event loop
 (faster than setTimeout(0))
 4) Incremental commands that run after the event loop via setTimeout(0)
 5) Deferred commands that run as soon as possible after the event loop
 (faster than setTimeout(0))
 6) Deferred commands that run after the event loop via setTimeout(0)
 7) Execute-this-before-you-unwind-the-JS-stack-in-which-it-was-enqueued
 (aka BatchedCommand)
 8) Arguably, runAsync (although it's purpose is so functionally different
 it would probalby be a mistake to munge it in)

 #3 and #5 might look funny, but it is generally possible to run code
 *after* the event loop but *much* sooner than setTimeout(0), which is
 usually clamped to some pretty long duration such as 10ms. The reason you
 wouldn't want to do #3 and #5 as the default for deferred commands is that
 it would keep the CPU overly busy if you did it a bunch in a row. It would
 very likely drain mobile batteries quickly, even.

 @Ray (or anyone): Can you think of an awesome way to reconcile those
 behind

[gwt-contrib] Re: New API proposal: BatchedCommand

2009-09-03 Thread Bruce Johnson
 modify the
 queue element (coalesce) rather than appending another queue item. Then,
 when processing the queue, you only need to add the roots to the DOM,
 attaching/modifying enmasse.

 This would preserve the OO-ness of constructing widget hierarchies
 without requiring 'foreign' string-based templating.

 -Ray


  On Wed, Sep 2, 2009 at 5:13 PM, Bruce Johnson br...@google.comwrote:

  On Wed, Sep 2, 2009 at 6:07 PM, Scott Blum sco...@google.com wrote:

 I do agree with John that we should really discuss how this can be
 implemented.


 It's already implemented!


  Is there some magic trick to make the browser execute a piece of code
 at the time you want, or do we need to go and modify all our event code
 (like with the global uncaught exception handler)?


 No trick, it's as bad as you'd hope it wasn't. On the positive side,
 it's already been done -- I'm just augmenting the tests for the various
 subsystems such as RequestBuilder and event dispatching to make sure we
 tighten the correctness noose as much as possible.

 Longer term, Bob and I both would really like to find a general
 mechanism for making this pattern easy to do from any path into a GWT 
 module
 from the outside, exactly along the lines of what Matt was talking 
 about.
 I think rolling this functionality into gwt-exporter (and then rolling 
 that
 sort of functionality directly into GWT proper) will get us pretty far 
 down
 the road.

 Code review request forthcoming, possibly tomorrow.

 -- Bruce











 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: New API proposal: BatchedCommand

2009-09-03 Thread Bruce Johnson
Okay, here's a strawman for a new-and-improved proposal. All these would be
in core.
// Deferred command = on the other side of the event loop
interface DeferredCommands {
  public static DeferredCommands get();

  public void add(Command cmd);
  public void add(Command cmd, boolean asap);  // asap = faster than
setTimeout(0)
  public void addPause();
}

// Finally command = before you end the current stack trace
interface FinallyCommands {
  public static FinallyCommands get();

  public void add(Command cmd);
}

// Incremental command = call repeatedly quickly to avoid SSWs
interface IncrementalCommands {
  public static IncrementalCommands get();

  public void add(Command cmd);
  public void add(Command cmd, boolean asap);
}

// Timed command = call based clock time (aka regular old timers)
interface TimedCommands {
  public static TimedCommand get();

  public TimerController scheduleOnce(Command cmd, int millis);
  public TimerController scheduleRecurring(Command cmd, int millis);
}

// Allows optional control over a timer after it's created.
// If the return values in scheduleOnce, etc. aren't used, extra code can
maybe optimize away.
interface TimerController {
  public void pause();
  public void resume();
  public void cancel();
}

I think that maybe consolidating timers into this mix might be a bit much,
but, then again, if we're graduating Command to core, then it seems like
it would be nice to make it the uniform callback interface.

-- Bruce

On Thu, Sep 3, 2009 at 9:28 PM, Bruce Johnson br...@google.com wrote:

 I like it a lot Ray. (To be completely honest, I knew you were going to say
 all that, so I decided to sandbag and let you do the typing :-)

 I question if it's really appropriate to explicitly say PreEventLoop and
 PostEventLoop considering that...sometimes...the event loop can actually
 run re-entrantly. Those names sound like a very strong guarantee that I
 don't think we can reliably guarantee. It's more like
 PreCurrentJavaScriptStackFullyUnwinding and PostEventLoop.

 Actually, to take a step back (which is my very favorite thing to do),
 there are several kinds of things that could be consolidated:

 1) Single-shot timers
 2) Recurring timers
 3) Incremental commands that run as soon as possible after the event loop
 (faster than setTimeout(0))
 4) Incremental commands that run after the event loop via setTimeout(0)
 5) Deferred commands that run as soon as possible after the event loop
 (faster than setTimeout(0))
 6) Deferred commands that run after the event loop via setTimeout(0)
 7) Execute-this-before-you-unwind-the-JS-stack-in-which-it-was-enqueued
 (aka BatchedCommand)
 8) Arguably, runAsync (although it's purpose is so functionally different
 it would probalby be a mistake to munge it in)

 #3 and #5 might look funny, but it is generally possible to run code
 *after* the event loop but *much* sooner than setTimeout(0), which is
 usually clamped to some pretty long duration such as 10ms. The reason you
 wouldn't want to do #3 and #5 as the default for deferred commands is that
 it would keep the CPU overly busy if you did it a bunch in a row. It would
 very likely drain mobile batteries quickly, even.

 @Ray (or anyone): Can you think of an awesome way to reconcile those behind
 a consistent API?







 On Thu, Sep 3, 2009 at 4:52 PM, Joel Webber j...@google.com wrote:

 ++(++Ray)
 Anything we can do to sensibly get this crap out of .user and into .core
 (or some other common location) would be very, very good.
 If, as a side-effect, we could get DeferredCommand to *not* use
 IncrementalCommand (the latter brings in fairly significant dependencies
 that are enough to matter for small apps), that would be even better.


 On Thu, Sep 3, 2009 at 4:46 PM, Scott Blum sco...@google.com wrote:

 ++Ray.


 On Thu, Sep 3, 2009 at 4:38 PM, Ray Ryan rj...@google.com wrote:

   The mechanism is just brilliant. I have reservations about the api.

 bikeshed
 it seemed kinda nice to have one less type

 Except that we have one more type, BatchedCommand, which looks exactly
 like Command, except with a different name, and you have to subclass it
 rather than implement it...

 A simple thing we could do is:

- create com.google.gwt.core.client,
- change com.google.gwt.user.client.Command to extend the new one
- deprecate com.google.gwt.user.client.Command
- And have BatchedCommand accept com.google.gwt.core.client

 And the two names, DeferredComand and BatchedCommand, don't give
 much clue as to which does what. And of course BatchedCommand doesn't
 actually provide any batching service.

 If we were doing all this from scratch, I suspect we would wind up with
 something like this in core (presuming we're happy with IncrementalCommand
 and addPause):

 package com.google.gwt.core.dispatch

 public interface Command {
   void execute();
 }

 public interface IncrementalCommand {
   boolean execute();
 }

 public class

[gwt-contrib] Re: update logging to provide performance metrics

2009-09-02 Thread Bruce Johnson
I think I'd rather look at any such work as orthogonal perf metrics data
gathering since it is really is, functionally, an independent question of
the log level. For example, we might want to see the effect of logging
itself on the speed of hosted mode refresh.
I think some sort of separate global collector mechanism would be a better
design.

On Wed, Sep 2, 2009 at 9:48 AM, John Tamplin j...@google.com wrote:

 On Wed, Sep 2, 2009 at 8:58 AM, Freeland Abbott fabb...@google.comwrote:

 Is the TIMING log level a good idea, though, and sorted correctly?  I
 waffled a bit on whether to make it be a new log level or an orthogonal
 flag


 I'm not sure it makes sense as a log level -- I think perhaps a separate
 flag to trigger timing information is useful, though it isn't clear how that
 will wind up different than the existing PerfLogger usage.


 --
 John A. Tamplin
 Software Engineer (GWT), Google


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: New API proposal: BatchedCommand

2009-09-02 Thread Bruce Johnson
On Wed, Sep 2, 2009 at 6:07 PM, Scott Blum sco...@google.com wrote:

 I do agree with John that we should really discuss how this can be
 implemented.


It's already implemented!


  Is there some magic trick to make the browser execute a piece of code at
 the time you want, or do we need to go and modify all our event code (like
 with the global uncaught exception handler)?


No trick, it's as bad as you'd hope it wasn't. On the positive side, it's
already been done -- I'm just augmenting the tests for the various
subsystems such as RequestBuilder and event dispatching to make sure we
tighten the correctness noose as much as possible.

Longer term, Bob and I both would really like to find a general mechanism
for making this pattern easy to do from any path into a GWT module from the
outside, exactly along the lines of what Matt was talking about. I think
rolling this functionality into gwt-exporter (and then rolling that sort of
functionality directly into GWT proper) will get us pretty far down the
road.

Code review request forthcoming, possibly tomorrow.

-- Bruce

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: UiBinder first impressions

2009-08-25 Thread Bruce Johnson
Hi Sony,
I just wanted to clarify that UiBinder is based on XHTML not merely to make
coding more succinct vs. Java code. I agree that we could in theory provide
fluent APIs that could make Java imperative UI code much more succinct than
it is now. But there are three other big motivations for UiBinder that
wouldn't be address by fluent APIs that I wanted to share.

First, specifying layouts in XHTML encouages developers (by making it
easier) to use HTML rather than widgets/panels where the two are effectively
equivalent anyway. For example, it's just as easy to use div instead of
FlowPanel when you're already working in XHTML, yet div is much, much
better. Browsers can parse and render HTML string fragments much faster than
they can executing JavaScript that builds DOM structures programmatically.
So, really, UiBinder is a trojan horse to get people to write apps that are
smaller and run faster :-)

Secondly, many teams we've worked with at Google really like that UiBinder
creates a firm wall between the aesthetics of the UI vs. its programatic
behavior, which supports well the MVP pattern that is becoming increasingly
recognizes as The Right Way to architect internet-based client/server apps.
It's also a good way to divide work in teams that have designers and
developers; designers can mess with the XHTML, developers can mess with the
code and if they ever diverge, you'll get a compile-time error. This seems
to really facilitate the kind of workflow in which a lot of people have
expressed interest since GWT 1.0. We're excited to finally be getting there.

Finally, GWT is all about finding coding patterns with which tools (IDEs in
particular) are useful. UiBinder's XHTML syntax makes it easier to write
good tools because it isn't as expressive as full-blown code: more
restrictive language means more ability to analyze it statically, which is
what tools are all about. Fluent APIs that would encourage people to write
UIs with Java code are less amenable to creating good tools for them. For
example, the Google Plugin is already working on tools to make editing
UiBinder templates easy breezy, and we hope other IDEs will do the same.

-- Bruce

On Mon, Aug 17, 2009 at 11:32 AM, SonyMathew xsonymat...@gmail.com wrote:


 One point I have tried injecting into the GWT community is the
 importance of fluent APIs.  GWT's Java API is currently quite
 cumbersome for layouts and it seems folks immediately jumped to the
 conclusion that Java doesn't work and have gone the route of using XML
 for layouts.  I am not against folks that want XML layouts but there
 are many that feel fluent APIs in Java for layouts will be even more
 productive  Even if you layout your initial UI in XML you are still
 going to need to modify it dynamically in Java based on various events
 - so you end up having a eye sore mix.

 I put out an example of a fluent API called AxisPanel (search for it)
 - its not a great implementation - but it pretty much let me layout
 everything pretty quickly and changed the pace of my GWT development
 drastically - especially when it came to modifying layouts with new
 requirements.  Speaking for myself - I would like to see more such
 APIs (and better implementations than my AxisPanel) that folks can
 rely on as part of the Core GWT.

 I don't think developers starting a new GWT project would adopt XML
 layouts if they could fluently layout in Java right alongside the rest
 of their coding (at-least thats my theory)..

 Sony

 On Aug 10, 8:59 am, Arthur Kalmenson arthur.k...@gmail.com wrote:
  Hello everyone,
 
  We've been playing with UiBinder and I thought it'd be a good idea to
  share what we've seen so far (and ask some questions).
 
  Some of the apps we write are used by more then one hospital and this
  requires a tailored UI depending on the user's preferences and to
  store additional information that a particular hospital needs to keep
  track of. At the moment, writing UI in a swing style, we program to
  interfaces and use GIN to bind everything together. Using different
  AbstractGinModules and Ginjectors, we can tie the application together
  in different ways using different UI implementations. What would be
  the way to do this with UiBinder? From what we could tell, one would
  use UiTemplate, but there doesn't seem to be a way to configure the
  String in UiTemplate easily through a GIN module. Are there
  alternatives?
 
  Following the programming to interfaces theme, we've been doing that
  with UiBinder, but have run into an issue when trying to build a
  larger UI page out of smaller ui.xml classes. It seems that referring
  to interfaces in ui.xml doesn't work, so you need to work with direct
  concrete classes. But this would force you to use a particular
  implementation when we'd like to keep it generic.
 
  Lastly, I guess this is something just for consideration for the
  future, but having the GEP work with UiBinder would make using it a
  lot easier. For example, having 

[gwt-contrib] Re: Nullness tracking

2009-08-25 Thread Bruce Johnson
Any numbers, by the way, on the before/after effects?

On Tue, Aug 25, 2009 at 2:54 PM, sp...@google.com wrote:


 Reviewers: scottb,

 Description:
 Tracks nullness within the compiler by adding a JNonNull type.

 See http://code.google.com/p/google-web-toolkit/issues/detail?id=1819 .


 Please review this at http://gwt-code-reviews.appspot.com/62805

 Affected files:
   dev/core/src/com/google/gwt/core/ext/soyc/impl/SizeMapRecorder.java
   dev/core/src/com/google/gwt/dev/jjs/CorrelationFactory.java
   dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JArrayRef.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JBinaryOperation.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JCastOperation.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JConditional.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JGwtCreate.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JMethod.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JNewArray.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JNewInstance.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JNonNullType.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JNullType.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JReboundEntryPoint.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JReferenceType.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JStringLiteral.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JThisRef.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
   dev/core/src/com/google/gwt/dev/jjs/ast/JVariable.java
   dev/core/src/com/google/gwt/dev/jjs/ast/js/JsniFieldRef.java
   dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java
   dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
   dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java
   dev/core/src/com/google/gwt/dev/jjs/impl/CloneExpressionVisitor.java
   dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter.java
   dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java
   dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java
   dev/core/src/com/google/gwt/dev/jjs/impl/EqualityNormalizer.java
   dev/core/src/com/google/gwt/dev/jjs/impl/FragmentExtractor.java
   dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
   dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
   dev/core/src/com/google/gwt/dev/jjs/impl/JavaScriptObjectNormalizer.java
   dev/core/src/com/google/gwt/dev/jjs/impl/JavaToJavaScriptMap.java
   dev/core/src/com/google/gwt/dev/jjs/impl/LongCastNormalizer.java
   dev/core/src/com/google/gwt/dev/jjs/impl/LongEmulationNormalizer.java
   dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java
   dev/core/src/com/google/gwt/dev/jjs/impl/MethodCallTightener.java
   dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java
   dev/core/src/com/google/gwt/dev/jjs/impl/SourceGenerationVisitor.java
   dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java


 dev/core/src/com/google/gwt/dev/js/JsSourceGenerationVisitorWithSizeBreakdown.java
   dev/core/test/com/google/gwt/dev/jjs/JjsTypeTest.java



 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: UiBinder first impressions

2009-08-25 Thread Bruce Johnson

No plans to do drag-n-drop or anything wysiwyg. We'll probably
continue to focus on the basics.

On Tuesday, August 25, 2009, Miroslav Pokorny
miroslav.poko...@gmail.com wrote:
 Extras...
 Are there any plans to build a ui tool (maybe in swing) so designers can drag 
 n drop available widgets and have the view instantly updated?
 Other kool features might include save the file etc.Some of the extra 
 features in interface builder.
 Thoughts...?
 On 26/08/2009, at 2:14 AM, Bruce Johnson br...@google.com wrote:

 Hi Sony,
 I just wanted to clarify that UiBinder is based on XHTML not merely to make 
 coding more succinct vs. Java code. I agree that we could in theory provide 
 fluent APIs that could make Java imperative UI code much more succinct than 
 it is now. But there are three other big motivations for UiBinder that 
 wouldn't be address by fluent APIs that I wanted to share.

 First, specifying layouts in XHTML encouages developers (by making it easier) 
 to use HTML rather than widgets/panels where the two are effectively 
 equivalent anyway. For example, it's just as easy to use div instead of 
 FlowPanel when you're already working in XHTML, yet div is much, much 
 better. Browsers can parse and render HTML string fragments much faster than 
 they can executing JavaScript that builds DOM structures programmatically. 
 So, really, UiBinder is a trojan horse to get people to write apps that are 
 smaller and run faster :-)

 Secondly, many teams we've worked with at Google really like that UiBinder 
 creates a firm wall between the aesthetics of the UI vs. its programatic 
 behavior, which supports well the MVP pattern that is becoming increasingly 
 recognizes as The Right Way to architect internet-based client/server apps. 
 It's also a good way to divide work in teams that have designers and 
 developers; designers can mess with the XHTML, developers can mess with the 
 code and if they ever diverge, you'll get a compile-time error. This seems to 
 really facilitate the kind of workflow in which a lot of people have 
 expressed interest since GWT 1.0. We're excited to finally be getting there.

 Finally, GWT is all about finding coding patterns with which tools (IDEs in 
 particular) are useful. UiBinder's XHTML syntax makes it easier to write good 
 tools because it isn't as expressive as full-blown code: more restrictive 
 language means more ability to analyze it statically, which is what tools are 
 all about. Fluent APIs that would encourage people to write UIs with Java 
 code are less amenable to creating good tools for them. For example, the 
 Google Plugin is already working on tools to make editing UiBinder templates 
 easy breezy, and we hope other IDEs will do the same.

 -- Bruce
 On Mon, Aug 17, 2009 at 11:32 AM, SonyMathew xsonymat...@gmail.com wrote:


 One point I have tried injecting into the GWT community is the
 importance of fluent APIs.  GWT's Java API is currently quite
 cumbersome for layouts and it seems folks immediately jumped to the
 conclusion that Java doesn't work and have gone the route of using XML
 for layouts.  I am not against folks that want XML layouts but there
 are many that feel fluent APIs in Java for layouts will be even more
 productive  Even if you layout your initial UI in XML you are still
 going to need to modify it dynamically in Java based on various events
 - so you end up having a eye sore mix.

 I put out an example of a fluent API called AxisPanel (search for it)
 - its not a great implementation - but it pretty much let me layout
 everything pretty quickly and changed the pace of my GWT development
 drastically - especially when it came to modifying layouts with new
 requirements.  Speaking for myself - I would like to see more such
 APIs (and better implementations than my AxisPanel) that folks can
 rely on as part of the Core GWT.

 I don't think developers starting a new GWT project would adopt XML
 layouts if they could fluently layout in Java right alongside the rest
 of their coding (at-least thats my theory)..

 Sony

 On Aug 10, 8:59 am, Arthur Kalmenson arthur.k...@gmail.com wrote:
 Hello everyone,

 We've been playing with UiBinder and I thought it'd be a good idea to
 share what we've seen so far (and ask some questions).

 Some of the apps we write are used by more then one hospital and this
 requires a tailored UI depending on the user's preferences and to
 store additional information that a particular hospital needs to keep
 track of. At the moment, writing UI in a swing style, we program to
 interfaces and use GIN t


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Rework emulated stack trace with conditional properties

2009-08-13 Thread Bruce Johnson
On Thu, Aug 13, 2009 at 12:55 PM, b...@google.com wrote:

 @Bruce, does the following work for you?

set-property name=compiler.emulatedStack value=true,false 
  any
when-property-is name=user.agent value=ie6 /
when-property-is name=user.agent value=ie8 /
  /any
/set-property
property-provider name=compiler.emulatedStack
{
  return location.search.indexOf('emulatedStack') != -1 ? 'true' :
 'false';
}
/property-provider


When you say, does it work for me, do you mean do I like it, or does it
literally run? I didn't run it (but can, if that's helpful), but I do like
the looks of it. It seems like exactly when I'd expect to see.

Reviewing the updated code now.

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Clean up GWTCompiler output

2009-08-13 Thread Bruce Johnson
End this email below is what it looks like when I run the compiler on a
modified Hello sample using the default compiler log level. How is the
signal-to-noise ratio? I think it's not great.


A few areas for improvement:

- Lower the log level for Creating Split Point Map file for SOYC; seems
like this should be TRACE, since they don't actually have info that is
really context-relevant; it's more telling you what code path the compiler
itself is following; it might seem more useful if it listed the file name.

- Maybe get rid of Done; the presence of subsequent outdented logs should
make it clear enough that the preceding step has finished

- Lower the log level of permutation timings to INFO

- Decide how to make the permutation counting look like it makes sense; in
particular, specifying I of N, you expect the indices to range 1..N
rather than 0..(N-1). Every time I see that last mesage 8 of 9 I keep
feeling disappointed that I never see 9 of 9 :-)

- Lower the log level of the Linking subtree, and specify what war
directory is being linked into, such as Linking into war at
/usr/local/myproject/war


Also, on another note, when you run the compiler with -treeLogger, we still
get some console noise that looks like this:

Permutation took 516 ms

Permutation took 284 ms

Permutation took 187 ms

Permutation took 147 ms

Permutation took 196 ms

Permutation took 131 ms

Permutation took 177 ms

Permutation took 140 ms

Permutation took 134 ms


I think we have a stray System.out?


In the end, it seems like the default log level ought to produce treelogger
output that looks like this:


Compiling module com.google.gwt.sample.hello.Hello

Compilation succeeded -- 6.889s

Arguably, it should even be silent unless there's a problem.

Thoughts? Anyone eager to write a patch for changes along these lines?

-- Bruce

=== Actual log below ===


Compiling module com.google.gwt.sample.hello.Hello

   Compiling 9 permutations

   Worker permutation 0 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 294 ms

   Worker permutation 1 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 291 ms

   Worker permutation 2 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 197 ms

   Worker permutation 3 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 154 ms

   Worker permutation 4 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 198 ms

   Worker permutation 5 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 194 ms

   Worker permutation 6 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 184 ms

   Worker permutation 7 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 145 ms

   Worker permutation 8 of 9

  Creating Split Point Map file for SOYC

 Done

Permutation took 131 ms

  Permutation compile succeeded

Linking into war

   Link succeeded

   Compilation succeeded -- 6.889s

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Prettier GWT version names for upcoming 2.0 releases

2009-08-12 Thread Bruce Johnson

Exactly :-)

On Wednesday, August 12, 2009, Joel Webber j...@google.com wrote:
 Makes sense to me. So the first one will be gwt-2.0.0-m0, right?

 On Tue, Aug 11, 2009 at 11:40 PM, Bruce Johnson br...@google.com wrote:
 Mostly, this writeup is aimed at people who have been working on GWT's own 
 build-related stuff, but if anyone else has objections, now would be a good 
 time to raise them (though it seems unlikely anyone would).


 In the past, we've never had a good naming scheme for distros other than the 
 general availability distro. 
 For milestones, we used the convention 0.0.rev, which probably scares people off and isn't at all self-descriptive. For RCs
  and GAs, we used major.minor.bugfix (e.g. 1.5.0 was 1.5 RC1, 1.5.1 
 was 1.5 RC2, and 1.5.2 was GA). This is all too ad hoc and confusing.


 Here's the new proposal:
 major.minor.bugfix (e.g. 2.1.0, 2.1.1, 2.1.2)= This is an official, 
 supported build. Every new minor (or bigger) release would start with a 
 bugfix number of 0.


 major.minor.bugfix-rcn (e.g. 2.0.0-rc1, 2.0.0-rc2)= This is release 
 candidate build n for the specified upcoming GWT release
 major.minor.bugfix-mn (e.g. 2.0.0-m1, 2.0.0-m2)= This is milestone 
 build n for the specified upcoming GWT release
 In other words, the stream of announced code drops for 2.0 will look like 
 this (assuming 2 milestone and 1 rc):


 1) gwt-2.0.0-m1.zip2) gwt-2.0.0-m2.zip3) gwt-2.0.0-rc1.zip4) gwt-2.0.0.zip
 Note that we would always include the RC number, even if there's just one 
 (because you never know if another one is coming).


 I'm very happy to report that there seems to be no need to change even a 
 single line of code, as best I can tell. (Thank you to whomever wrote the 
 version string parsing code to ignore non-digit prefixes and suffixes.) Thus, 
 by simply following this convention when we set GWT_VERSION in the continuous 
 build, everything should work just fine.


 -- Bruce
 P.S. No, Joel, we can't start counting at 0, even though it makes more sense 
 :-) I can read your mind.





--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Prettier GWT version names for upcoming 2.0 releases

2009-08-12 Thread Bruce Johnson
Duh, Kelly. Everybody knows that you always start counting at 1 when there's
a number immediately following a space or a non-digit and you start counting
at 0 when there's a number that immediately follows a period. It's such a
logical and obvious system that I thought the rules would be self-evident.
On Wed, Aug 12, 2009 at 9:24 AM, Kelly Norton knor...@google.com wrote:

 No, no, Joel, we will start counting at 1 not 0. The first release will be
 gwt-2.1.1-m1.
 I think the naming scheme is good (even if sometimes starts with 0, other
 times with 1).

 /kel

 On Wed, Aug 12, 2009 at 9:12 AM, Joel Webber j...@google.com wrote:

 Makes sense to me. So the first one will be gwt-2.0.0-m0, right?


 On Tue, Aug 11, 2009 at 11:40 PM, Bruce Johnson br...@google.com wrote:

 Mostly, this writeup is aimed at people who have been working on GWT's
 own build-related stuff, but if anyone else has objections, now would be a
 good time to raise them (though it seems unlikely anyone would).

 In the past, we've never had a good naming scheme for distros other than
 the general availability distro.
 For milestones, we used the convention 0.0.rev, which probably scares 
 people off and isn't at all self-descriptive. For RCs
 and GAs, we used major.minor.bugfix (e.g. 1.5.0 was 1.5 RC1, 1.5.1
 was 1.5 RC2, and 1.5.2 was GA). This is all too ad hoc and confusing.

 Here's the new proposal:

 major.minor.bugfix (e.g. 2.1.0, 2.1.1, 2.1.2)
 = This is an official, supported build. Every new minor (or bigger)
 release would start with a bugfix number of 0.

 major.minor.bugfix-rcn (e.g. 2.0.0-rc1, 2.0.0-rc2)
 = This is release candidate build n for the specified upcoming GWT
 release

 major.minor.bugfix-mn (e.g. 2.0.0-m1, 2.0.0-m2)
 = This is milestone build n for the specified upcoming GWT release

 In other words, the stream of announced code drops for 2.0 will look like
 this (assuming 2 milestone and 1 rc):

 1) gwt-2.0.0-m1.zip
 2) gwt-2.0.0-m2.zip
 3) gwt-2.0.0-rc1.zip
 4) gwt-2.0.0.zip

 Note that we would always include the RC number, even if there's just one
 (because you never know if another one is coming).

 I'm very happy to report that there seems to be no need to change even a
 single line of code, as best I can tell. (Thank you to whomever wrote the
 version string parsing code to ignore non-digit prefixes and suffixes.)
 Thus, by simply following this convention when we set GWT_VERSION in the
 continuous build, everything should work just fine.

 -- Bruce

 P.S. No, Joel, we can't start counting at 0, even though it makes more
 sense :-) I can read your mind.



 



 --
 If you received this communication by mistake, you are entitled to one free
 ice cream cone on me. Simply print out this email including all relevant
 SMTP headers and present them at my desk to claim your creamy treat. We'll
 have a laugh at my emailing incompetence, and play a game of ping pong.
 (offer may not be valid in all States).


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Prettier GWT version names for upcoming 2.0 releases

2009-08-12 Thread Bruce Johnson
Senator Blum,

Do you mean disturbing as in
1) revolting,
2) distressing, or
3) disordering?

It seems that mathematics has successfully survived similar notational
issues, such as the whole X vs. X' thing.

Willing to give it a chance?

On Wed, Aug 12, 2009 at 4:47 PM, Scott Blum sco...@google.com wrote:

 I find the fact that 2.0.0 is now ambiguous to be disturbing, admiral.

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Prettier GWT version names for upcoming 2.0 releases

2009-08-12 Thread Bruce Johnson
The version update notification thing is admittedly a problem, and so it's
true we maybe would need to tweak that. Not changing code most certaily
wasn't the justification for the naming scheme I proposed (slap me the day I
let that be a reason to justify a lame approach).

Alternate proposals, naysayers?

On Wed, Aug 12, 2009 at 6:49 PM, John Tamplin j...@google.com wrote:

 On Wed, Aug 12, 2009 at 6:39 PM, Bruce Johnson br...@google.com wrote:

 Senator Blum,

 Do you mean disturbing as in
 1) revolting,
 2) distressing, or
 3) disordering?

 It seems that mathematics has successfully survived similar notational
 issues, such as the whole X vs. X' thing.


 I dislike the fact that normal ordering rules do no apply here.  For
 example, you promoted the fact that version checking code doesn't have to
 change, it does -- otherwise, you won't get prompted to upgrade from
 2.0.0-rc1 to 2.0.0.

 I would also prefer 2.0.0-ms1 rather than -m1 for better clarity and
 symmetry with -rc1.


 Willing to give it a chance?


 I don't feel strongly enough to fight hard for something different, but I
 would prefer having a straightforward comparison do the right thing.  We can
 certainly make the comparator understand the particular naming scheme, but
 that doesn't do well when/if we decide to change it (as it happens, that
 isn't a problem for older versions but it might be for future versions if we
 change the scheme).

 --
 John A. Tamplin
 Software Engineer (GWT), Google


 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: DTO compiler optimization

2009-08-11 Thread Bruce Johnson
There's sometimes an important difference between the kind of object model
that is appropriate to send to the client and one you'd use on the server.
That's the reason we haven't historically tried to make it easier to do
no-brainer sharing of server-side object models to the client (i.e.
because it seems likely on average there would be way too much wasted data
transferred, which would lead to slowness). Clearly, you see that issue,
too, based on your suggestion.
How well would the transient keyword or the @GwtTransient annotation
satisfy the use case you gave?

On Mon, Aug 10, 2009 at 1:10 PM, Nathan Wells nwwe...@gmail.com wrote:


 I have hesitated to bring this up, since I'm relatively new to GWT,
 and I would hate to waste anyone's time with explaining what is
 hopefully common knowledge to me.

 Specifically, I thinking about the DTO problem. I think the general
 opinion about DTOs is that they are a necessary evil when working with
 GWT. And let me say, they are a very minor blemish on a life-saving
 framework. But, It seems to me that the problem has a more elegant
 solution. I would propose that all we need to do is increase the
 granularity of GWT compiler control.

 For clarification, I would like to be able to tell the compiler at the
 class member level (either through annotations or *.gwt.xml) what
 should be client-side and what should be server-side. As an example,
 compiling the following class wouldn't be a problem:

 class Foo implements Serializable {

  @ServerOnly
  static long serialVersionUID = 325490285;

  //default, of course compiles to java byte-code and js.
  String bar;

  @ServerOnly
  void setBar(String bar) {
//a method which might reference un-emulated JRE classes
  }

  String getBar() {
return bar;
  }

 }

 I hope that makes sense... that way, our the same class could be used
 on server and client side. Hurray for OO!

 Again, I'm sure there are some unforeseen consequences of this design,
 not the least of which is the possibility that it would require
 basically rebuilding the GWT compiler. I'm just hoping that this
 discussion might answer other n00b questions in the future :)

 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Prettier GWT version names for upcoming 2.0 releases

2009-08-11 Thread Bruce Johnson
Mostly, this writeup is aimed at people who have been working on GWT's own
build-related stuff, but if anyone else has objections, now would be a good
time to raise them (though it seems unlikely anyone would).

In the past, we've never had a good naming scheme for distros other than the
general availability distro.
For milestones, we used the convention 0.0.rev, which probably
scares people off and isn't at all self-descriptive. For RCs
and GAs, we used major.minor.bugfix (e.g. 1.5.0 was 1.5 RC1, 1.5.1
was 1.5 RC2, and 1.5.2 was GA). This is all too ad hoc and confusing.

Here's the new proposal:

major.minor.bugfix (e.g. 2.1.0, 2.1.1, 2.1.2)
= This is an official, supported build. Every new minor (or bigger) release
would start with a bugfix number of 0.

major.minor.bugfix-rcn (e.g. 2.0.0-rc1, 2.0.0-rc2)
= This is release candidate build n for the specified upcoming GWT
release

major.minor.bugfix-mn (e.g. 2.0.0-m1, 2.0.0-m2)
= This is milestone build n for the specified upcoming GWT release

In other words, the stream of announced code drops for 2.0 will look like
this (assuming 2 milestone and 1 rc):

1) gwt-2.0.0-m1.zip
2) gwt-2.0.0-m2.zip
3) gwt-2.0.0-rc1.zip
4) gwt-2.0.0.zip

Note that we would always include the RC number, even if there's just one
(because you never know if another one is coming).

I'm very happy to report that there seems to be no need to change even a
single line of code, as best I can tell. (Thank you to whomever wrote the
version string parsing code to ignore non-digit prefixes and suffixes.)
Thus, by simply following this convention when we set GWT_VERSION in the
continuous build, everything should work just fine.

-- Bruce

P.S. No, Joel, we can't start counting at 0, even though it makes more sense
:-) I can read your mind.

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Add GWT#getUserAgentProperty()

2009-08-07 Thread Bruce Johnson
Let me play devil's advocate, at least against the idea of returning the
string directly. I fear that making this value easily accessible will
encourage people to write conditional tests all over the place, which is
brittle (i.e. because we're very subtly locked into particular user.agent
values) and less optimal (because it isn't clear that the resulting patterns
will optimize well). I guarantee you people will create maps of (user agent
string key) = (functor), which will thoroughly default compiler
optimizations.
Can you talk a bit more about the motivation, so we could consider
alternatives?

On Fri, Aug 7, 2009 at 10:50 AM, Ray Ryan rj...@google.com wrote:

 I say where's the unit test?


 On Fri, Aug 7, 2009 at 7:14 AM, j...@google.com wrote:


 On 2009/08/07 13:56:08, jlabanca wrote:


 So there's one problem here: The GWT class is in the Core module, which
 doesn't (and shouldn't) depend upon the UserAgent module. I think that
 to get this right, we'll need to do one of the following things:
 - Add this code to some class in User. Not my favorite option.
 - Add a new UserAgent module that lives in its own package, so that we
 can add UserAgent-related stuff to a class there. Perhaps
 com.google.gwt.ua.UserAgent?
   - I kind of like this option, because (a) it gets UserAgent out of the
 user packgage, where it never should have been in the first place, and
 (b) it gives me a place to put other UserAgent-related methods I need to
 add.

 What say you?

 http://gwt-code-reviews.appspot.com/57804




 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Inlining nocache.js

2009-08-07 Thread Bruce Johnson
2 requests is very impressive, Arthur! This is the sort of conscientiousness
(i.e. for optimizing user experience) I hope all GWT developers would strive
for. Nice work.
And yes, we'd like to help you get that down to 1, too.

On Fri, Aug 7, 2009 at 9:43 AM, Arthur Kalmenson arthur.k...@gmail.comwrote:


 I'd love to see this in the trunk too. We have only 2 round trips on
 start up now, thanks to ClientBundle. Getting it down to one will be
 very slick!

 --
 Arthur Kalmenson



 On Fri, Aug 7, 2009 at 8:41 AM, Cameron Braidcame...@braid.com.au wrote:
  I'd be keen to see this land in trunk !
 
  Cam
 
  2009/8/7 John Tamplin j...@google.com
 
  On Fri, Aug 7, 2009 at 3:51 AM, George Georgovassilis
  g.georgovassi...@gmail.com wrote:
 
  I'd like to save first time visitors that roundtrip to fetch
  nocache.js. Instead I've declared the module HTML page as non-
  cacheable (works nice thanks to E-Tag) and moved images and GWT-
  compiler output to a fully cacheable directory.
 
  After inlining nocache.js into the module HTML I had to change the
  paths to the XYZ.cache.html permutations, but couldn't get RPC to work
  reliably across all browsers.
 
  Is there a way to do this cleanly?
 
  There is a Google-internal linker that does this, and will be cleaned up
  and moved to GWT itself in the near future.  I don't know an exact
 timeframe
  for this however.
 
  --
  John A. Tamplin
  Software Engineer (GWT), Google
 
 
 
 
  
 

 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Inlining nocache.js

2009-08-07 Thread Bruce Johnson
The best you can do for a cold cache is 2 round-trips (including the host
page) if you inline the selection script (.nocache.js) in the host page. You
definitely do want the compiled script (.cache.html) *not* embedded in the
host page, so that it can have cache forever semantics. Then, when users
have a warm cache, it's literally exactly 1 round-trip for the module to
start.
BTW, once you do inline the selection script, it will be more important to
get the HTTP semantics just right. Although it says nocache, the proper
semantics are must-revalidate, so typically, the host page won't have
changed on the server, and thus it becomes an If-Modified-Since (IMS)
request with a Not-Modified (NM) response.

In other words, the best case for a warm cache is this 1 round-trip: IMS =
NM, which is very cheap because there's no response payload. Your code can
start essentially instantly on a decent network.

On Fri, Aug 7, 2009 at 11:39 AM, Arthur Kalmenson arthur.k...@gmail.comwrote:


  Are you counting fetching the host HTML page?  With this approach, the
  selection script is done away with but you still have a fetch for the
  compiled script so that it can remain permanently cacheable.  You could
  theoretically inline it into the host page, but since none of that is
  cacheable that would only make sense for very tiny compiled outputs.

 I don't think firebug counts the initial request to fetch the host
 page, so two requests. One for the nocache.js and another for the
 cachable HTML. With the inlining of the nocache.js file, you could get
 it down to 0 requests if the retrieved page is cached forever.

 Are you saying to inline the generated JS in the host page too? How
 could you do that? Don't you need the selector script to pick the
 correct compiled version? Maybe I'm just not understanding what you
 mean.

  2 requests is very impressive, Arthur! This is the sort of
 conscientiousness
  (i.e. for optimizing user experience) I hope all GWT developers would
 strive
  for. Nice work.
  And yes, we'd like to help you get that down to 1, too.

 Thanks Bruce! But it's really all thanks to Bob's ClientBundle :)

 --
 Arthur Kalmenson



 On Fri, Aug 7, 2009 at 9:57 AM, John Tamplinj...@google.com wrote:
  On Fri, Aug 7, 2009 at 9:43 AM, Arthur Kalmenson arthur.k...@gmail.com
  wrote:
 
  I'd love to see this in the trunk too. We have only 2 round trips on
  start up now, thanks to ClientBundle. Getting it down to one will be
  very slick!
 
  Are you counting fetching the host HTML page?  With this approach, the
  selection script is done away with but you still have a fetch for the
  compiled script so that it can remain permanently cacheable.  You could
  theoretically inline it into the host page, but since none of that is
  cacheable that would only make sense for very tiny compiled outputs.
 
  Note that there is a cost, as your host HTML page now can't be cached
 (since
  the selection script essentially runs in the server).  If your host page
 is
  complex, this may be a net loss.  You could try leaving it cacheable but
  setting Vary headers for the pieces that you use to make the decision,
 but
  my understanding is that many caches do not handle this properly.
 
  Also, you cannot use any deferred binding properties that can't be
  determined by the HTTP fetch of your host page.
 
  --
  John A. Tamplin
  Software Engineer (GWT), Google
 
  
 

 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: lightweight events for runAsync in draft mode

2009-08-07 Thread Bruce Johnson
On Fri, Aug 7, 2009 at 12:20 PM, Lex Spoon sp...@google.com wrote:

 One place I would quibble about is compiler transforms that we
 consider to be optimizations, because an optimization should preserve
 behavior.  Thus, a test case should not have any easy way to be
 sensitive to the choice.  Going back to the code splitting example, it
 would be within spec for the code splitter *not* to generate a
 download event for a particular split point, even though it's not that
 clever right now.  That flexibility makes it very hard to think up an
 API for querying the code splitter's settings.  Certainly on and
 off isn't enough information, at least going forward.


The sorts of compiler optimizations tests I was referring to were
to-be-written tests of complex optimizations where the whole point of the
test is to ensure the compiler is doing exactly the transform we intend it
to. IOW, the sort of stuff Scott is working on testing infrastructure for.

I mostly see your point about the splitter, and in cases like that where you
aren't trying to test the exact decisions/implementation, then it seems
reasonable to have something that's a bit looser. OTOH, one could argue that
it's good to have tests that verify specific behavior that is intended for
the current implementation rather than adherence to the spec.


 Would anyone see anything bad, for the narrow code splitting example,
 with adding a LWM event saying split point requested, but code
 already present?  This approach would mean I can finish up the
 runAsync LWM patch on Monday or Tuesday.


No objections here, especially if the code already present event is
meaningful for web
mode where indeed the needed code has already been downloaded. That
could be useful thing to know at runtime in production.


 Looks good to me.  For the short term, how does it strike you to also
 have a way to query config and binding properties?  While it might not
 be what we want in the long run, it looks very practical right now.
 For example, disable this test when user.agent=opera.  Another
 example would be, disable this test if class metadata is off.  Given
 the near-term state of module specifications, querying the property
 looks more direct than needing to define a class that corresponds to
 them.


I like the pragmatism, but I fear the repercussions of a intermediate
generalized solution that would encouraged the string literal names of
properties and flags all over client code. I'd rather we switched things
over to The Right Way (whatever we deem that to be) rather than have a
half-done waypoint. However, The Right Thing could be something very
different than what I proposed -- see the JUnit discussion below.

Also, while thinking about how to set up the annotations, or and
 and would seem helpful in some cases.  Run this test if the agent is
 iphone *or* the agent is android.  Run this test if the agent is
 iphone *and* class metadata is on.  So it would be good to include
 them, or something equally powerful, in the supported annotations.


My idea here might be considered a hack. I was thinking that and could be
represented as pairs of (to, from) tuples, and that or could be
represented as separate test cases that simply delegate, such as

@RunWhen(Browser.class, Browser_IPhone.class)
public void testIPhone() {
  doTestIPhoneOrAndroid();
}

@RunWhen(Browser.class, Browser_Android.class)
public void testAndroid() {
  doTestIPhoneOrAndroid();
}

private void doTestIPhoneOrAndroid() {
   ...
}

Now that I look at it, it's kinda hacky, but then again it may not be very
common. Hopefully not, or we're not doing a good job of creating portable
APIs.

On the downside, using assumeThat() means that the test runner still
 has to run the tests.  With annotations, the test runner can know
 ahead of time which tests are relevant on which platforms.  Would our
 test runners make good use of that information?  Enough to merit the
 implementation time and the larger GWT user manual?


I think assumeThat() might indeed be a good general solution, along the
lines of your examples. It subsumes the annotations I proposed, and it's
nice that it could be generalized easily to any sort of tests. Also, it
*might* be possible for the compiler to optimize it statically somewhat such
that if a test contained assumeThat(X) where X was statically know to be
false, the whole method could go away. (Of course, we'd need that behavior
to be generalized somehow -- I'm not proposing JUnit-specific compiler
behavior, which would be way too hacky).

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Questions and concerns with HandlerManager

2009-08-07 Thread Bruce Johnson
Are there lots of folks on the list that have the same sorts of feedback on
HandlerManager? I ask because, as a fly on the wall here, this conversation
doesn't sound like it's converging, and I'd like to declare this thread dead
for now so that we can move onto other things. We have a lot of other things
to be giving attention to so that we can get GWT 2.0 out. If we need to
revisit these issues in the future, we certainly can.

-- Bruce

On Fri, Aug 7, 2009 at 4:43 PM, Ed post2edb...@hotmail.com wrote:


class HandlerManagerSource { ... }

 Interesting how you put Generics in the  HandlerManager 
 Of course this is a no go area as you explained.
 Try my HandlerManager scenario like I described above; only the event
 contains the actual source generics, and of course not he
 HandlerManager...
 Let me know if you want some code of this ?  So I can grep something
 together... I might need a bit of time for that... and let me know
 where to send it to?

  To be honest, I'm having a really hard time understanding the structure
  you're describing. Maybe a bit of (heavily elided) code would help
 clarify
  it?

 H... I could give some code, but I think in words the need for the
 interceptor is clear:
 The user selects something and the interceptor will indicate if the
 selection is allowed to be committed (like a 2-phase db transaction)
 or not..
 Can you give me more details about what you not understand here
 please?
 I am afraid that the code only make it less understandable as it's
 complex.. due to the asynchrone behavior.


  If you could describe *precisely* what you think should be opened up in
  HandlerManager, it would help me to make a reasonable judgment. As it
  stands, it all seems very vague to me.


 H... can't remember the *precise* details anymore... it was
 already some time ago... :(
 One thing I remember was that I wanted to change the source in the
 HandlerManager, which wasn't possible as it can only be set through
 the constructor..




 On Aug 7, 10:07 pm, Joel Webber j...@google.com wrote:
  On Fri, Aug 7, 2009 at 1:34 PM, Ed post2edb...@hotmail.com wrote:
 
   It costs me a bit to go back in time as these issues are already from
   some time back..
   Let me try to give some input on these points.
 
   2) I don't fully understand what the problem is here. Could you give
   an example that shows that it breaks?
 
  It's actually worse than I thought. If I add a type parameter to
  HandlerManager, I get something like
 
class HandlerManagerSource { ... }
 
  But I have no way to specify the source type when it's declared in
 Widget:
 
class Widget {
  HandlerManager??? handlerManager;
}
 
  The Source type parameter would force me to declare a separate
  HandlerManager field in each subclass of Widget. But then I can't
 subclass a
  widget and get the source type correct -- I'd need *another*
 handlerManager
  field.
 
  3) Ok, let me give an example and hope I have some luck here... ;) I
 
 
 
   remember we had this same discussion about primitive-simple Widget
   interfaces, you asked me the same thing (together with Bruce), I gave
   some concrete interfaces.. and never heard anyting :(...
 
   My app is very simple in layout: a menu on the left and the content on
   the right. You can navigate to another piece of content by clicking on
   the next/prev button in the content screen part or by clicking in the
   menu.
   If the user navigates away from the current content screen (by
   clicking next/previous... or the menu), and the current shown content
   isn't valid, he will be asked for a confirmation. If yes, the action
   (=going to the new content and saving the current shown content) will
   be performed, if no, the action is canceled and he stays on the same
   content screen.
   I implement this through an interceptor (aynchrone in this case) that
   will take care of the confirmation and some other side-actions. It
   makes it clean and transparent.
 
  What I do roughly: I inject the interceptor in the presenter. When the
 
   select value in the model changes it will first inform the interceptor
   with a callback. The call back contains different methods that are
   called by the HandlerManager implementation to indicate success/
   cancelation. In case of success (the user clicks Ok), it will inform
   the callback about this such that the property change can be made
   permanent. The handlermanager will then inform the listeners and after
   that call the callback to indicate that they are all informed
   If you need more details, let me know ?
 
  To be honest, I'm having a really hard time understanding the structure
  you're describing. Maybe a bit of (heavily elided) code would help
 clarify
  it?
 
  After describing the above, you might understand that it's desirable
 
   to open up the GWT Handlermanager to add these functionality directly
   to it, instead of making a copy and changing it.. Probably this is
   need in 

[gwt-contrib] Re: Questions and concerns with HandlerManager

2009-08-07 Thread Bruce Johnson
Dead! (for now)

On Fri, Aug 7, 2009 at 5:10 PM, Ed post2edb...@hotmail.com wrote:


 Then I would declare it dead Bruce!

 With all do respect: I do very complex things with GWT and do walk on
 his boundaries...
 And to my experience - I am a bit lonely out here... (yes I know
 it sounds a bit arrogant...)
 And yes, I agree that you guys have better things to do to make GWT
 first more mature before they support these complex things...

 Buttt... it would be nice if these things aren't forgotten and put on
 the nice-to-have list... and not on the forget-list.

 I think that adding (more) primitive (characteristic) widget/panel
 interfaces, like we discussed before has an higher priority, so I hope
 you guys add this to gwt 2.0. I am still suprised about the few people
 complain about this. But I have pointed out concrete clear cases that
 show the need for this...(like you asked before)

 Just my thoughts...
 BTW: Joe if you want some code about my HandlerManager to be able to
 define the source through generics, let me know...


 On Aug 7, 10:55 pm, Bruce Johnson br...@google.com wrote:
  Are there lots of folks on the list that have the same sorts of feedback
 on
  HandlerManager? I ask because, as a fly on the wall here, this
 conversation
  doesn't sound like it's converging, and I'd like to declare this thread
 dead
  for now so that we can move onto other things. We have a lot of other
 things
  to be giving attention to so that we can get GWT 2.0 out. If we need to
  revisit these issues in the future, we certainly can.
 
  -- Bruce
 
  On Fri, Aug 7, 2009 at 4:43 PM, Ed post2edb...@hotmail.com wrote:
 
  class HandlerManagerSource { ... }
 
   Interesting how you put Generics in the  HandlerManager 
   Of course this is a no go area as you explained.
   Try my HandlerManager scenario like I described above; only the event
   contains the actual source generics, and of course not he
   HandlerManager...
   Let me know if you want some code of this ?  So I can grep something
   together... I might need a bit of time for that... and let me know
   where to send it to?
 
To be honest, I'm having a really hard time understanding the
 structure
you're describing. Maybe a bit of (heavily elided) code would help
   clarify
it?
 
   H... I could give some code, but I think in words the need for the
   interceptor is clear:
   The user selects something and the interceptor will indicate if the
   selection is allowed to be committed (like a 2-phase db transaction)
   or not..
   Can you give me more details about what you not understand here
   please?
   I am afraid that the code only make it less understandable as it's
   complex.. due to the asynchrone behavior.
 
If you could describe *precisely* what you think should be opened
 up in
HandlerManager, it would help me to make a reasonable judgment. As it
stands, it all seems very vague to me.
 
   H... can't remember the *precise* details anymore... it was
   already some time ago... :(
   One thing I remember was that I wanted to change the source in the
   HandlerManager, which wasn't possible as it can only be set through
   the constructor..
 
   On Aug 7, 10:07 pm, Joel Webber j...@google.com wrote:
On Fri, Aug 7, 2009 at 1:34 PM, Ed post2edb...@hotmail.com wrote:
 
 It costs me a bit to go back in time as these issues are already
 from
 some time back..
 Let me try to give some input on these points.
 
 2) I don't fully understand what the problem is here. Could you
 give
 an example that shows that it breaks?
 
It's actually worse than I thought. If I add a type parameter to
HandlerManager, I get something like
 
  class HandlerManagerSource { ... }
 
But I have no way to specify the source type when it's declared in
   Widget:
 
  class Widget {
HandlerManager??? handlerManager;
  }
 
The Source type parameter would force me to declare a separate
HandlerManager field in each subclass of Widget. But then I can't
   subclass a
widget and get the source type correct -- I'd need *another*
   handlerManager
field.
 
3) Ok, let me give an example and hope I have some luck here... ;) I
 
 remember we had this same discussion about primitive-simple Widget
 interfaces, you asked me the same thing (together with Bruce), I
 gave
 some concrete interfaces.. and never heard anyting :(...
 
 My app is very simple in layout: a menu on the left and the content
 on
 the right. You can navigate to another piece of content by clicking
 on
 the next/prev button in the content screen part or by clicking in
 the
 menu.
 If the user navigates away from the current content screen (by
 clicking next/previous... or the menu), and the current shown
 content
 isn't valid, he will be asked for a confirmation. If yes, the
 action
 (=going to the new content and saving the current shown content

[gwt-contrib] Re: UIBinder

2009-08-05 Thread Bruce Johnson

We're shooting for a milestone drop in a few weeks, and we're planning
for an RC by the end of the quarter. But, you know how predicting
dates goes...

On 8/4/09, Claudemir  Todo Bom claude...@gmail.com wrote:

 is there an ETA for 2.0?

 On Aug 4, 10:42 am, Ray Ryan rj...@google.com wrote:
 How does today strike you? It's headed into gwt trunk, and will be
 part of the 2.0 release.

 On Tuesday, August 4, 2009, brett.wooldridge brett.wooldri...@gmail.com
 wrote:

  Ping.  This not this month any more, it's early next.  Got a
  revised (rough) ETA for UIBinder in SVN?  I would even love to hear
  definitely this month, but we don't know when.

  -Brett

  On Jul 15, 1:25 am, Ray Ryan rj...@google.com wrote:
  It's coming RSN. We're trying to get UiBinder into GWT 2.0. It will
  certainly be in SVN this month or early next.
  I know I've been saying that for a while, but now we're actually, like,
  working to make it happen.

  On Mon, Jul 13, 2009 at 11:05 PM, brett.wooldridge 

  brett.wooldri...@gmail.com wrote:

   I've read the docs for UIBinder in the wiki, and like everyone else
   who has read it, I am anxious to start using it.  However, even
   though
   the doc and examples are in the wiki, I am unable to find the
   UIBinder
   code in svn.  Is it available?   Or can it be made available?  Rough
   or not, documented or not, there are many developers who would like
   to
   start playing with it (and helping to fix issues).

   Thanks
   Brett



 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Async interface black magic

2009-08-03 Thread Bruce Johnson
Although it feels less convenient, the async nature of RPC is actually
valuable for usability. It forces you to think about what to do in the
application UI while a potentially long-running activity is taking place.
When you consider that a network round-trip combined with time spent on the
server could easily take multiple seconds on
average, that's an awful long time to have the UI thread blocked doing
nothing. If it were possible to write blocking
(or even, seemingly blocking) calls, it would be too tempting to not think
about the user experience -- in other words, in most apps the UI would
simply hang --  and it's probably prescibing a horrible user experience.

On Mon, Aug 3, 2009 at 6:57 AM, John Patterson jdpatter...@gmail.comwrote:



 On 3 Aug 2009, at 20:53, Miroslav Pokorny wrote:

 
  The Async interface is necessary because one does not want to use sync
  (blocking) rpc calls back to the server. When using blocking calls the
  entire browser freezes which is especially bad give responses arenot
  instantwous.

 I was suggesting the use of continuations to _mimic_ blocking calls
 but allow the thread to continue.  Then from your Java code you would
 not need to worry about passing in a callback to every service method.

 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: faster size breakdown with non-fractional billing

2009-08-03 Thread Bruce Johnson
Because it's easy to bikeshed: can we make the -soyc (-soycExtra) flag more
like -style in that it has multiple values rather than having two separate
flags? Or is there a rationale for this style that I'm missing.
When Bob V's permutation control changes land, we want to make all of this
sort of stuff fall into the category of deferred binding properties, so that
you could, for example, create one permutaiton with style PRETTY, another
with style DETAILED, etc. Having the -soyc flag follow a name/value pattern
would make it more amenable to this change.

On Mon, Aug 3, 2009 at 8:53 AM, kpro...@google.com wrote:


 On 2009/07/16 22:28:18, Lex wrote:


 I think this is a great step forward.  This version of Soyc is much more
 intuitive, and will make it much easier to explain.  There are a couple
 of things that occurred to me, but otherwise it LGTM:

 1. Is the detailed output truly a more detailed version of the version
 that uses JavaToJavaScriptMaps?  I think that because of inlining, etc.,
 and the resulting partial billing, you will end up with different
 cumulative sizes for fragments.  This is probably fine, but if I were
 using Soyc and wanted to get more detailed information, and got
 different numbers, I would think that there is a bug.  How can we set
 expectations correctly?

 2) I'm not the biggest fan of having two compiler flags, -soyc and
 -soycExtra, but if you are, then it's fine.

 A few small comments are in the code.

 http://gwt-code-reviews.appspot.com/51804

 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: faster size breakdown with non-fractional billing

2009-08-03 Thread Bruce Johnson
Based on what you said, I like a lot as is. Thanks for explaining it.

On Mon, Aug 3, 2009 at 2:52 PM, Lex Spoon sp...@google.com wrote:

 On Mon, Aug 3, 2009 at 1:58 PM, Bruce Johnsonbr...@google.com wrote:
  Because it's easy to bikeshed: can we make the -soyc (-soycExtra) flag
 more
  like -style in that it has multiple values rather than having two
 separate
  flags? Or is there a rationale for this style that I'm missing.
  When Bob V's permutation control changes land, we want to make all of
 this
  sort of stuff fall into the category of deferred binding properties, so
 that
  you could, for example, create one permutaiton with style PRETTY, another
  with style DETAILED, etc. Having the -soyc flag follow a name/value
 pattern
  would make it more amenable to this change.

 There is no immediate use case for the detailed information.  However,
 I hated to remove all that code when we might need it later.  Thus, I
 left -soyc as the normal use case, and added -XsoycExtra for those use
 cases that might conceivably need it in the future.  It's not a
 documented option, and it's not listed when you run the compiler with
 -help.

 How does that sound, Bruce and Kathrin (and anyone else interested)?

 It seems very helpful if -soyc is the only option users need to
 supply.  There is even talk of having the -soyc option go ahead and
 run the dashboard generator, thus giving you final HTML output without
 needing to add the second step.


 On a related note, I agree with Kathrin that it's not precisely
 detailed or extra information that this flag gives you.  It's
 different information, different enough that you can't compute one
 from the other.  I named it extra in a hurry.  Can anyone think of
 anything that would be less misleading?


 -Lex


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Web mode stack traces - propose stackElement.getFileName() return 'JavaScript' instead of 'Unknown'

2009-07-31 Thread Bruce Johnson
I prefer Unknown because it's an indication you are looking at suboptimal
stack trace output. JavaScript makes it sound like we actually intend for
you to be looking at that output, when in fact, you really want to use
symbol maps to reverse lookup the Java idents.
On Fri, Jul 31, 2009 at 2:42 PM, Fred Sauer fre...@google.com wrote:

 Web mode stack traces are steadily improving. You can even get line numbers
 (by inheriting com.google.gwt.core.EmulateJsStack).

 Without the extra instrumentation you web mode stack traces might look
 something like this:
 at Unknown.$NullPointerException()
 at Unknown.onClick_6()
 at Unknown.dispatch()
 at Unknown.$fireEvent()
 at Unknown.$fireEvent_0()
 at Unknown.$fireEvent_1()
 at Unknown.fireNativeEvent()
 at Unknown.onBrowserEvent()
 at Unknown.dispatchEventImpl()
 at Unknown.dispatchEventAndCatch()
 at Unknown.anonymous()

 I was thinking it might make slightly more sense if we replaced 'Unknown'
 with 'JavaScript', e.g.

 at JavaScript.$NullPointerException()
 at JavaScript.onClick_6()
 at JavaScript.dispatch()
 at JavaScript.$fireEvent()
 at JavaScript.$fireEvent_0()
 at JavaScript.$fireEvent_1()
 at JavaScript.fireNativeEvent()
 at JavaScript.onBrowserEvent()
 at JavaScript.dispatchEventImpl()
 at JavaScript.dispatchEventAndCatch()
 at JavaScript.anonymous()


 Anyone have strong opinions wither way?

 --
 Fred Sauer
 Developer Advocate
 Google Inc. 1600 Amphitheatre Parkway
 Mountain View, CA 94043
 fre...@google.com




 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Web mode stack traces - propose stackElement.getFileName() return 'JavaScript' instead of 'Unknown'

2009-07-31 Thread Bruce Johnson
)



 On Fri, Jul 31, 2009 at 5:00 PM, Fred Sauer fre...@google.com wrote:

 I can't wait!


 On Fri, Jul 31, 2009 at 4:58 PM, Bruce Johnson br...@google.com wrote:

 4 cheers for Bob! w00t, w00t, w00t and w00t.
 Also, note that this is phase 1 in a larger plan. For Bob's next feat of
 magic, he's going to provide better control over permutations, allowing you
 to, say, include the (expensive) stack traces below for only a small
 percentage of users -- as well as all sorts of other cool, unrelated
 things that involve carving up your permutation space more powerfully


 On Fri, Jul 31, 2009 at 4:36 PM, Ray Cromwell cromwell...@gmail.comwrote:



 On Fri, Jul 31, 2009 at 4:33 PM, Fred Sauer fre...@google.com wrote:


 You get the following, which notably can be pasted into Eclipse's
 Stack Trace Console view so that the filename:lineNumber pairs become
 clickable hyperlinks:



 That's just awesome beyond belief.









 --
 Fred Sauer
 Developer Advocate
 Google Inc. 1600 Amphitheatre Parkway
 Mountain View, CA 94043
 fre...@google.com






 --
 Fred Sauer
 Developer Advocate
 Google Inc. 1600 Amphitheatre Parkway
 Mountain View, CA 94043
 fre...@google.com




 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: patch to enable web tests using HtmlUnit

2009-07-30 Thread Bruce Johnson
Fantastic!

On Thu, Jul 30, 2009 at 1:52 PM, Ray Ryan rj...@google.com wrote:

 WAHOO!


 On Thu, Jul 30, 2009 at 1:48 PM, Amit Manjhi amitman...@google.comwrote:

 Thanks Scott. Commited the changes at r5844 with a fix the first thing and
  a TODO for the second thing.

 On Thu, Jul 30, 2009 at 10:48 AM, sco...@google.com wrote:

 LGTM with nits.


 http://gwt-code-reviews.appspot.com/54809/diff/1096/1130
 File user/src/com/google/gwt/junit/JUnitShell.java (right):

 http://gwt-code-reviews.appspot.com/54809/diff/1096/1130#newcode220
 Line 220: + e.g. IE6,IE7,FF2,FF3...;
 Could the exact list be gotten from RunStyleHtmlUnit?  Then you don't
 need to update this message if the set of browsers changes.

 http://gwt-code-reviews.appspot.com/54809/diff/1096/1129
 File user/src/com/google/gwt/junit/RunStyleHtmlUnit.java (right):

 http://gwt-code-reviews.appspot.com/54809/diff/1096/1129#newcode149
 Line 149: threads.add(hut);
 Is there any way to, say, pause here waiting for the other thread to get
 to an okay state that would could call a successful launch?  Might be
 nice to detect  report errors early.


 http://gwt-code-reviews.appspot.com/54809






 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Force emulated stack traces when running JUnit tests?

2009-07-23 Thread Bruce Johnson
Yes, I think we would want to. My point is that we also would want to run
the non-instrumented code. I have to think there could be subtle downstream
behavioral differences (e.g. compiler optimizations that do/don't happen)
based on whether the stack trace code is generated. Thus, I'm saying we
should test both.

On Thu, Jul 23, 2009 at 1:09 PM, BobV b...@google.com wrote:


  Technically, wouldn't it just mean we should not pin down the value of
 the
  deferred binding property that controls it? It would double the number of
  permutations, tho.

 But wouldn't we actually want to run the instrumented code, to make
 sure that the instrumentation itself doesn't break something?

 --
 Bob Vawter
 Google Web Toolkit Team

 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



GWT 1.7 Now Available

2009-07-22 Thread Bruce Johnson
Hi everyone,

(Most people are probably already quite aware of the new GWT 1.7 release,
but we wanted to send out an official announcement we could pin to the top
of the message list.)

GWT 1.7 is a minor update that adds better support for Internet Explorer 8,
Firefox 3.5, and Safari 4. Each of these new browser versions introduced at
least one change that negatively impacted compiled GWT modules, so we
recommend that you do update to GWT 1.7 and recompile your existing
applications to ensure that they work with the latest versions of browsers.
No source code changes on your part should be required.

Normally, a minor update such as this would have been named 1.6.5 (the
previous latest version of GWT was 1.6.4), but we did add the value ie8 to
the user.agent deferred binding property, which could impact projects
using custom deferred binding rules that are sensitive to that property.
Thus, we went withGWT 1.7 rather than GWT 1.6.5, to indicate that you may
need to pay attention to that change. Details are in the release notes.

In every other respect, this is just a bugfix release, so in the vast
majority of cases, the update-recompile process should be nearly effortless.

Download here:
http://code.google.com/p/google-web-toolkit/downloads/list?can=1q=GWT+1.7.0

Cheers,
Bruce, on behalf of your friendly GWT Team

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To post to this group, send email to Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Generators and hosted mode refresh

2009-07-22 Thread Bruce Johnson
@Scott: Hasn't there been a subtle shift in this regard? With GWT 1.5,
didn't we conclude that loading classes at least for annotations would make
the most sense?
I think now that we have enhanced the CCL, for deRPC, to delegate to grey
area classes that aren't strictly in the client space, maybe we actually
could run generators in the CCL.

On Wed, Jul 22, 2009 at 10:24 AM, Brian Stoler bsto...@google.com wrote:

 Hi Scott,
 Gin uses reflection because it reuses the heavy lifting from Guice, which
 is not GWT-aware.

 Seems like both issues could be resolved if generators were loaded in the
 client code ClassLoader. Is there a technical or philosophical problem with
 doing so? I can understand it might not be at the top of the priority list
 right now, but wanted to know if it would be a bad thing if someone were to
 propose a patch.

 -brian


 On Wed, Jul 22, 2009 at 7:20 AM, Scott Blum sco...@google.com wrote:

 Generally speaking, you do not want to use reflection inside a generator
 to try to view the client code.  That's what TypeOracle is for, that's the
 supported way of viewing client code.
 As for the separate issue of modifying and recompiling a generator itself
 while running, you're right in that we don't explicitly support it.  Using
 unit tests during generator development as you suggest sounds like a good
 strategy to me.  In some cases, you might also get your IDE to do a
 hot-replace if you modify the code while debugging, but this can be flaky.

 On Wed, Jul 22, 2009 at 6:45 AM, Alen Vrecko alen_vre...@yahoo.comwrote:


 Hi,

 continuing from
 http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/c65457fa4df351c1
 . Sorry for the added garbage could have known better to post it here
 in the first place.

 I see generators as en extension to client code therefore I expect
 them to behave a bit like client code namely refresh recompiles the
 generator and client class code changes are visible to the generator.

 As recompiling the generator feature goes maybe it is a bit like
 fairytale i.e. not really needed. Will just write the unit tests for
 generators in any case before running the hosted mode and not play
 with the generator on the fly with change code shutdown-start hosted
 mode repeat.

 But seeing the latest class files inside generator is needed for
 refresh to work in some cases. Sure you can do much with TypeOracle
 but you can't instantiate the JType. Afaik there is no bridge between
 a JType and Class type.

 What do you think?

 Cheers
 Alen





 


--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Force emulated stack traces when running JUnit tests?

2009-07-22 Thread Bruce Johnson
On Wed, Jul 22, 2009 at 4:57 PM, Scott Blum sco...@google.com wrote:

 On Wed, Jul 22, 2009 at 4:46 PM, BobV b...@google.com wrote:

 Should running a web-mode test case always turn on the emulated stack
 trace code?


Would always on mean that it generates code even for browsers that have
native stack traces (i.e. FF)?

Generally, as much as I hate to say it, it seems we'd want variations of the
tests both with and without stack trace code, so that we don't inadvertently
break one mode or the other. It is much like -draftCompile in this
respect.

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



[gwt-contrib] GWT 1.7 Now Available

2009-07-13 Thread Bruce Johnson
Hi everyone,

GWT 1.7 is a minor update that adds better support for Internet Explorer 8,
Firefox 3.5, and Safari 4. Each of these new browser versions introduced at
least one change that negatively impacted compiled GWT modules, so we
recommend that you do update to GWT 1.7 and recompile your existing
applications to ensure that they work with the latest versions of browsers.
No source code changes on your part should be required.

Normally, a minor update such as this would have been named 1.6.5 (the
previous latest version of GWT was 1.6.4), but we did add the value ie8 to
the user.agent deferred binding property, which could impact projects
using custom deferred binding rules that are sensitive to that property.
Thus, we went with GWT 1.7 rather than GWT 1.6.5, to indicate that you may
need to pay attention to that change. Details are in the release notes.

In every other respect, this is just a bugfix release, so in the vast
majority of cases, the update-recompile process should be nearly effortless.

Download here:
http://code.google.com/p/google-web-toolkit/downloads/list?can=1q=GWT+1.7.0

Cheers,
Bruce, on behalf of your friendly GWT Team

--~--~-~--~~~---~--~~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~--~~~~--~~--~--~---



  1   2   3   >