123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- /*
- * 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.components.table;
-
- import java.util.ArrayList;
- import java.util.Collection;
-
- import com.vaadin.annotations.Push;
- import com.vaadin.server.ClientConnector;
- import com.vaadin.server.StreamVariable;
- import com.vaadin.server.VaadinRequest;
- import com.vaadin.tests.components.AbstractReindeerTestUI;
- import com.vaadin.ui.Button;
- import com.vaadin.ui.Button.ClickEvent;
- import com.vaadin.ui.ConnectorTracker;
- <<<<<<< HEAD
- import com.vaadin.v7.ui.Table;
- =======
- import com.vaadin.ui.Table;
- >>>>>>> 62c0d73... Remove tracking of unregistered connectors (#8153)
-
- import elemental.json.JsonObject;
-
- @Push
- public class TableRemovedQuicklySendsInvalidRpcCalls
- extends AbstractReindeerTestUI {
-
- public static final String SUCCESS_CAPTION = "Success!";
- public static final String BUTTON_ID = "blinkbutton";
- public static final String FAILURE_CAPTION = "Test failed";
-
- private class WrappedConnectorTracker extends ConnectorTracker {
- private ConnectorTracker tracker;
-
- private boolean initialDirtyHasBeenCalled = false;
-
- public WrappedConnectorTracker(ConnectorTracker tracker) {
- super(TableRemovedQuicklySendsInvalidRpcCalls.this);
- this.tracker = tracker;
- }
-
- @Override
- public void markAllConnectorsDirty() {
- tracker.markAllConnectorsDirty();
- if (initialDirtyHasBeenCalled) {
- button.setCaption(FAILURE_CAPTION);
- }
- initialDirtyHasBeenCalled = true;
- }
-
- // DELEGATED METHODS BELOW:
-
- @Override
- public void registerConnector(ClientConnector connector) {
- tracker.registerConnector(connector);
- }
-
- @Override
- public void unregisterConnector(ClientConnector connector) {
- tracker.unregisterConnector(connector);
- }
-
- @Override
- public boolean isClientSideInitialized(ClientConnector connector) {
- return tracker.isClientSideInitialized(connector);
- }
-
- @Override
- public void markClientSideInitialized(ClientConnector connector) {
- tracker.markClientSideInitialized(connector);
- }
-
- @Override
- public void markAllClientSidesUninitialized() {
- tracker.markAllClientSidesUninitialized();
- }
-
- @Override
- public ClientConnector getConnector(String connectorId) {
- return tracker.getConnector(connectorId);
- }
-
- @Override
- public void cleanConnectorMap() {
- tracker.cleanConnectorMap();
- }
-
- @Override
- public void markDirty(ClientConnector connector) {
- tracker.markDirty(connector);
- }
-
- @Override
- public void markClean(ClientConnector connector) {
- tracker.markClean(connector);
- }
-
- @Override
- public void markAllConnectorsClean() {
- tracker.markAllConnectorsClean();
- }
-
- @Override
- public Collection<ClientConnector> getDirtyConnectors() {
- return tracker.getDirtyConnectors();
- }
-
- @Override
- public boolean hasDirtyConnectors() {
- return tracker.hasDirtyConnectors();
- }
-
- @Override
- public ArrayList<ClientConnector> getDirtyVisibleConnectors() {
- return tracker.getDirtyVisibleConnectors();
- }
-
- @Override
- public JsonObject getDiffState(ClientConnector connector) {
- return tracker.getDiffState(connector);
- }
-
- @Override
- public void setDiffState(ClientConnector connector,
- JsonObject diffState) {
- tracker.setDiffState(connector, diffState);
- }
-
- @Override
- public boolean isDirty(ClientConnector connector) {
- return tracker.isDirty(connector);
- }
-
- @Override
- public boolean isWritingResponse() {
- return tracker.isWritingResponse();
- }
-
- @Override
- public void setWritingResponse(boolean writingResponse) {
- tracker.setWritingResponse(writingResponse);
- }
-
- @Override
- public StreamVariable getStreamVariable(String connectorId,
- String variableName) {
- return tracker.getStreamVariable(connectorId, variableName);
- }
-
- @Override
- public void addStreamVariable(String connectorId, String variableName,
- StreamVariable variable) {
- tracker.addStreamVariable(connectorId, variableName, variable);
- }
-
- @Override
- public void cleanStreamVariable(String connectorId,
- String variableName) {
- tracker.cleanStreamVariable(connectorId, variableName);
- }
-
- @Override
- public String getSeckey(StreamVariable variable) {
- return tracker.getSeckey(variable);
- }
-
- @Override
- public int getCurrentSyncId() {
- return tracker.getCurrentSyncId();
- }
-
- @Override
- public boolean equals(Object obj) {
- return tracker.equals(obj);
- }
-
- @Override
- public int hashCode() {
- return tracker.hashCode();
- }
-
- @Override
- public String toString() {
- return tracker.toString();
- }
- }
-
- private Button button;
- private WrappedConnectorTracker wrappedTracker = null;
-
- @Override
- protected void setup(VaadinRequest request) {
- button = new Button("Blink a table", new Button.ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- blinkTable();
- }
- });
- button.setId(BUTTON_ID);
- addComponent(button);
- }
-
- @Override
- public ConnectorTracker getConnectorTracker() {
- if (wrappedTracker == null) {
- wrappedTracker = new WrappedConnectorTracker(
- super.getConnectorTracker());
- }
- return wrappedTracker;
- }
-
- private void blinkTable() {
- final Table table = new Table();
- table.setPageLength(5);
- table.addContainerProperty(new Object(), String.class, null);
-
- for (int i = 0; i < 50; i++) {
- table.addItem(new Object[] { "Row" }, new Object());
- }
-
- System.out.println("adding component");
- addComponent(table);
-
- new Thread() {
- @Override
- public void run() {
- getSession().lock();
- try {
- Thread.sleep(500);
- access(new Runnable() {
- @Override
- public void run() {
- System.out.println("removing component");
- removeComponent(table);
- button.setCaption(SUCCESS_CAPTION);
- }
- });
- } catch (InterruptedException e) {
- e.printStackTrace();
- } finally {
- getSession().unlock();
- }
- }
- }.start();
- }
-
- @Override
- protected String getTestDescription() {
- return "Adding and subsequently quickly removing a table "
- + "should not leave any pending RPC calls waiting "
- + "in a Timer. Issue can be reproduced by "
- + "1) pressing the button 2) checking the server "
- + "log for any error messages starting with "
- + "\"RPC call to...\" .";
- }
-
- @Override
- protected Integer getTicketNumber() {
- return 12337;
- }
- }
|