diff options
author | Leif Åstrand <leif@vaadin.com> | 2012-07-25 12:43:44 +0000 |
---|---|---|
committer | Leif Åstrand <leif@vaadin.com> | 2012-07-25 12:43:44 +0000 |
commit | b0004167abaa8874f94556da83cb6d0aa0b5e3e6 (patch) | |
tree | 45330d63b15beca2167add40d88a481d54a7dd6b | |
parent | 7edff2dad305481601cdd6c876d24fd7a4f3f9a3 (diff) | |
download | vaadin-framework-b0004167abaa8874f94556da83cb6d0aa0b5e3e6.tar.gz vaadin-framework-b0004167abaa8874f94556da83cb6d0aa0b5e3e6.zip |
Fix typo preventing StreamVariable cleanup (#9171)
svn changeset:24025/svn branch:6.8
-rw-r--r-- | src/com/vaadin/terminal/gwt/server/CommunicationManager.java | 32 | ||||
-rw-r--r-- | tests/server-side/com/vaadin/tests/server/TestStreamVariableMapping.java | 57 |
2 files changed, 84 insertions, 5 deletions
diff --git a/src/com/vaadin/terminal/gwt/server/CommunicationManager.java b/src/com/vaadin/terminal/gwt/server/CommunicationManager.java index 9c67a03bb3..9f6e0a8aaa 100644 --- a/src/com/vaadin/terminal/gwt/server/CommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/CommunicationManager.java @@ -233,8 +233,8 @@ public class CommunicationManager extends AbstractCommunicationManager { String variableName = parts[1]; String paintableId = parts[0]; - StreamVariable streamVariable = pidToNameToStreamVariable.get( - paintableId).get(variableName); + StreamVariable streamVariable = getStreamVariable(paintableId, + variableName); String secKey = streamVariableToSeckey.get(streamVariable); if (secKey.equals(parts[2])) { @@ -263,6 +263,28 @@ public class CommunicationManager extends AbstractCommunicationManager { } /** + * Gets a stream variable based on paintable id and variable name. Returns + * <code>null</code> if no matching variable has been registered. + * + * @param paintableId + * id of paintable to get variable for + * @param variableName + * name of the stream variable + * @return the corresponding stream variable, or <code>null</code> if not + * found + */ + public StreamVariable getStreamVariable(String paintableId, + String variableName) { + Map<String, StreamVariable> nameToStreamVariable = pidToNameToStreamVariable + .get(paintableId); + if (nameToStreamVariable == null) { + return null; + } + StreamVariable streamVariable = nameToStreamVariable.get(variableName); + return streamVariable; + } + + /** * Handles UIDL request * * TODO document @@ -359,7 +381,7 @@ public class CommunicationManager extends AbstractCommunicationManager { private Map<StreamVariable, String> streamVariableToSeckey; @Override - String getStreamVariableTargetUrl(VariableOwner owner, String name, + public String getStreamVariableTargetUrl(VariableOwner owner, String name, StreamVariable value) { /* * We will use the same APP/* URI space as ApplicationResources but @@ -402,10 +424,10 @@ public class CommunicationManager extends AbstractCommunicationManager { } @Override - protected void cleanStreamVariable(VariableOwner owner, String name) { + public void cleanStreamVariable(VariableOwner owner, String name) { Map<String, StreamVariable> nameToStreamVar = pidToNameToStreamVariable .get(getPaintableId((Paintable) owner)); - nameToStreamVar.remove("name"); + nameToStreamVar.remove(name); if (nameToStreamVar.isEmpty()) { pidToNameToStreamVariable.remove(getPaintableId((Paintable) owner)); } diff --git a/tests/server-side/com/vaadin/tests/server/TestStreamVariableMapping.java b/tests/server-side/com/vaadin/tests/server/TestStreamVariableMapping.java new file mode 100644 index 0000000000..7e9aefcbd9 --- /dev/null +++ b/tests/server-side/com/vaadin/tests/server/TestStreamVariableMapping.java @@ -0,0 +1,57 @@ +package com.vaadin.tests.server; + +import junit.framework.TestCase; + +import org.easymock.EasyMock; + +import com.vaadin.Application; +import com.vaadin.terminal.StreamVariable; +import com.vaadin.terminal.gwt.server.CommunicationManager; +import com.vaadin.ui.Upload; + +public class TestStreamVariableMapping extends TestCase { + private static final String variableName = "myName"; + + private Upload owner; + private StreamVariable streamVariable; + + private CommunicationManager cm; + + @Override + protected void setUp() throws Exception { + owner = new Upload(); + streamVariable = EasyMock.createMock(StreamVariable.class); + cm = createCommunicationManager(); + + super.setUp(); + } + + public void testAddStreamVariable() { + String targetUrl = cm.getStreamVariableTargetUrl(owner, variableName, + streamVariable); + assertTrue(targetUrl.startsWith("app://APP/UPLOAD/PID0/myName/")); + + StreamVariable streamVariable2 = cm.getStreamVariable( + cm.getPaintableId(owner), variableName); + assertSame(streamVariable, streamVariable2); + } + + public void testRemoverVariable() { + cm.getStreamVariableTargetUrl(owner, variableName, streamVariable); + assertNotNull(cm.getStreamVariable(cm.getPaintableId(owner), + variableName)); + + cm.cleanStreamVariable(owner, variableName); + assertNull(cm.getStreamVariable(cm.getPaintableId(owner), variableName)); + } + + private CommunicationManager createCommunicationManager() { + return new CommunicationManager(new Application() { + @Override + public void init() { + // TODO Auto-generated method stub + } + }); + } + +} |