Monday, 24 September 2012

java.lang.IllegalArgumentException: invoke arguments: JS value of type boolean, expected java.lang.String


Problem Background

Here I've 3 Tabs with SubTabs under them. When I click on a Tab, only the default SubTab maintained with code like following in every Sub TabContainerPresenter can be viewed, but the other with priority other than 0 are not even clickable.


                    /*Main TabContainerPresenter*/
        @TabInfo(container = MainPagePresenter.class, priority = 1, nameToken = NameTokens.ADD_AGENT)
static String getTabLabel(TGinInjector ginjector) {
return ginjector.getTConstants().agent();
}

        /*Child TabContainerPresenters*/

@TabInfo(container = AgentPresenter.class)
static TabData getTabLabel(TGinInjector ginjector) {
return new TabDataBasic(ginjector.getTConstants().addAgent(), 0);
}


@TabInfo(container = AgentPresenter.class)
static TabData getTabLabel(TGinInjector ginjector) {
return new TabDataBasic(ginjector.getTConstants().listAgents(), 1);
}



When tried to click on SubTab with priority  other than than 0, throws the error  
java.lang.IllegalArgumentException: invoke arguments: JS value of type boolean, expected java.lang.String.



1 - My EntryPointT.java


public class T implements EntryPoint {

public final TGinInjector gInjector = GWT.create(TInjector.class);

@Override
public void onModuleLoad() {
TResources.INSTANCE.tCss().ensureInjected();
RootPanel loader = RootPanel.get("loader");
loader.setStyleName("in-loader");
DelayedBindRegistry.bind(gInjector);
gInjector.getPlaceManager().revealCurrentPlace();

}


2 - My Ginjector  - TGinInjector.java


@GinModules({ TModule.class })
public interface TGinInjector extends Ginjector {
PlaceManager getPlaceManager();

EventBus getEventBus();

TConstants getTConstants();

Provider<MainPagePresenter> getMainPagePresenter();

/*
 * Statement Module
 */
AsyncProvider<TStatementPresenter> getTStatementPresenter();

AsyncProvider<StatementPresenter> getStatementPresenter();

/*

 * Agent Module
 */

 AsyncProvider<AgentPresenter> getAgentPresenter();

 AsyncProvider<AddAgentPresenter> getAddAgentPresenter();

