Skip to content
This repository has been archived by the owner on May 18, 2019. It is now read-only.

Commit

Permalink
Supporting multiple build environments. GREENHOUSE-507
Browse files Browse the repository at this point in the history
  • Loading branch information
royclarkson committed Jun 3, 2011
1 parent d0ff4c1 commit 03ce921
Show file tree
Hide file tree
Showing 19 changed files with 229 additions and 110 deletions.
1 change: 1 addition & 0 deletions filters/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
prod.properties
5 changes: 5 additions & 0 deletions filters/dev.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
consumer.token.key=e9fbccdae98d5696
consumer.token.secret=9fa283e1eca2d4e8
connection.repository.encryption.password=password
connection.repository.encryption.salt=5c0744940b5c369b
base.url=http://10.0.2.2:8080/greenhouse/
146 changes: 108 additions & 38 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
<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/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.springsource</groupId>
<artifactId>greenhouse</artifactId>
<version>1.0.0.BUILD-SNAPSHOT</version>
<packaging>apk</packaging>
<name>greenhouse-android</name>
<url>http://www.springsource.org</url>
<url>http://www.springsource.org</url>
<organization>
<name>SpringSource</name>
<url>http://www.springsource.org</url>
</organization>

<properties>
<properties>
<env>dev</env>
<android-platform>7</android-platform>
<android-emulator>7</android-emulator>
<maven-resources-plugin-version>2.5</maven-resources-plugin-version>
<maven-android-plugin-version>2.8.4</maven-android-plugin-version>
<maven-compiler-plugin-version>2.3.2</maven-compiler-plugin-version>
<android-version>2.1_r1</android-version>
Expand All @@ -25,15 +27,92 @@
<jackson-version>1.8.0</jackson-version>
</properties>

<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${android-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.android</groupId>
<artifactId>spring-android-auth</artifactId>
<version>${spring-android-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-core</artifactId>
<version>${spring-social-version}</version>
<exclusions>
<exclusion>
<artifactId>spring-web</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson-version}</version>
</dependency>
</dependencies>

<build>
<sourceDirectory>src</sourceDirectory>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src</sourceDirectory>
<filters>
<filter>${project.basedir}/filters/${env}.properties</filter>
</filters>
<resources>
<!-- copy and filter all xml resource files -->
<resource>
<directory>${project.basedir}/res</directory>
<filtering>true</filtering>
<targetPath>${project.build.directory}/filtered-res</targetPath>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!-- copy only. do not filter non-xml resource files -->
<resource>
<directory>${project.basedir}/res</directory>
<filtering>false</filtering>
<targetPath>${project.build.directory}/filtered-res</targetPath>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
<!-- copy and filter the Android Manifest file -->
<resource>
<directory>${project.basedir}</directory>
<filtering>true</filtering>
<targetPath>${project.build.directory}/filtered-manifest</targetPath>
<includes>
<include>AndroidManifest.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin-version}</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>maven-android-plugin</artifactId>
<version>${maven-android-plugin-version}</version>
<configuration>
<androidManifestFile>${project.build.directory}/filtered-manifest/AndroidManifest.xml</androidManifestFile>
<assetsDirectory>${project.basedir}/assets</assetsDirectory>
<resourceDirectory>${project.build.directory}/filtered-res</resourceDirectory>
<sdk>
<platform>${android-platform}</platform>
</sdk>
Expand All @@ -56,52 +135,43 @@
</plugins>
</build>

