aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2012-07-25 12:43:44 +0000
committerLeif Åstrand <leif@vaadin.com>2012-07-25 12:43:44 +0000
commitb0004167abaa8874f94556da83cb6d0aa0b5e3e6 (patch)
tree45330d63b15beca2167add40d88a481d54a7dd6b
parent7edff2dad305481601cdd6c876d24fd7a4f3f9a3 (diff)
downloadvaadin-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.java32
-rw-r--r--tests/server-side/com/vaadin/tests/server/TestStreamVariableMapping.java57
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
+ }
+ });
+ }
+
+}