Example usage for com.vaadin.shared.communication MethodInvocation getMethodName

List of usage examples for com.vaadin.shared.communication MethodInvocation getMethodName

Introduction

In this page you can find the example usage for com.vaadin.shared.communication MethodInvocation getMethodName.

Prototype

public String getMethodName() 

Source Link

Usage

From source file:com.haulmont.cuba.web.toolkit.ui.client.appui.AppUIConnector.java

License:Apache License

public AppUIConnector() {
    VNotification.setRelativeZIndex(true);
    registerRpc(AppUIClientRpc.class, new AppUIClientRpc() {
        @Override/*from  w  ww .  j  a v a 2  s.co m*/
        public void discardAccumulatedEvents() {
            // silent time
            ValidationErrorHolder.onValidationError();

            ApplicationConnection.MethodInvocationFilter filter = new ApplicationConnection.MethodInvocationFilter() {
                @Override
                public boolean apply(MethodInvocation mi) {
                    // use blacklist of invocations
                    // do not discard all

                    // button click
                    if (ButtonServerRpc.class.getName().equals(mi.getInterfaceName())
                            && "click".equals(mi.getMethodName())) {
                        return true;
                    }

                    // tabsheet close
                    if (TabsheetServerRpc.class.getName().equals(mi.getInterfaceName())
                            && "closeTab".equals(mi.getMethodName())) {
                        return true;
                    }

                    // shortcuts && window close
                    //noinspection RedundantIfStatement
                    if (mi instanceof LegacyChangeVariablesInvocation) {
                        LegacyChangeVariablesInvocation invocation = (LegacyChangeVariablesInvocation) mi;
                        if (invocation.getVariableChanges().containsKey("action")
                                || invocation.getVariableChanges().containsKey("actiontarget")
                                || invocation.getVariableChanges().containsKey("close")) {
                            return true;
                        }
                    }

                    return false;
                }
            };

            ApplicationConnection.RemoveMethodInvocationCallback callback = new ApplicationConnection.RemoveMethodInvocationCallback() {
                @Override
                public void removed(MethodInvocation mi) {
                    ConnectorMap connectorMap = getConnection().getConnectorMap();
                    ServerConnector connector = connectorMap.getConnector(mi.getConnectorId());
                    if (connector instanceof CubaButtonConnector) {
                        ((CubaButtonConnector) connector).stopResponsePending();
                    }
                }
            };

            getConnection().removePendingInvocationsAndBursts(filter, callback);
        }
    });
}

From source file:org.semanticsoft.vaaclipse.app.servlet.VaaclipseServerRpcHandler.java

License:Open Source License

private void handleInvocations(UI uI, int lastSyncIdSeenByClient, JSONArray invocationsData) {
    // TODO PUSH Refactor so that this is not needed
    LegacyCommunicationManager manager = uI.getSession().getCommunicationManager();

    try {/*from ww w. ja  v  a2  s. com*/
        ConnectorTracker connectorTracker = uI.getConnectorTracker();

        Set<Connector> enabledConnectors = new HashSet<Connector>();

        List<MethodInvocation> invocations = parseInvocations(uI.getConnectorTracker(), invocationsData,
                lastSyncIdSeenByClient);
        for (MethodInvocation invocation : invocations) {
            final ClientConnector connector = connectorTracker.getConnector(invocation.getConnectorId());

            if (connector != null && connector.isConnectorEnabled()) {
                enabledConnectors.add(connector);
            }
        }

        for (int i = 0; i < invocations.size(); i++) {
            MethodInvocation invocation = invocations.get(i);

            final ClientConnector connector = connectorTracker.getConnector(invocation.getConnectorId());
            if (connector == null) {
                getLogger().log(Level.WARNING,
                        "Received RPC call for unknown connector with id {0} (tried to invoke {1}.{2})",
                        new Object[] { invocation.getConnectorId(), invocation.getInterfaceName(),
                                invocation.getMethodName() });
                continue;
            }

            if (!enabledConnectors.contains(connector)) {

                if (invocation instanceof LegacyChangeVariablesInvocation) {
                    LegacyChangeVariablesInvocation legacyInvocation = (LegacyChangeVariablesInvocation) invocation;
                    // TODO convert window close to a separate RPC call and
                    // handle above - not a variable change

                    // Handle special case where window-close is called
                    // after the window has been removed from the
                    // application or the application has closed
                    Map<String, Object> changes = legacyInvocation.getVariableChanges();
                    if (changes.size() == 1 && changes.containsKey("close")
                            && Boolean.TRUE.equals(changes.get("close"))) {
                        // Silently ignore this
                        continue;
                    }
                }

                // Connector is disabled, log a warning and move to the next
                getLogger().warning(getIgnoredDisabledError("RPC call", connector));
                continue;
            }
            // DragAndDropService has null UI
            if (connector.getUI() != null && connector.getUI().isClosing()) {
                String msg = "Ignoring RPC call for connector " + connector.getClass().getName();
                if (connector instanceof Component) {
                    String caption = ((Component) connector).getCaption();
                    if (caption != null) {
                        msg += ", caption=" + caption;
                    }
                }
                msg += " in closed UI";
                getLogger().warning(msg);
                continue;

            }

            if (invocation instanceof ServerRpcMethodInvocation) {
                try {
                    ServerRpcManager.applyInvocation(connector, (ServerRpcMethodInvocation) invocation);
                } catch (RpcInvocationException e) {
                    manager.handleConnectorRelatedException(connector, e);
                }
            } else {
                // All code below is for legacy variable changes
                LegacyChangeVariablesInvocation legacyInvocation = (LegacyChangeVariablesInvocation) invocation;
                Map<String, Object> changes = legacyInvocation.getVariableChanges();
                try {
                    if (connector instanceof VariableOwner) {
                        // The source parameter is never used anywhere
                        changeVariables(null, (VariableOwner) connector, changes);
                        executorService.exec();
                    } else {
                        throw new IllegalStateException("Received legacy variable change for "
                                + connector.getClass().getName() + " (" + connector.getConnectorId()
                                + ") which is not a VariableOwner. The client-side connector sent these legacy varaibles: "
                                + changes.keySet());
                    }
                } catch (Exception e) {
                    manager.handleConnectorRelatedException(connector, e);
                }
            }
        }
    } catch (JSONException e) {
        getLogger().warning("Unable to parse RPC call from the client: " + e.getMessage());
        throw new RuntimeException(e);
    }
}