google / gwteventbinder

Making GWT EventBus easy
http://google.github.io/gwteventbinder
Apache License 2.0
140 stars 28 forks source link

EventBinder module definition is incompatible with separate compilation landed on GWT trunk #20

Open jnehlmeier opened 10 years ago

jnehlmeier commented 10 years ago

Separate compilation is used to speed up SuperDevMode. It compiles each module on its own and fails on EventBinder.gwt.xml because it only inherits com.google.web.bindery.event.Event but uses classes from com.google.gwt.event.EventBase, e.g. class GwtEvent.

To fix that I locally changed EventBinder.gwt.xml to inherit com.google.gwt.event.EventBase. This seems to work although I am not sure if it wouldn't be better to inherit com.google.gwt.user.User instead.

However after doing so, separate compilation complains that the interface com.google.web.bindery.event.shared.binder.EventBinder is provided by two modules: com.google.web.bindery.event.EventBinder and com.google.gwt.user.User. That's probably because gwteventbinder has reused the shared package already provided by com.google.web.bindery.event.Event. Separate compilation requires that each compilation unit is unique to a single GWT module so I think to fix that problem gwteventbinder classes must be moved to its own package.

You can reproduce the issue by creating a sample application using gwt trunk and gwteventbinder. Then start SuperDevMode using -Xincremental.

tbroyer commented 10 years ago

No need to rename the package AFAICT, it should be enough to add includes/excludes to the <source> (except maybe they'd have to be added to web.bindery.event.Event)

jnehlmeier commented 10 years ago

Hm wouldn't that mean that GWT needs include/excludes rules for all gwteventbinder classes and gwteventbinder in turn needs include/excludes rules for all GWT classes in that shared package? Sounds brittle to me as both need to be updated if a new class is introduced in that package by either GWT or gwteventbinder. Before doing such a thing I would prefer integrating gwteventbinder into GWT proper.

Well or just live with a breaking change and rename the package. Search and replace can easily fix this. Personally I don't have problems with easily fixable breaking changes.

tbroyer commented 10 years ago

Each module could have includes for its own files. But if GWT would have to be changed, then yes I agree EventBinder should rather use a different package.

gkdn commented 10 years ago

Superdevmode changes just landed this week; just give us some time ;) I don't think this will cause too much trouble; we will take care of this once we start updating the libs...

On Wed, Apr 23, 2014 at 4:28 AM, Thomas Broyer notifications@github.comwrote:

Each module could have includes for its own files. But if GWT would have to be changed, then yes I agree EventBinder should rather use a different package.

— Reply to this email directly or view it on GitHubhttps://github.com/google/gwteventbinder/issues/20#issuecomment-41150229 .