<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${android-version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.android</groupId>
<artifactId>spring-android-auth</artifactId>
<version>${spring-android-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-core</artifactId>
<version>${spring-social-version}</version>
<exclusions>
<exclusion>
<artifactId>spring-web</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson-version}</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>

<repositories>
<!-- For testing against latest Spring snapshots -->
<repository>
<id>org.springframework.maven.snapshot</id>
<name>Spring Maven Snapshot Repository</name>
<url>http://maven.springframework.org/snapshot</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<!-- For developing against latest Spring milestones -->
<repository>
<id>org.springframework.maven.milestone</id>
<name>Spring Maven Milestone Repository</name>
<url>http://maven.springframework.org/milestone</url>
<snapshots><enabled>false</enabled></snapshots>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

</project>
3 changes: 0 additions & 3 deletions res/values/connect_settings.xml

This file was deleted.

8 changes: 8 additions & 0 deletions res/values/env_settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<resources>
<string name="consumer_token_key">${consumer.token.key}</string>
<string name="consumer_token_secret">${consumer.token.secret}</string>
<string name="connection_repository_encryption_password">${connection.repository.encryption.password}</string>
<string name="connection_repository_encryption_salt">${connection.repository.encryption.salt}</string>
<string name="base_url">${base.url}</string>
<string name="oauth_callback_url">x-com-springsource-greenhouse://oauth-response</string>
</resources>
4 changes: 2 additions & 2 deletions src/com/springsource/greenhouse/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
package com.springsource.greenhouse;

import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.greenhouse.api.GreenhouseApi;
import org.springframework.social.greenhouse.api.Greenhouse;

import android.content.Intent;
import android.os.Bundle;
Expand Down Expand Up @@ -84,6 +84,6 @@ protected void onCreate(Bundle savedInstanceState) {
// Private methods
//***************************************
private boolean isConnected() {
return connectionRepository.findPrimaryConnectionToApi(GreenhouseApi.class) != null;
return connectionRepository.findPrimaryConnectionToApi(Greenhouse.class) != null;
}
}
40 changes: 28 additions & 12 deletions src/com/springsource/greenhouse/MainApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import org.springframework.social.connect.support.ConnectionFactoryRegistry;
import org.springframework.social.greenhouse.api.Event;
import org.springframework.social.greenhouse.api.EventSession;
import org.springframework.social.greenhouse.api.GreenhouseApi;
import org.springframework.social.greenhouse.api.Greenhouse;
import org.springframework.social.greenhouse.api.Tweet;
import org.springframework.social.greenhouse.connect.GreenhouseConnectionFactory;

Expand All @@ -36,10 +36,8 @@
*/
public class MainApplication extends Application {

private static final String GREENHOUSE_CONSUMER_TOKEN = "e9fbccdae98d5696";

private static final String GREENHOUSE_CONSUMER_TOKEN_SECRET = "9fa283e1eca2d4e8";

// private static final String TAG = MainApplication.class.getSimpleName();

private GreenhouseConnectionFactory connectionFactory;

private ConnectionRepository connectionRepository;
Expand All @@ -59,17 +57,35 @@ public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();

connectionFactory = new GreenhouseConnectionFactory(GREENHOUSE_CONSUMER_TOKEN, GREENHOUSE_CONSUMER_TOKEN_SECRET);
connectionFactory = new GreenhouseConnectionFactory(getConsumerTokenKey(), getConsumerTokenSecret(), getApiUrlBase());
ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
registry.addConnectionFactory(connectionFactory);
connectionRepository = new SQLiteConnectionRepository(new SQLiteConnectionRepositoryHelper(this), registry, AndroidEncryptors.text("password", "5c0744940b5c369b"));
connectionRepository = new SQLiteConnectionRepository(new SQLiteConnectionRepositoryHelper(this), registry, AndroidEncryptors.text(getEncryptionPassword(), getEncryptionSalt()));
}


//***************************************
// Private methods
//***************************************
private String getConsumerTokenKey() {
return getString(R.string.consumer_token_key);
}

private String getConsumerTokenSecret() {
return getString(R.string.consumer_token_secret);
}

private String getEncryptionPassword() {
return getString(R.string.connection_repository_encryption_password);
}

private String getEncryptionSalt() {
return getString(R.string.connection_repository_encryption_salt);
}

private String getApiUrlBase() {
return getString(R.string.base_url);
}


//***************************************
Expand All @@ -83,12 +99,12 @@ public GreenhouseConnectionFactory getConnectionFactory() {
return connectionFactory;
}

public Connection<GreenhouseApi> getPrimaryConnection() {
return getConnectionRepository().findPrimaryConnectionToApi(GreenhouseApi.class);
public Connection<Greenhouse> getPrimaryConnection() {
return getConnectionRepository().findPrimaryConnectionToApi(Greenhouse.class);
}

public GreenhouseApi getGreenhouseApi() {
Connection<GreenhouseApi> connection = getPrimaryConnection();
public Greenhouse getGreenhouseApi() {
Connection<Greenhouse> connection = getPrimaryConnection();
if (connection != null) {
return connection.getApi();
}
Expand Down
6 changes: 3 additions & 3 deletions src/com/springsource/greenhouse/WebOAuthActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.connect.DuplicateConnectionException;
import org.springframework.social.greenhouse.api.GreenhouseApi;
import org.springframework.social.greenhouse.api.Greenhouse;
import org.springframework.social.greenhouse.connect.GreenhouseConnectionFactory;
import org.springframework.social.oauth1.AuthorizedRequestToken;
import org.springframework.social.oauth1.OAuth1Parameters;
Expand Down Expand Up @@ -111,7 +111,7 @@ public void onStart() {
// Private methods
//***************************************
private String getOAuthCallbackUrl() {
return getString(R.string.greenhouse_oauth_callback_url);
return getString(R.string.oauth_callback_url);
}

private void displayGreenhouseAuthorization(OAuthToken requestToken) {
Expand Down Expand Up @@ -238,7 +238,7 @@ protected Void doInBackground(String... params) {
deleteRequestToken();

// Persist the connection and Access Token to the repository
Connection<GreenhouseApi> connection = connectionFactory.createConnection(accessToken);
Connection<Greenhouse> connection = connectionFactory.createConnection(accessToken);

try {
connectionRepository.addConnection(connection);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
*
* @author Roy Clarkson
*/
public interface GreenhouseApi {
public interface Greenhouse {

/**
* Returns true if the GreenhouseApi is configured to act on behalf of a user (eg., if it was created with OAuth credentials).
Expand Down
Loading

0 comments on commit 03ce921

Please sign in to comment.