You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2012/05/04 14:12:23 UTC
[22/24] git commit: more consistent naming and implemented more
methods in the response
more consistent naming and implemented more methods in the response
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/78c6b2cc
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/78c6b2cc
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/78c6b2cc
Branch: refs/heads/master
Commit: 78c6b2cc32b0bcab698c38ed40140fa1076c15bd
Parents: c3d9082
Author: Emond Papegaaij <pa...@apache.org>
Authored: Wed Apr 4 10:56:16 2012 +0200
Committer: Emond Papegaaij <pa...@apache.org>
Committed: Thu Apr 19 11:07:55 2012 +0200
----------------------------------------------------------------------
.../wicket/atmosphere/AtmosphereBehavior.java | 6 +
.../wicket/atmosphere/AtmosphereRequestMapper.java | 33 ++++
.../wicket/atmosphere/AtmosphereWebRequest.java | 101 ++++++++++
.../wicket/atmosphere/AtmosphereWebResponse.java | 147 +++++++++++++++
.../org/apache/wicket/atmosphere/EventBus.java | 23 ++-
.../wicket/atmosphere/PushRequestMapper.java | 33 ----
.../apache/wicket/atmosphere/PushWebRequest.java | 101 ----------
.../wicket/atmosphere/StringWebResponse.java | 141 --------------
.../wicket/atmosphere/jquery.wicketatmosphere.js | 11 -
.../wicket/examples/atmosphere/HomePage.java | 1 +
10 files changed, 306 insertions(+), 291 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
index f6d07f3..6f1734f 100644
--- a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
+++ b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereBehavior.java
@@ -113,6 +113,12 @@ public class AtmosphereBehavior extends Behavior
Meteor meteor = Meteor.lookup(event.getResource().getRequest());
meteor.resume();
}
+
+ if ((System.currentTimeMillis() - connectedAt) > 10000)
+ {
+ Meteor meteor = Meteor.lookup(event.getResource().getRequest());
+ meteor.resume();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestMapper.java
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestMapper.java b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestMapper.java
new file mode 100644
index 0000000..25b5f86
--- /dev/null
+++ b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestMapper.java
@@ -0,0 +1,33 @@
+package org.apache.wicket.atmosphere;
+
+import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.IRequestMapper;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.Url;
+
+public class AtmosphereRequestMapper implements IRequestMapper
+{
+ @Override
+ public IRequestHandler mapRequest(Request request)
+ {
+ if (request instanceof AtmosphereWebRequest)
+ {
+ AtmosphereWebRequest pushRequest = (AtmosphereWebRequest) request;
+ return new AtmosphereRequestHandler(pushRequest.getPageKey(),
+ pushRequest.getSubscriptions(), pushRequest.getEvent());
+ }
+ return null;
+ }
+
+ @Override
+ public int getCompatibilityScore(Request request)
+ {
+ return request instanceof AtmosphereWebRequest ? Integer.MAX_VALUE : 0;
+ }
+
+ @Override
+ public Url mapHandler(IRequestHandler requestHandler)
+ {
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebRequest.java
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebRequest.java b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebRequest.java
new file mode 100644
index 0000000..3e9c79f
--- /dev/null
+++ b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebRequest.java
@@ -0,0 +1,101 @@
+package org.apache.wicket.atmosphere;
+
+import java.nio.charset.Charset;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
+
+import javax.servlet.http.Cookie;
+
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.http.WebRequest;
+import org.apache.wicket.util.time.Time;
+
+public class AtmosphereWebRequest extends WebRequest
+{
+ private WebRequest wrappedRequest;
+
+ private PageKey pageKey;
+
+ private Collection<EventSubscription> subscriptions;
+
+ private Object event;
+
+ public AtmosphereWebRequest(WebRequest wrappedRequest, PageKey pageKey,
+ Collection<EventSubscription> subscriptions, Object event)
+ {
+ this.wrappedRequest = wrappedRequest;
+ this.pageKey = pageKey;
+ this.subscriptions = subscriptions;
+ this.event = event;
+ }
+
+ public PageKey getPageKey()
+ {
+ return pageKey;
+ }
+
+ public Collection<EventSubscription> getSubscriptions()
+ {
+ return subscriptions;
+ }
+
+ public Object getEvent()
+ {
+ return event;
+ }
+
+ @Override
+ public List<Cookie> getCookies()
+ {
+ return wrappedRequest.getCookies();
+ }
+
+ @Override
+ public List<String> getHeaders(String name)
+ {
+ return wrappedRequest.getHeaders(name);
+ }
+
+ @Override
+ public String getHeader(String name)
+ {
+ return wrappedRequest.getHeader(name);
+ }
+
+ @Override
+ public Time getDateHeader(String name)
+ {
+ return wrappedRequest.getDateHeader(name);
+ }
+
+ @Override
+ public Url getUrl()
+ {
+ return wrappedRequest.getUrl();
+ }
+
+ @Override
+ public Url getClientUrl()
+ {
+ return wrappedRequest.getClientUrl();
+ }
+
+ @Override
+ public Locale getLocale()
+ {
+ return wrappedRequest.getLocale();
+ }
+
+ @Override
+ public Charset getCharset()
+ {
+ return wrappedRequest.getCharset();
+ }
+
+ @Override
+ public Object getContainerRequest()
+ {
+ return wrappedRequest.getContainerRequest();
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java
new file mode 100644
index 0000000..34dc127
--- /dev/null
+++ b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java
@@ -0,0 +1,147 @@
+package org.apache.wicket.atmosphere;
+
+import javax.servlet.http.Cookie;
+
+import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.util.string.AppendingStringBuffer;
+import org.apache.wicket.util.time.Time;
+import org.atmosphere.cpr.AtmosphereResponse;
+
+public class AtmosphereWebResponse extends WebResponse
+{
+ private AtmosphereResponse response;
+ private final AppendingStringBuffer out;
+
+ public AtmosphereWebResponse(AtmosphereResponse response)
+ {
+ this.response = response;
+ out = new AppendingStringBuffer(128);
+ }
+
+ @Override
+ public void addCookie(Cookie cookie)
+ {
+ response.addCookie(cookie);
+ }
+
+ @Override
+ public void clearCookie(Cookie cookie)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setHeader(String name, String value)
+ {
+ response.setHeader(name, value);
+ }
+
+ @Override
+ public void addHeader(String name, String value)
+ {
+ response.addHeader(name, value);
+ }
+
+ @Override
+ public void setDateHeader(String name, Time date)
+ {
+ response.setDateHeader(name, date.getMilliseconds());
+ }
+
+ @Override
+ public void setContentLength(long length)
+ {
+ response.setContentLength((int)length);
+ }
+
+ @Override
+ public void setContentType(String mimeType)
+ {
+ response.setContentType(mimeType);
+ }
+
+ @Override
+ public void setStatus(int sc)
+ {
+ response.setStatus(sc);
+ }
+
+ @Override
+ public void sendError(int sc, String msg)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String encodeRedirectURL(CharSequence url)
+ {
+ return response.encodeRedirectUrl(url.toString());
+ }
+
+ @Override
+ public void sendRedirect(String url)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void write(byte[] array)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void write(byte[] array, int offset, int length)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String encodeURL(CharSequence url)
+ {
+ return response.encodeURL(url.toString());
+ }
+
+ @Override
+ public Object getContainerResponse()
+ {
+ return response;
+ }
+
+ @Override
+ public boolean isRedirect()
+ {
+ return false;
+ }
+
+ @Override
+ public void reset()
+ {
+ out.clear();
+ }
+
+ @Override
+ public void flush()
+ {
+ }
+
+ @Override
+ public void write(CharSequence sequence)
+ {
+ out.append(sequence);
+ }
+
+ /**
+ * @return The internal buffer directly as a {@link CharSequence}
+ */
+ public CharSequence getBuffer()
+ {
+ return out;
+ }
+
+ @Override
+ public String toString()
+ {
+ return out.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java
index d60bc67..7cbc06a 100644
--- a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java
+++ b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/EventBus.java
@@ -19,6 +19,8 @@ import org.apache.wicket.session.ISessionStore.UnboundListener;
import org.atmosphere.cpr.AtmosphereResource;
import org.atmosphere.cpr.Broadcaster;
import org.atmosphere.cpr.BroadcasterFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.collect.BiMap;
import com.google.common.collect.Collections2;
@@ -29,6 +31,8 @@ import com.google.common.collect.Multimap;
public class EventBus implements UnboundListener
{
+ private static final Logger log = LoggerFactory.getLogger(EventBus.class);
+
private static final MetaDataKey<EventBus> EVENT_BUS_KEY = new MetaDataKey<EventBus>()
{
private static final long serialVersionUID = 1L;
@@ -51,9 +55,10 @@ public class EventBus implements UnboundListener
{
this.application = application;
application.setMetaData(EVENT_BUS_KEY, this);
- application.mount(new PushRequestMapper());
+ application.mount(new AtmosphereRequestMapper());
application.getComponentPreOnBeforeRenderListeners().add(
new AtmosphereEventSubscriptionCollector(this));
+ application.getSessionStore().registerUnboundListener(this);
broadcaster = BroadcasterFactory.getDefault().lookup("/*");
}
@@ -64,10 +69,14 @@ public class EventBus implements UnboundListener
if (oldPage != null && !oldPage.equals(pageKey))
subscriptions.removeAll(oldPage);
trackedPages.forcePut(trackingId, pageKey);
+ log.info("registered page {} for session {}",
+ new Object[] { pageKey.getPageId(), pageKey.getSessionId() });
}
public synchronized void register(Page page, EventSubscription subscription)
{
+ log.info("registering component for {} for session {}: {}", new Object[] {
+ page.getPageId(), Session.get().getId(), subscription.getComponentPath() });
subscriptions.put(new PageKey(page.getPageId(), Session.get().getId()), subscription);
}
@@ -87,7 +96,10 @@ public class EventBus implements UnboundListener
Collections.unmodifiableCollection(subscriptions.get(key)),
new EventFilter(event));
}
- post(resource, key, subscriptionsForPage, event);
+ if (key == null)
+ broadcaster.removeAtmosphereResource(resource);
+ else
+ post(resource, key, subscriptionsForPage, event);
}
}
finally
@@ -113,9 +125,9 @@ public class EventBus implements UnboundListener
return ret == null ? "" : ret;
}
};
- PushWebRequest request = new PushWebRequest(application.newWebRequest(httpRequest,
- filterPath), pageKey, subscriptionsForPage, event);
- Response response = new StringWebResponse();
+ AtmosphereWebRequest request = new AtmosphereWebRequest(application.newWebRequest(
+ httpRequest, filterPath), pageKey, subscriptionsForPage, event);
+ Response response = new AtmosphereWebResponse(resource.getResponse());
if (application.createRequestCycle(request, response).processRequestAndDetach())
broadcaster.broadcast(response.toString(), resource);
}
@@ -123,6 +135,7 @@ public class EventBus implements UnboundListener
@Override
public synchronized void sessionUnbound(String sessionId)
{
+ log.info("Session unbound {}", sessionId);
Iterator<PageKey> it = Iterators.concat(trackedPages.values().iterator(),
subscriptions.keySet().iterator());
while (it.hasNext())
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/PushRequestMapper.java
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/PushRequestMapper.java b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/PushRequestMapper.java
deleted file mode 100644
index 909a131..0000000
--- a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/PushRequestMapper.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.apache.wicket.atmosphere;
-
-import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.IRequestMapper;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.Url;
-
-public class PushRequestMapper implements IRequestMapper
-{
- @Override
- public IRequestHandler mapRequest(Request request)
- {
- if (request instanceof PushWebRequest)
- {
- PushWebRequest pushRequest = (PushWebRequest) request;
- return new AtmosphereRequestHandler(pushRequest.getPageKey(),
- pushRequest.getSubscriptions(), pushRequest.getEvent());
- }
- return null;
- }
-
- @Override
- public int getCompatibilityScore(Request request)
- {
- return request instanceof PushWebRequest ? Integer.MAX_VALUE : 0;
- }
-
- @Override
- public Url mapHandler(IRequestHandler requestHandler)
- {
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/PushWebRequest.java
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/PushWebRequest.java b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/PushWebRequest.java
deleted file mode 100644
index a31a73b..0000000
--- a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/PushWebRequest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.apache.wicket.atmosphere;
-
-import java.nio.charset.Charset;
-import java.util.Collection;
-import java.util.List;
-import java.util.Locale;
-
-import javax.servlet.http.Cookie;
-
-import org.apache.wicket.request.Url;
-import org.apache.wicket.request.http.WebRequest;
-import org.apache.wicket.util.time.Time;
-
-public class PushWebRequest extends WebRequest
-{
- private WebRequest wrappedRequest;
-
- private PageKey pageKey;
-
- private Collection<EventSubscription> subscriptions;
-
- private Object event;
-
- public PushWebRequest(WebRequest wrappedRequest, PageKey pageKey,
- Collection<EventSubscription> subscriptions, Object event)
- {
- this.wrappedRequest = wrappedRequest;
- this.pageKey = pageKey;
- this.subscriptions = subscriptions;
- this.event = event;
- }
-
- public PageKey getPageKey()
- {
- return pageKey;
- }
-
- public Collection<EventSubscription> getSubscriptions()
- {
- return subscriptions;
- }
-
- public Object getEvent()
- {
- return event;
- }
-
- @Override
- public List<Cookie> getCookies()
- {
- return wrappedRequest.getCookies();
- }
-
- @Override
- public List<String> getHeaders(String name)
- {
- return wrappedRequest.getHeaders(name);
- }
-
- @Override
- public String getHeader(String name)
- {
- return wrappedRequest.getHeader(name);
- }
-
- @Override
- public Time getDateHeader(String name)
- {
- return wrappedRequest.getDateHeader(name);
- }
-
- @Override
- public Url getUrl()
- {
- return wrappedRequest.getUrl();
- }
-
- @Override
- public Url getClientUrl()
- {
- return wrappedRequest.getClientUrl();
- }
-
- @Override
- public Locale getLocale()
- {
- return wrappedRequest.getLocale();
- }
-
- @Override
- public Charset getCharset()
- {
- return wrappedRequest.getCharset();
- }
-
- @Override
- public Object getContainerRequest()
- {
- return wrappedRequest.getContainerRequest();
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/StringWebResponse.java
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/StringWebResponse.java b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/StringWebResponse.java
deleted file mode 100644
index 2f4db04..0000000
--- a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/StringWebResponse.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package org.apache.wicket.atmosphere;
-
-import javax.servlet.http.Cookie;
-
-import org.apache.wicket.request.http.WebResponse;
-import org.apache.wicket.util.string.AppendingStringBuffer;
-import org.apache.wicket.util.time.Time;
-
-public class StringWebResponse extends WebResponse
-{
- protected final AppendingStringBuffer out;
-
- public StringWebResponse()
- {
- out = new AppendingStringBuffer(128);
- }
-
- @Override
- public void addCookie(Cookie cookie)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void clearCookie(Cookie cookie)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void setHeader(String name, String value)
- {
- }
-
- @Override
- public void addHeader(String name, String value)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void setDateHeader(String name, Time date)
- {
- }
-
- @Override
- public void setContentLength(long length)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void setContentType(String mimeType)
- {
- }
-
- @Override
- public void setStatus(int sc)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void sendError(int sc, String msg)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public String encodeRedirectURL(CharSequence url)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void sendRedirect(String url)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void write(byte[] array)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void write(byte[] array, int offset, int length)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public String encodeURL(CharSequence url)
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public Object getContainerResponse()
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public boolean isRedirect()
- {
- return false;
- }
-
- @Override
- public void reset()
- {
- out.clear();
- }
-
- @Override
- public void flush()
- {
- }
-
- @Override
- public void write(CharSequence sequence)
- {
- out.append(sequence);
- }
-
- /**
- * @return The internal buffer directly as a {@link CharSequence}
- */
- public CharSequence getBuffer()
- {
- return out;
- }
-
- @Override
- public String toString()
- {
- return out.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.wicketatmosphere.js
----------------------------------------------------------------------
diff --git a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.wicketatmosphere.js b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.wicketatmosphere.js
index be51a2c..8583ea0 100644
--- a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.wicketatmosphere.js
+++ b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/jquery.wicketatmosphere.js
@@ -5,17 +5,6 @@
// jquery.atmosphere.response
function callback(response) {
- console.log(response.responseBody);
- // Websocket events.
- // $.atmosphere.log('info', [ "response.state: " +
- // response.state
- // ]);
- // $.atmosphere.log('info', [ "response.transport: "
- // + response.transport ]);
- // $.atmosphere.log('info', [ "response.status: " +
- // response.status
- // ]);
-
detectedTransport = response.transport;
if (response.transport != 'polling'
&& response.state == 'messageReceived') {
http://git-wip-us.apache.org/repos/asf/wicket/blob/78c6b2cc/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/HomePage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/HomePage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/HomePage.java
index b0e9015..f26c3a7 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/HomePage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/atmosphere/HomePage.java
@@ -20,6 +20,7 @@ public class HomePage extends WebPage
{
add(new Label("version", getApplication().getFrameworkSettings().getVersion()));
add(timeLabel = new Label("time", Model.of("start")).setOutputMarkupId(true));
+ setVersioned(false);
}
@Subscribe