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