 AsyncProvider<ListAgentPresenter> getListAgentPresenter();



}


3 - My PresenterModule is  - TModule.java


public class TModule extends AbstractPresenterModule {

@Override
protected void configure() {

bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
bind(TokenFormatter.class).to(ParameterTokenFormatter.class).in(
Singleton.class);
bind(RootPresenter.class).to(TRootPresenter.class)
.asEagerSingleton();
bind(PlaceManager.class).to(TPlaceManager.class).in(
Singleton.class);
bindConstant().annotatedWith(DefaultPlace.class).to(
NameTokens.STATEMENT);

bindPresenter(MainPagePresenter.class, IMainPageView.class,
MainPageView.class, MainPagePresenter.MainProxy.class);
/*
 * Statement Module
 */
bindPresenter(
TStatementPresenter.class,
ITStatementView.class,
TStatementTabView.class,
TStatementPresenter.ITStatementTabContentProxy.class);

bindPresenter(StatementPresenter.class, IStatementView.class,
StatementView.class,
StatementPresenter.IStatementTabContentProxyPlace.class);


/*
 * Agent Module
 */
   bindPresenter(AgentPresenter.class, IAgentView.class, AgentView.class,
AgentPresenter.AgentProxy.class);
   bindPresenter(AddAgentPresenter.class, IAddAgentView.class,
AddAgentView.class, AddAgentPresenter.AddAgentTabContentProxyPlace.class);
   bindPresenter(ListAgentPresenter.class, IListAgentView.class,
ListAgentView.class, ListAgentPresenter.ListAgentProxy.class);

   bindPresenter(AddServicePresenter.class, IAddServiceView.class,
AddServiceView.class, AddServiceProxy.class);

}


4 - My PlaceManagerImpl - TPlaceManager.java


public class TPlaceManager extends PlaceManagerImpl {

private final PlaceRequest defaultPlaceRequest;

@Inject
public TPlaceManager(EventBus eventBus, TokenFormatter tokenFormatter, @DefaultPlace String nameToken) {
super(eventBus, tokenFormatter);
defaultPlaceRequest = new PlaceRequest(nameToken);

}

@Override
public void revealDefaultPlace() {
revealPlace(defaultPlaceRequest);
}

}

5 - My AgentPresenter for a Tab  - AgentPresenter.java



public class AgentPresenter extends
SubContainerPresenterBase<AgentView, AgentPresenter.AgentTabContentProxy> {
@RequestTabs
public static final Type<RequestTabsHandler> TYPE_RequestTabs = new Type<RequestTabsHandler>();

@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_SetTabContent = new Type<RevealContentHandler<?>>();

@Inject
public AgentPresenter(EventBus eventBus, AgentView view, AgentProxy proxy,
Type<RevealContentHandler<?>> setTabContent,
Type<RequestTabsHandler> requestTabs) {
super(eventBus, view, proxy, TYPE_SetTabContent, TYPE_RequestTabs);
}

@ProxyCodeSplit
public interface AgentTabContentProxy extends TabContentProxy<AgentPresenter> {

}

@TabInfo(container = MainPagePresenter.class, priority = 1, nameToken = NameTokens.ADD_AGENT)
static String getTabLabel(TGinInjector ginjector) {
return ginjector.getTConstants().agent();
}

@Override
protected void revealInParent() {
RevealContentEvent.fire(this, MainPagePresenter.TYPE_SetMainContent,
this);

}

}


6 - AddAgentPresenter.java for a SubTab AddAgent with priority 0


/**
 * @author prayag
 * @date Sep 13, 2012
 */
public class AddAgentPresenter extends Presenter<IAddAgentView, AddAgentPresenter.AddAgentTabContentProxyPlace> implements IAddAgentView.AddAgentViewUiHandler {

@Inject
private IAgentServiceAsync agentService;

@Inject
public AddAgentPresenter(EventBus eventBus, IAddAgentView view, AddAgentTabContentProxyPlace proxy) {
super(eventBus, view, proxy);
getView().setUiHandlers(this);
}

@ProxyCodeSplit
@NameToken(NameTokens.ADD_AGENT)
public interface AddAgentTabContentProxyPlace extends TabContentProxyPlace<AddAgentPresenter> {

}

@TabInfo(container = AgentPresenter.class)
static TabData getTabLabel(TGinInjector ginjector) {
return new TabDataBasic(ginjector.getTConstants().addAgent(), 0);
}

@Override
protected void revealInParent() {
RevealContentEvent.fire(this, AgentPresenter.TYPE_SetTabContent, this);

}

@Override
protected void onReveal() {
super.onReveal();
}

@Override
public void addAgent(AgentDto dto) {
agentService.addAgent(dto, new AsyncCallback<Void>() {

@Override
public void onSuccess(Void result) {
Window.alert("Agent added successfully.");
}

@Override
public void onFailure(Throwable caught) {
Window.alert("Faild to add the agent." + caught.getMessage());
}
});
}
}

7 - ListAgentPresenter.java for a SubTab ListAgent with priority 1



public class ListAgentPresenter extends

Presenter<IListAgentView, ListAgentPresenter.ListAgentProxy> implements
IListAgentView.ListAgentViewUiHandler {

@Inject
private IAgentServiceAsync agentService;

@Inject
public ListAgentPresenter(EventBus eventBus, IListAgentView view,
ListAgentProxy proxy, ListAgentDataProvider dataprovider) {
super(eventBus, view, proxy);
dataprovider.addDataDisplay(view.getDisplay());
getView().setUiHandlers(this);
}

@ProxyCodeSplit
@NameToken(NameTokens.LIST_AGENT)
public interface ListAgentProxy extends
TabContentProxyPlace<ListAgentPresenter> {

}

@TabInfo(container = AgentPresenter.class)
static TabData getTabLabel(TGinInjector ginjector) {
return new TabDataBasic(ginjector.getTConstants()
.listAgents(), 1);
}

@Override
protected void revealInParent() {
RevealContentEvent.fire(this, AgentPresenter.TYPE_SetTabContent, this);

}

@Override
protected void onReveal() {
super.onReveal();
}

private void refreshTable() {
getView().getDisplay().setVisibleRangeAndClearData(
getView().getDisplay().getVisibleRange(), true);
}
}


No comments:

Post a Comment