Skip to content

Commit

Permalink
added otto
Browse files Browse the repository at this point in the history
  • Loading branch information
pyricau committed Sep 9, 2013
1 parent 8c399a9 commit 185aa3d
Show file tree
Hide file tree
Showing 21 changed files with 304 additions and 36 deletions.
2 changes: 1 addition & 1 deletion AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
android:icon="@drawable/ic_launcher"
>

<activity android:name=".RegisterActivity"
<activity android:name=".CartActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
Expand Down
7 changes: 6 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
<fest-android.version>1.0.5</fest-android.version>
<fest-assert.version>2.0M10</fest-assert.version>
<robolectric.version>2.0</robolectric.version>
<otto.version>2.0-SNAPSHOT</otto.version>
</properties>

<dependencies>
Expand Down Expand Up @@ -60,7 +61,6 @@
<version>${fest-android.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
Expand All @@ -85,6 +85,11 @@
<version>${dagger.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.squareup</groupId>
<artifactId>otto</artifactId>
<version>${otto.version}</version>
</dependency>
</dependencies>

<build>
Expand Down
9 changes: 9 additions & 0 deletions res/layout/cart.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">


</LinearLayout>
2 changes: 2 additions & 0 deletions res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Ship Faster</string>
<string name="swipe_success">Swipe success</string>
<string name="swipe_failure">Swipe failure</string>
</resources>
6 changes: 3 additions & 3 deletions shipfaster.iml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,14 @@
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/r" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/target/generated-test-sources/test-annotations" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target/classes" />
<excludeFolder url="file://$MODULE_DIR$/target/generated-sources/combined-assets" />
<excludeFolder url="file://$MODULE_DIR$/target/generated-sources/combined-resources" />
<excludeFolder url="file://$MODULE_DIR$/target/generated-sources/extracted-dependencies" />
<excludeFolder url="file://$MODULE_DIR$/target/lint-results" />
<excludeFolder url="file://$MODULE_DIR$/target/maven-archiver" />
<excludeFolder url="file://$MODULE_DIR$/target/maven-status" />
<excludeFolder url="file://$MODULE_DIR$/target/test-classes" />
</content>
<orderEntry type="inheritedJdk" />
Expand Down Expand Up @@ -82,6 +81,7 @@
<orderEntry type="library" name="Maven: com.squareup.dagger:dagger:1.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.squareup.dagger:dagger-compiler:1.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.squareup:javawriter:2.1.1" level="project" />
<orderEntry type="library" name="Maven: com.squareup:otto:2.0-SNAPSHOT" level="project" />
</component>
</module>

6 changes: 6 additions & 0 deletions src/main/java/com/squareup/shipfaster/AuthActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.squareup.shipfaster;

import android.app.Activity;

public class AuthActivity extends Activity {
}
11 changes: 11 additions & 0 deletions src/main/java/com/squareup/shipfaster/Card.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.squareup.shipfaster;

import java.io.Serializable;

public class Card implements Serializable {

public static Card fakeCard() {
return new Card();
}

}
49 changes: 49 additions & 0 deletions src/main/java/com/squareup/shipfaster/CardReader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.squareup.shipfaster;

import com.squareup.otto.Bus;
import java.util.Random;
import javax.inject.Inject;

public class CardReader {

@Inject Bus bus;

private Thread readingThread;

public void start() {
// Simulating reading of cards
readingThread = new Thread() {
@Override public void run() {
Random random = new Random();
while(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// stop() called
return;
}

boolean success = random.nextInt(2) == 0;
if (success) {
onSwipeSuccess(Card.fakeCard());
} else {
onSwipeFailed();
}
}
}
};
}

public void stop() {
readingThread.interrupt();
readingThread = null;
}

private void onSwipeSuccess(Card card) {
bus.postOnMainThread(new SwipeEvent(true, card));
}

private void onSwipeFailed() {
bus.postOnMainThread((new SwipeEvent(false, null)));
}
}
28 changes: 27 additions & 1 deletion src/main/java/com/squareup/shipfaster/Cart.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
package com.squareup.shipfaster;

import android.content.Context;
import com.squareup.otto.Subscribe;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;

@Singleton
public class Cart {

private final Settings settings;
private final Context context;
private final List<Item> items = new ArrayList<Item>();

@Inject public Cart(Settings settings) {
private boolean authStarted;

@Inject public Cart(Settings settings, Context context) {
this.settings = settings;
this.context = context;
}

public boolean canSwipeCard() {
Expand All @@ -28,4 +36,22 @@ public int getAmountDue() {
public void addItem(Item item) {
items.add(item);
}


@Subscribe public void onSwipe(SwipeEvent event) {
if (event.successfulSwipe && canSwipeCard()) {
startAuth(event.card);
}
}

private void startAuth(Card card) {
authStarted = true;
//Intent intent = new Intent(context, AuthActivity.class);
//intent.putExtra("card", card);
//context.startActivity(intent);
}

public boolean authStarted() {
return authStarted;
}
}
44 changes: 44 additions & 0 deletions src/main/java/com/squareup/shipfaster/CartActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.squareup.shipfaster;

import android.app.Activity;
import android.os.Bundle;
import com.squareup.otto.Bus;
import dagger.ObjectGraph;
import java.util.Set;
import javax.inject.Inject;

public class CartActivity extends Activity {

@Inject Cart cart;

@Inject @RegisterOnBus Set<Object> subscribers;
@Inject Bus bus;
@Inject CardReader cardReader;

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Creation of the object graph
CartModule module = new CartModule();
module.setContext(this);
ObjectGraph objectGraph = ObjectGraph.create(module);
objectGraph.inject(this);

// Registration of bus subscribers
for(Object subscriber : subscribers) {
bus.register(subscriber);
}

setContentView(R.layout.cart);
}

@Override protected void onResume() {
super.onResume();
cardReader.start();
}

@Override protected void onPause() {
super.onPause();
cardReader.stop();
}
}
41 changes: 41 additions & 0 deletions src/main/java/com/squareup/shipfaster/CartModule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.squareup.shipfaster;

import android.content.Context;
import com.squareup.otto.Bus;
import com.squareup.otto.OttoBus;
import com.squareup.shipfaster.log.EventLogger;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;

import static dagger.Provides.Type.SET;

@Module(injects = CartActivity.class)
public class CartModule {

Context context;

public void setContext(Context context) {
this.context= context;
}

@Provides Settings provideSettings(FileBackedSettings settings) {
return settings;
}

@Provides @Singleton Bus provideBus() {
return new OttoBus();
}

@Provides(type = SET) @RegisterOnBus Object registerCart(Cart cart) {
return cart;
}

@Provides(type = SET) @RegisterOnBus Object registerEventLogger(EventLogger logger) {
return logger;
}

@Provides Context provideContext() {
return context;
}
}
17 changes: 0 additions & 17 deletions src/main/java/com/squareup/shipfaster/RegisterActivity.java

This file was deleted.

12 changes: 0 additions & 12 deletions src/main/java/com/squareup/shipfaster/RegisterModule.java

This file was deleted.

13 changes: 13 additions & 0 deletions src/main/java/com/squareup/shipfaster/RegisterOnBus.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.squareup.shipfaster;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.CLASS;

@Documented @Target({ METHOD, FIELD}) @Retention(CLASS)
public @interface RegisterOnBus {
}
14 changes: 14 additions & 0 deletions src/main/java/com/squareup/shipfaster/SwipeEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.squareup.shipfaster;


public class SwipeEvent {

public final boolean successfulSwipe;
public final Card card;

public SwipeEvent(boolean successfulSwipe, Card card) {
this.successfulSwipe = successfulSwipe;
this.card = card;
}

}
20 changes: 20 additions & 0 deletions src/main/java/com/squareup/shipfaster/log/EventLogger.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.squareup.shipfaster.log;

import com.squareup.otto.Bus;
import com.squareup.otto.Subscribe;
import com.squareup.shipfaster.SwipeEvent;
import javax.inject.Inject;

public class EventLogger {

private final FileLogger fileLogger;

@Inject EventLogger(FileLogger fileLogger, Bus bus) {
this.fileLogger = fileLogger;
bus.register(this);
}

@Subscribe public void logSwipe(SwipeEvent event) {
fileLogger.add(new SwipeLog(event.successfulSwipe));
}
}
14 changes: 14 additions & 0 deletions src/main/java/com/squareup/shipfaster/log/FileLogger.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.squareup.shipfaster.log;

import javax.inject.Inject;

public class FileLogger {

@Inject FileLogger() {
}

public void add(Log log) {
// Fake logging.
System.out.println(log);
}
}
5 changes: 5 additions & 0 deletions src/main/java/com/squareup/shipfaster/log/Log.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.squareup.shipfaster.log;

public interface Log {
String getMessage();
}
Loading

0 comments on commit 185aa3d

Please sign in to comment.