You are viewing a plain text version of this content. The canonical link for it is here.
Posted to nuvem-commits@incubator.apache.org by jo...@apache.org on 2011/07/13 22:24:05 UTC
svn commit: r1146503 - in /incubator/nuvem/trunk: nuvem-google/
nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/
nuvem-samples/store-appengine-webapp/war/
nuvem-samples/store-appengine-webapp/war/WEB-INF/
nuvem-samples/store-assets/src/main...
Author: johnp
Date: Wed Jul 13 22:24:05 2011
New Revision: 1146503
URL: http://svn.apache.org/viewvc?rev=1146503&view=rev
Log:
--corrected the google presence reciever servlet to broadcast presence changes to listeners
--modified the store application to demonstrate how to listen to presence changes and respond to such changes
Modified:
incubator/nuvem/trunk/nuvem-google/pom.xml
incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GooglePresenceServlet.java
incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GoogleRecieverServlet.java
incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/appengine-web.xml
incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/web.xml
incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/store.composite
incubator/nuvem/trunk/nuvem-samples/store-assets/src/main/java/services/XMPPShipmentObserver.java
Modified: incubator/nuvem/trunk/nuvem-google/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-google/pom.xml?rev=1146503&r1=1146502&r2=1146503&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-google/pom.xml (original)
+++ incubator/nuvem/trunk/nuvem-google/pom.xml Wed Jul 13 22:24:05 2011
@@ -50,7 +50,6 @@
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>${gae.version}</version>
- <scope>provided</scope>
</dependency>
<dependency>
Modified: incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GooglePresenceServlet.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GooglePresenceServlet.java?rev=1146503&r1=1146502&r2=1146503&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GooglePresenceServlet.java (original)
+++ incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GooglePresenceServlet.java Wed Jul 13 22:24:05 2011
@@ -22,6 +22,8 @@ package org.apache.nuvem.cloud.xmpp.impl
import java.io.IOException;
import java.util.logging.Logger;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -29,6 +31,7 @@ import javax.servlet.http.HttpServletRes
import org.apache.nuvem.cloud.xmpp.XMPPEndPoint;
import org.apache.nuvem.cloud.xmpp.presence.PresenceListener;
import org.apache.nuvem.cloud.xmpp.presence.PresenceManager;
+import org.oasisopen.sca.ComponentContext;
import org.oasisopen.sca.annotation.Reference;
import com.google.appengine.api.xmpp.Presence;
@@ -61,10 +64,28 @@ public class GooglePresenceServlet exten
*/
private static final long serialVersionUID = 3109512262386132981L;
- @Reference
+ @Reference(required = false)
private XMPPEndPoint endPoint;
/**
+ * If the servlet container doesnt support SCA then the endpoint will be
+ * identified explicitly.
+ */
+ @Override
+ public void init(ServletConfig config) {
+ if (endPoint == null) {
+ log.info("endpoint not wired, trying to fetch one from the component context");
+ ServletContext servletContext = config.getServletContext();
+ ComponentContext context = (ComponentContext) servletContext
+ .getAttribute("org.oasisopen.sca.ComponentContext");
+
+ endPoint = context.getService(XMPPEndPoint.class, "endPoint");
+ log.info("endpoint: " + endPoint);
+ }
+ }
+
+
+ /**
* Adapts the HTTP Post request into a call to the
* {@link PresenceListener#listen(org.apache.nuvem.cloud.xmpp.presence.Presence)}
* .
Modified: incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GoogleRecieverServlet.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GoogleRecieverServlet.java?rev=1146503&r1=1146502&r2=1146503&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GoogleRecieverServlet.java (original)
+++ incubator/nuvem/trunk/nuvem-google/src/main/java/org/apache/nuvem/cloud/xmpp/impl/GoogleRecieverServlet.java Wed Jul 13 22:24:05 2011
@@ -75,7 +75,7 @@ public class GoogleRecieverServlet exten
@Override
public void init(ServletConfig config) {
if (endPoint == null) {
- log.info("endpoint not wired, trying to fetch one from the component context using the name: XMPPComponent/XMPPEndPoint");
+ log.info("endpoint not wired, trying to fetch one from the component context");
ServletContext servletContext = config.getServletContext();
ComponentContext context = (ComponentContext) servletContext
.getAttribute("org.oasisopen.sca.ComponentContext");
Modified: incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/appengine-web.xml
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/appengine-web.xml?rev=1146503&r1=1146502&r2=1146503&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/appengine-web.xml (original)
+++ incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/appengine-web.xml Wed Jul 13 22:24:05 2011
@@ -28,6 +28,7 @@
<inbound-services>
<service>xmpp_message</service>
+ <service>xmpp_presence</service>
</inbound-services>
</appengine-web-app>
\ No newline at end of file
Modified: incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/web.xml?rev=1146503&r1=1146502&r2=1146503&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/web.xml (original)
+++ incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/WEB-INF/web.xml Wed Jul 13 22:24:05 2011
@@ -42,6 +42,16 @@ http://java.sun.com/xml/ns/javaee/web-ap
<url-pattern>/_ah/xmpp/message/chat/</url-pattern>
</servlet-mapping>
+ <servlet>
+ <servlet-name>presencereciever</servlet-name>
+ <servlet-class>org.apache.nuvem.cloud.xmpp.impl.GooglePresenceServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>presencereciever</servlet-name>
+ <url-pattern>/_ah/xmpp/presence/*</url-pattern>
+ <url-pattern>/_ah/xmpp/subscription/*</url-pattern>
+ </servlet-mapping>
+
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>store.html</welcome-file>
Modified: incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/store.composite
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/store.composite?rev=1146503&r1=1146502&r2=1146503&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/store.composite (original)
+++ incubator/nuvem/trunk/nuvem-samples/store-appengine-webapp/war/store.composite Wed Jul 13 22:24:05 2011
@@ -75,15 +75,16 @@
<component name="XMPP">
<implementation.composite name="nuvem:xmppgoogle" />
</component>
+
<component name="ShipmentService">
<implementation.java class="services.ShipmentServiceImpl" />
<reference name="observer" target="ShipmentObserver" />
</component>
-
+
<component name="XMPPReciever">
<implementation.web web-uri="/_ah/xmpp/message/chat/"/>
- <reference name="endPoint" target="XMPPComponent/XMPPEndPoint">
+ <reference name="endPoint" target="XMPP/XMPPEndPoint">
<interface.java interface="org.apache.nuvem.cloud.xmpp.XMPPEndPoint" />
</reference>
</component>
Modified: incubator/nuvem/trunk/nuvem-samples/store-assets/src/main/java/services/XMPPShipmentObserver.java
URL: http://svn.apache.org/viewvc/incubator/nuvem/trunk/nuvem-samples/store-assets/src/main/java/services/XMPPShipmentObserver.java?rev=1146503&r1=1146502&r2=1146503&view=diff
==============================================================================
--- incubator/nuvem/trunk/nuvem-samples/store-assets/src/main/java/services/XMPPShipmentObserver.java (original)
+++ incubator/nuvem/trunk/nuvem-samples/store-assets/src/main/java/services/XMPPShipmentObserver.java Wed Jul 13 22:24:05 2011
@@ -24,6 +24,10 @@ import org.apache.nuvem.cloud.xmpp.JID;
import org.apache.nuvem.cloud.xmpp.Status;
import org.apache.nuvem.cloud.xmpp.XMPPEndPoint;
import org.apache.nuvem.cloud.xmpp.message.MessageBuilder;
+import org.apache.nuvem.cloud.xmpp.presence.Presence;
+import org.apache.nuvem.cloud.xmpp.presence.PresenceBuilder;
+import org.apache.nuvem.cloud.xmpp.presence.PresenceListener;
+import org.oasisopen.sca.annotation.Init;
import org.oasisopen.sca.annotation.Reference;
import org.oasisopen.sca.annotation.Scope;
@@ -33,16 +37,42 @@ public class XMPPShipmentObserver implem
@Reference
private XMPPEndPoint endpoint;
+ private static final String message = "Welcome to Nuvem Store";
+
+ @Init
+ public void init() {
+ endpoint.presenceManager().registerListener(new Greeter(endpoint));
+ }
+
public void onStatusUpdate(Shipment shipment, Event event) {
JID jid = shipment.getJidToUpdate();
System.out.println("inviting user of jid : " + jid.asString());
Status status = endpoint.invite(jid.asString());
System.out.println("status of invite:" + status.hasErrors());
if (!status.hasErrors()) {
- endpoint.sendMessage(new MessageBuilder().toRecipient(
- shipment.getJidToUpdate().asString()).containing(
- event.toString()).build());
+ endpoint.sendMessage(new MessageBuilder()
+ .toRecipient(shipment.getJidToUpdate().asString())
+ .containing(event.toString()).build());
+ }
+ }
+
+ public static class Greeter implements PresenceListener {
+ private XMPPEndPoint xmppEndPoint;
+
+ public Greeter(XMPPEndPoint endPoint) {
+ this.xmppEndPoint = endPoint;
}
+
+ @Override
+ public void listen(Presence presence) {
+ if (presence.type() == Presence.Type.AVAILABLE) {
+ PresenceBuilder builder = new PresenceBuilder()
+ .to(presence.from()).withStatus(message)
+ .withType(Presence.Type.AVAILABLE);
+ xmppEndPoint.presenceManager().sendPresence(builder.build());
+ }
+ }
+
}
}