Skip to content
This repository has been archived by the owner on Nov 11, 2022. It is now read-only.

Commit

Permalink
Use fully-qualified name in generated class to fix references to clas…
Browse files Browse the repository at this point in the history
…ses in a different package.

Fixes #28.
  • Loading branch information
ekuefler committed Apr 20, 2015
1 parent af0206f commit 46d3e72
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 11 deletions.
Expand Up @@ -89,7 +89,7 @@ private SourceWriter createSourceWriter(
new ClassSourceFileComposerFactory(packageName, simpleName);

composer.setSuperclass(AbstractEventBinder.class.getCanonicalName()
+ "<" + targetType.getName() + ">");
+ "<" + targetType.getQualifiedSourceName() + ">");
composer.addImplementedInterface(eventBinderType.getName());

composer.addImport(EventBinder.class.getCanonicalName());
Expand Down
Expand Up @@ -20,6 +20,7 @@
import com.google.web.bindery.event.shared.EventBus;
import com.google.web.bindery.event.shared.HandlerRegistration;
import com.google.web.bindery.event.shared.SimpleEventBus;
import com.google.web.bindery.event.shared.binder.subpackage.SomeActivity;

/**
* End-to-end test of {@link EventBinder} and associated classes.
Expand Down Expand Up @@ -128,8 +129,20 @@ public void testEventBinder_withHandlersInSuperclass() {
assertEquals(2, presenter.firstAndSecondEventsHandled);
}

// https://github.com/google/gwteventbinder/issues/28
public void testEventBinder_inDifferentPackage() {
EventBus eventBus = new SimpleEventBus();
TestPresenter presenter = new TestPresenter();
SomeActivity.SomeEventBinder binder = GWT.create(SomeActivity.SomeEventBinder.class);
binder.bindEventHandlers(presenter, eventBus);

// Test one event
assertEquals(0, presenter.firstEventsHandled);
eventBus.fireEvent(new FirstEvent());
assertEquals(1, presenter.firstEventsHandled);
}

static class TestPresenter {
public static class TestPresenter {
interface MyEventBinder extends EventBinder<TestPresenter> {}

int firstEventsHandled;
Expand All @@ -139,27 +152,27 @@ interface MyEventBinder extends EventBinder<TestPresenter> {}
int firstEventsWithoutParameterHandled;

@EventHandler
void onFirstEvent(FirstEvent e) {
public void onFirstEvent(FirstEvent e) {
firstEventsHandled++;
}

@EventHandler
void onSecondEvent(SecondEvent e) {
public void onSecondEvent(SecondEvent e) {
secondEventsHandled++;
}

@EventHandler
void onThirdEvent(ThirdEvent e) {
public void onThirdEvent(ThirdEvent e) {
thirdEventsHandled++;
}

@EventHandler(handles = {FirstEvent.class, SecondEvent.class})
void onFirstAndSecondEvent(GenericEvent event) {
public void onFirstAndSecondEvent(GenericEvent event) {
firstAndSecondEventsHandled++;
}

@EventHandler(handles = {FirstEvent.class})
void onFirstEventWithoutParameter() {
public void onFirstEventWithoutParameter() {
firstEventsWithoutParameterHandled++;
}
}
Expand All @@ -177,12 +190,12 @@ void onFirstEventAgain(FirstEvent e) {

@Override
@EventHandler
void onSecondEvent(SecondEvent e) {
public void onSecondEvent(SecondEvent e) {
subclassSecondEventsHandled++;
}
}

static class FirstEvent extends GenericEvent {}
static class SecondEvent extends GenericEvent {}
static class ThirdEvent extends GenericEvent {}
public static class FirstEvent extends GenericEvent {}
public static class SecondEvent extends GenericEvent {}
public static class ThirdEvent extends GenericEvent {}
}
@@ -0,0 +1,9 @@
package com.google.web.bindery.event.shared.binder.subpackage;

import com.google.web.bindery.event.shared.binder.EventBinder;
import com.google.web.bindery.event.shared.binder.EventBinderTest;

/** This class exists to test that EventBinder works when referencing a class in a different package. */
public class SomeActivity {
public interface SomeEventBinder extends EventBinder<EventBinderTest.TestPresenter> {}
}

0 comments on commit 46d3e72

Please sign in to comment.