/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.tests.widgetset.client.gwtrpc; import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.Label; import com.vaadin.client.ui.AbstractComponentConnector; import com.vaadin.shared.ui.Connect; import com.vaadin.tests.widgetset.server.gwtrpc.GwtRpcButton; /** * Dummy connector to test our Vaadin/GWT RPC bug. In a Vaadin environment with * DevMode enabled, a pure GWT RPC call would throw an exception. See #11709. * * @author Vaadin Ltd */ @SuppressWarnings("serial") @Connect(GwtRpcButton.class) public class GwtRpcButtonConnector extends AbstractComponentConnector { static Logger logger = Logger .getLogger(GwtRpcButtonConnector.class.getName()); static { logger.setLevel(Level.ALL); } @Override public Button getWidget() { return (Button) super.getWidget(); } @Override protected Button createWidget() { return GWT.create(Button.class); } private void log(String message) { logger.log(Level.INFO, message); } @Override public void init() { super.init(); log("GwtRpcButtonTestConnector init"); getWidget().setText("Click me"); getWidget().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { doRPC(); } }); } /** * The ID of the label in case the test is successful. */ public static final String SUCCESS_LABEL_ID = "yes"; /** * The ID of the label in case the test failed. */ public static final String FAIL_LABEL_ID = "no"; /* * Make an RPC to test our bug. */ private void doRPC() { log("GwtRpcButtonTestConnector onClick"); GwtRpcServiceTestAsync service = GWT.create(GwtRpcServiceTest.class); service.giveMeThat("honey", "sugar", new AsyncCallback<String>() { @Override public void onSuccess(String result) { showResult(result, SUCCESS_LABEL_ID); } @Override public void onFailure(Throwable caught) { showResult(caught.getMessage(), FAIL_LABEL_ID); } /* * Show the result box. */ private void showResult(String result, String labelID) { DialogBox box = new DialogBox(true); Label label = new Label(result); label.getElement().setId(labelID); box.add(label); box.center(); box.show(); } }); } }