You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by vs...@apache.org on 2009/02/17 15:31:22 UTC

svn commit: r745100 - in /incubator/shindig/sandbox/trunk/shindig-spring-example: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/shindig/ src/main/java/org/apache/shindig/samples/ src/main/java/or...

Author: vsiveton
Date: Tue Feb 17 14:31:21 2009
New Revision: 745100

URL: http://svn.apache.org/viewvc?rev=745100&view=rev
Log:
o added shindig-spring-example project
see http://shindig-dev.markmail.org/message/h5bbbswttm7m7w6f
o Credit to Chico Charlesworth

Added:
    incubator/shindig/sandbox/trunk/shindig-spring-example/
    incubator/shindig/sandbox/trunk/shindig-spring-example/README   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/pom.xml   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/ApplicationContextFactory.java   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/GuiceModule.java   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/servlet/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/servlet/ApplicationServletContextListener.java   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/spi/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/spi/MockPersonSpi.java   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/application-context.xml   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/log4j.xml   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/WEB-INF/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/WEB-INF/web.xml   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/index.jsp   (with props)
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/spi/
    incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/spi/PersonSpiTest.java   (with props)

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/README
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/README?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/README (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/README Tue Feb 17 14:31:21 2009
@@ -0,0 +1,14 @@
+
+Installing and running the shindig-spring-example
+=================================================
+
+This is a shindig samples project showcasing spring integration into a mock social shindig implementation.
+
+Steps to install and run shindig-spring-example
+ 1. Install shindig locally (see http://incubator.apache.org/shindig/#java)
+ 2. Open a command-prompt, and 'cd' to where shindig-spring-example code is (e.g. cd ~/src/shindig-spring-example)
+ 3. mvn install
+ 4. mvn jetty:run
+ 5. Open a browser and try the following URLs:
+    - http://localhost:8080/social/rest/people/canonical/@self?format=xml
+    - http://localhost:8080/social/rest/people/canonical/@friends?format=xml

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/README
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/README
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/pom.xml
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/pom.xml?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/pom.xml (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/pom.xml Tue Feb 17 14:31:21 2009
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.shindig.samples</groupId>
+  <artifactId>shindig-spring-example</artifactId>
+  <packaging>war</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>shindig-spring-example</name>
+  <url/>
+  
+  <prerequisites>
+    <maven>2.0.8</maven>
+  </prerequisites>
+  
+  <build>
+  	<finalName>${project.artifactId}</finalName>
+	<defaultGoal>install</defaultGoal>
+    <resources>
+        <resource>
+            <directory>src/main/resources</directory>
+            <filtering>true</filtering>
+        </resource>
+    </resources>
+  	<plugins>
+	<plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.0.2</version>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+          <showDeprecation>true</showDeprecation>
+          <compilerArgument>-Xlint:unchecked,deprecation,fallthrough,finally</compilerArgument>
+        </configuration>
+	</plugin>
+	<plugin>
+        <artifactId>maven-source-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-sources</id>
+            <phase>package</phase>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <excludeResources>false</excludeResources>
+          <attach>true</attach>
+        </configuration>
+	</plugin>
+	<plugin>
+		<groupId>org.apache.maven.plugins</groupId>
+		<artifactId>maven-eclipse-plugin</artifactId>
+		<version>2.3</version>
+		<configuration>
+			<wtpversion>1.5</wtpversion>
+		</configuration>
+	</plugin>
+	<plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+    </plugin>
+	<plugin>
+        <groupId>org.mortbay.jetty</groupId>
+        <artifactId>maven-jetty-plugin</artifactId>
+        <configuration>
+          <webAppSourceDirectory>${basedir}/target/shindig-spring-example</webAppSourceDirectory>
+          <contextPath>/</contextPath>
+          <webXml>${basedir}/target/shindig-spring-example/WEB-INF/web.xml</webXml>
+        </configuration>
+      </plugin>
+	<plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.4.2</version>
+    </plugin>
+    <plugin>
+		<artifactId>maven-resources-plugin</artifactId>
+		<version>2.3</version>
+	</plugin>
+	</plugins>
+  </build>
+  
+  <dependencies>	
+    <!-- shindig dependencies -->
+    <dependency>
+      <groupId>org.apache.shindig</groupId>
+      <artifactId>shindig-social-api</artifactId>
+      <version>${shindig.version}</version>
+    </dependency>    
+    
+    <!-- shindig test dependencies -->
+    <dependency>
+      <groupId>org.apache.shindig</groupId>
+      <artifactId>shindig-common</artifactId>
+      <version>${shindig.version}</version>
+      <classifier>tests</classifier>
+  	  <scope>test</scope>
+    </dependency>
+    
+	<!-- Spring dependencies -->
+	<dependency>
+		<groupId>org.springframework</groupId>
+		<artifactId>spring</artifactId>
+		<version>${spring.version}</version>
+	</dependency>
+	<dependency>
+		<groupId>org.springframework</groupId>
+		<artifactId>spring-context</artifactId>
+		<version>${spring.version}</version>
+	</dependency>
+	<dependency>
+		<groupId>org.springframework</groupId>
+		<artifactId>spring-context-support</artifactId>
+		<version>${spring.version}</version>
+	</dependency>		
+	<dependency>
+		<groupId>org.springframework</groupId>
+		<artifactId>spring-core</artifactId>
+		<version>${spring.version}</version>
+	</dependency>	
+	<dependency>
+		<groupId>org.springframework</groupId>
+		<artifactId>spring-beans</artifactId>
+		<version>${spring.version}</version>
+	</dependency>
+	
+	<!-- Spring test dependencies -->
+	<dependency>
+		<groupId>org.springframework</groupId>
+		<artifactId>spring-test</artifactId>
+		<version>${spring.version}</version>
+		<scope>test</scope>
+	</dependency>
+	
+	<!-- Apache commons logging -->
+	<dependency>
+		<groupId>commons-logging</groupId>
+		<artifactId>commons-logging</artifactId>
+		<version>${logging.version}</version>
+	</dependency>
+	
+	<!-- Apache commons dependencies -->
+	<dependency>
+		<groupId>commons-collections</groupId>
+		<artifactId>commons-collections</artifactId>
+		<version>${collections.version}</version>
+	</dependency>	
+	
+	<!-- JUnit 4 -->
+	<dependency>
+		<groupId>junit</groupId>
+		<artifactId>junit</artifactId>
+		<version>${junit.version}</version>
+		<scope>test</scope>
+	</dependency>
+    
+    <!-- Servlet and JSP dependencies -->
+	<dependency>
+		<groupId>javax.servlet</groupId>
+		<artifactId>servlet-api</artifactId>
+		<version>${servlet.version}</version>
+		<scope>compile</scope>
+	</dependency>
+	<dependency>
+		<groupId>javax.servlet</groupId>
+		<artifactId>jstl</artifactId>
+		<version>${jstl.version}</version>
+		<scope>runtime</scope>
+	</dependency>
+	
+  </dependencies>
+  
+  <!-- dependency versions -->
+  <properties>
+  	<shindig.version>1.1-SNAPSHOT</shindig.version>
+  	<spring.version>2.5.2</spring.version>
+	<logging.version>1.1</logging.version>
+	<collections.version>3.2</collections.version>
+	<junit.version>4.4</junit.version>
+  	<servlet.version>2.4</servlet.version>
+	<jstl.version>1.1.2</jstl.version>
+  </properties>
+  
+</project>

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/ApplicationContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/ApplicationContextFactory.java?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/ApplicationContextFactory.java (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/ApplicationContextFactory.java Tue Feb 17 14:31:21 2009
@@ -0,0 +1,33 @@
+package org.apache.shindig.samples.springexample.config;
+
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * A factory for managing the ApplicationContext instance.
+ * 
+ */
+public class ApplicationContextFactory {
+
+  /** The Constant LOCATIONS. */
+  private static final String[] LOCATIONS = {"application-context.xml"};
+  
+  /** The Constant CONTEXT. */
+  private static final AbstractApplicationContext CONTEXT = new ClassPathXmlApplicationContext(LOCATIONS);
+  
+  /**
+   * Instantiates a new application context factory.
+   */
+  private ApplicationContextFactory() {
+  }
+  
+  /**
+   * Gets the application context.
+   * 
+   * @return the application context
+   */
+  public static AbstractApplicationContext getApplicationContext() {
+    return CONTEXT;
+  }
+  
+}

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/ApplicationContextFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/ApplicationContextFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/GuiceModule.java
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/GuiceModule.java?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/GuiceModule.java (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/GuiceModule.java Tue Feb 17 14:31:21 2009
@@ -0,0 +1,32 @@
+package org.apache.shindig.samples.springexample.config;
+
+import org.apache.shindig.social.core.config.SocialApiGuiceModule;
+import org.apache.shindig.social.opensocial.spi.PersonService;
+
+import org.springframework.context.ApplicationContext;
+
+/**
+ * Guice configuration module that binds required shindig bindings
+ * 
+ */
+public class GuiceModule extends SocialApiGuiceModule {
+  
+  /** The Constant PERSON_SPI_BEAN_NAME. */
+  private static final String PERSON_SPI_BEAN_NAME = "personSpi";
+
+  /* (non-Javadoc)
+   * @see org.apache.shindig.social.core.config.SocialApiGuiceModule#configure()
+   */
+  @Override
+  protected void configure() {    
+    // Get spring application context
+    ApplicationContext applicationContext = ApplicationContextFactory.getApplicationContext();
+    
+    // Bind Mock Person Spi
+    this.bind(PersonService.class).toInstance((PersonService) applicationContext.getBean(PERSON_SPI_BEAN_NAME));
+    
+    // Use SocialApiGuiceModule to configure shindig
+    super.configure();
+  }
+
+}

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/GuiceModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/config/GuiceModule.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/servlet/ApplicationServletContextListener.java
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/servlet/ApplicationServletContextListener.java?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/servlet/ApplicationServletContextListener.java (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/servlet/ApplicationServletContextListener.java Tue Feb 17 14:31:21 2009
@@ -0,0 +1,22 @@
+
+package org.apache.shindig.samples.springexample.servlet;
+
+import org.apache.shindig.samples.springexample.config.ApplicationContextFactory;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+/**
+ * Destroys Spring's ApplicationContext that is managed by {@link ApplicationContextFactory} at shutdown,
+ * forcing bean defined destroy-methods to be invoked.
+ *  
+ */
+public class ApplicationServletContextListener implements ServletContextListener {
+
+  public void contextInitialized(ServletContextEvent event) {}
+
+	public void contextDestroyed(ServletContextEvent event) {
+	  ApplicationContextFactory.getApplicationContext().destroy();	  
+	}
+
+}

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/servlet/ApplicationServletContextListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/servlet/ApplicationServletContextListener.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/spi/MockPersonSpi.java
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/spi/MockPersonSpi.java?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/spi/MockPersonSpi.java (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/spi/MockPersonSpi.java Tue Feb 17 14:31:21 2009
@@ -0,0 +1,83 @@
+package org.apache.shindig.samples.springexample.spi;
+
+import org.apache.shindig.auth.SecurityToken;
+import org.apache.shindig.common.util.ImmediateFuture;
+import org.apache.shindig.protocol.ResponseError;
+import org.apache.shindig.protocol.RestfulCollection;
+import org.apache.shindig.social.core.model.PersonImpl;
+import org.apache.shindig.social.opensocial.model.Person;
+import org.apache.shindig.social.opensocial.spi.CollectionOptions;
+import org.apache.shindig.social.opensocial.spi.GroupId;
+import org.apache.shindig.social.opensocial.spi.PersonService;
+import org.apache.shindig.social.opensocial.spi.SocialSpiException;
+import org.apache.shindig.social.opensocial.spi.UserId;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.Future;
+
+/**
+ * Mock implementation of {@link PersonService}.
+ * 
+ */
+public class MockPersonSpi implements PersonService {
+  
+  /** The Constant JOHN. */
+  private static final UserId JOHN = new UserId(UserId.Type.userId, "john.doe");
+  
+  /** The Constant JANE. */
+  private static final UserId JANE = new UserId(UserId.Type.userId, "jane.doe");  
+  
+  /** The Constant FRIENDS. */
+  private static final UserId[] FRIENDS = {JOHN, JANE};
+  
+  /* (non-Javadoc)
+   * @see org.apache.shindig.social.opensocial.spi.PersonService#getPerson(org.apache.shindig.social.opensocial.spi.UserId, java.util.Set, org.apache.shindig.auth.SecurityToken)
+   */
+  public Future<Person> getPerson(UserId userId, Set<String> fields, SecurityToken token)
+    throws SocialSpiException {
+    Person person = new PersonImpl();
+    person.setId(userId.getUserId());
+    return ImmediateFuture.newInstance(person);
+  }
+  
+  /* (non-Javadoc)
+   * @see org.apache.shindig.social.opensocial.spi.PersonService#getPeople(java.util.Set, org.apache.shindig.social.opensocial.spi.GroupId, org.apache.shindig.social.opensocial.spi.CollectionOptions, java.util.Set, org.apache.shindig.auth.SecurityToken)
+   */
+  public Future<RestfulCollection<Person>> getPeople(Set<UserId> userIds, GroupId groupId,
+          CollectionOptions collectionOptions, Set<String> fields, SecurityToken token)
+          throws SocialSpiException {
+    try {
+      List<Person> people = new ArrayList<Person>();
+      switch (groupId.getType()) {
+      case self:        
+        for (UserId userId: userIds) {
+          Person person = new PersonImpl();
+          person.setId(userId.getUserId());
+          people.add(person);
+        }
+        break;
+      case friends:
+        for (UserId userId: FRIENDS) {
+          Person person = new PersonImpl();
+          person.setId(userId.getUserId());
+          people.add(person);
+        }
+        break;
+      case all:
+        throw new SocialSpiException(ResponseError.NOT_IMPLEMENTED, "Not yet implemented",null);      
+      case groupId:
+        throw new SocialSpiException(ResponseError.NOT_IMPLEMENTED, "Not yet implemented",null);
+      case deleted:     
+        throw new SocialSpiException(ResponseError.NOT_IMPLEMENTED, "Not yet implemented",null);
+      default:
+        throw new SocialSpiException(ResponseError.BAD_REQUEST, "Group ID not recognized",null);
+      }
+      return ImmediateFuture.newInstance(new RestfulCollection<Person>(people, 0, people.size()));
+    } catch (Exception e) {    	
+      throw new SocialSpiException(ResponseError.INTERNAL_ERROR, "Exception occurred", e);      
+    }
+  }
+
+}

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/spi/MockPersonSpi.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/java/org/apache/shindig/samples/springexample/spi/MockPersonSpi.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/application-context.xml
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/application-context.xml?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/application-context.xml (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/application-context.xml Tue Feb 17 14:31:21 2009
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="
+			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+	<!-- Mock Person SPI -->
+	<bean id="personSpi" class="org.apache.shindig.samples.springexample.spi.MockPersonSpi"/>
+</beans>
\ No newline at end of file

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/application-context.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/application-context.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/log4j.xml
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/log4j.xml?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/log4j.xml (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/log4j.xml Tue Feb 17 14:31:21 2009
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+  <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
+    <layout class="org.apache.log4j.PatternLayout">
+    	<param name="ConversionPattern" value="%d{dd MM HH:mm:ss} [%t] %-5p %c %M %x - %m\n"/>
+    </layout>    
+  </appender>  
+  <root>
+  	<priority value="warn"/>
+    <appender-ref ref="ConsoleAppender"/>
+  </root>
+</log4j:configuration>
\ No newline at end of file

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/log4j.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/resources/log4j.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/WEB-INF/web.xml?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/WEB-INF/web.xml (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/WEB-INF/web.xml Tue Feb 17 14:31:21 2009
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!DOCTYPE web-app
+    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+    "http://java.sun.com/dtd/web-app_2_4.dtd">
+
+<web-app>
+  <display-name>shindig-spring-example web descriptor</display-name>
+  
+  <!-- configuration -->
+  <!-- If you have your own Guice module(s), put them here as a colon-separated list. -->
+  <context-param>
+    <param-name>guice-modules</param-name>
+    <param-value>
+      org.apache.shindig.common.PropertiesModule:
+      org.apache.shindig.samples.springexample.config.GuiceModule
+    </param-value>
+  </context-param>
+  
+  <!-- Shindig authentication filter -->  
+  <filter>
+    <filter-name>authFilter</filter-name>
+    <filter-class>org.apache.shindig.auth.AuthenticationServletFilter</filter-class>
+  </filter>
+  
+  <filter-mapping>
+    <filter-name>authFilter</filter-name>
+    <url-pattern>/social/*</url-pattern>
+  </filter-mapping>
+  
+  <!-- GuiceServletContextListener -->
+  <listener>
+    <listener-class>org.apache.shindig.common.servlet.GuiceServletContextListener</listener-class>
+  </listener>
+  
+  <!-- ApplicationServletContextListener -->
+  <!-- Destroys Spring's ApplicationContext at shutdown, forcing bean defined destroy-methods to be invoked -->
+  <listener>
+    <listener-class>org.apache.shindig.samples.springexample.servlet.ApplicationServletContextListener</listener-class>
+  </listener>  
+  
+  <!-- Serve REST api -->
+  <servlet>
+    <servlet-name>restapiServlet</servlet-name>
+    <servlet-class>
+      org.apache.shindig.protocol.DataServiceServlet
+    </servlet-class>
+  </servlet>
+
+  <!-- Serve RPC api -->
+  <servlet>
+    <servlet-name>jsonRpcServlet</servlet-name>
+    <servlet-class>
+      org.apache.shindig.protocol.JsonRpcServlet
+    </servlet-class>
+  </servlet>
+  
+  <servlet-mapping>
+    <servlet-name>restapiServlet</servlet-name>
+    <url-pattern>/social/rest/*</url-pattern>
+  </servlet-mapping>
+
+  <servlet-mapping>
+    <servlet-name>jsonRpcServlet</servlet-name>
+    <url-pattern>/social/rpc/*</url-pattern>
+  </servlet-mapping>
+</web-app>

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/index.jsp?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/index.jsp (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/index.jsp Tue Feb 17 14:31:21 2009
@@ -0,0 +1,7 @@
+<html>
+<body>
+<h2>Shindig Spring Example</h2>
+<h3><a href="social/rest/people/canonical/@self?format=xml">Get Canonical Person</a></h3>
+<h3><a href="social/rest/people/canonical/@friends?format=xml">Get Canonical Friends</a></h3>
+</body>
+</html>

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/main/webapp/index.jsp
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/spi/PersonSpiTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/spi/PersonSpiTest.java?rev=745100&view=auto
==============================================================================
--- incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/spi/PersonSpiTest.java (added)
+++ incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/spi/PersonSpiTest.java Tue Feb 17 14:31:21 2009
@@ -0,0 +1,98 @@
+package org.apache.shindig.samples.springexample.spi;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.shindig.auth.SecurityToken;
+import org.apache.shindig.common.testing.FakeGadgetToken;
+import org.apache.shindig.protocol.RestfulCollection;
+import org.apache.shindig.social.opensocial.model.Person;
+import org.apache.shindig.social.opensocial.spi.GroupId;
+import org.apache.shindig.social.opensocial.spi.UserId;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.Future;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * Test that MockPersonSpi works as expected
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = {"/application-context.xml"})
+public class PersonSpiTest {
+  
+  // What's being tested
+  /** The person spi. */
+  @Autowired
+  private MockPersonSpi personSpi;
+
+  /** The Constant CANONICAL_USERNAME. */
+  private static final String CANONICAL_USERNAME = "canonical";
+  
+  /** The Constant JOHN_USERNAME. */
+  private static final String JOHN_USERNAME = "john.doe";
+  
+  /** The Constant JANE_USERNAME. */
+  private static final String JANE_USERNAME = "jane.doe";
+  
+  /** The CANONICA l_ user. */
+  private final UserId CANONICAL_USER = new UserId(UserId.Type.userId, CANONICAL_USERNAME);
+  
+  /** The token. */
+  private final SecurityToken token = new FakeGadgetToken();
+  
+  /**
+   * Should return expected canonical person.
+   * 
+   * @throws Exception the exception
+   */
+  @Test
+  public void shouldReturnCanonicalPerson() throws Exception {    
+    Future<Person> person = personSpi.getPerson(CANONICAL_USER, Person.Field.DEFAULT_FIELDS, token);
+    assertNotNull(person);
+    assertNotNull(person.get());
+    assertEquals(CANONICAL_USERNAME, person.get().getId());
+  }
+
+  /**
+   * Should return expected canonical person.
+   * 
+   * @throws Exception the exception
+   */
+  @Test
+  public void shouldReturnSelf() throws Exception {
+    Set<UserId> userIds = new HashSet<UserId>();
+    userIds.add(CANONICAL_USER);
+    Future<RestfulCollection<Person>> people = personSpi.getPeople(userIds, 
+            new GroupId(GroupId.Type.self, null), null, Person.Field.DEFAULT_FIELDS, token);
+    assertNotNull(people);
+    assertNotNull(people.get());
+    assertEquals(1, people.get().getTotalResults());
+    assertEquals(CANONICAL_USERNAME, people.get().getEntry().get(0).getId());
+  }
+  
+  /**
+   * Should return expected friends.
+   * 
+   * @throws Exception the exception
+   */
+  @Test
+  public void shouldReturnFriends() throws Exception {
+    Set<UserId> userIds = new HashSet<UserId>();
+    userIds.add(CANONICAL_USER);
+    Future<RestfulCollection<Person>> people = personSpi.getPeople(userIds, 
+            new GroupId(GroupId.Type.friends, null), null, Person.Field.DEFAULT_FIELDS, token);
+    assertNotNull(people);
+    assertNotNull(people.get());
+    assertEquals(2, people.get().getTotalResults());
+    assertEquals(JOHN_USERNAME, people.get().getEntry().get(0).getId());
+    assertEquals(JANE_USERNAME, people.get().getEntry().get(1).getId());
+  }
+  
+}

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/spi/PersonSpiTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/shindig/sandbox/trunk/shindig-spring-example/src/test/java/org/apache/shindig/samples/springexample/spi/PersonSpiTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision