0.11.0-incubating release
diff --git a/README.md b/README.md
index a4ac665..35df67d 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,18 @@
-# E-Commerce Recommendation Template
+# E-Commerce Recommendation Template in Java
 
 ## Documentation
 
-Please refer to http://docs.prediction.io/templates/javaecommercerecommendation/quickstart/
+Please refer to
+http://predictionio.incubator.apache.org/templates/javaecommercerecommendation/quickstart/.
 
 ## Versions
 
+### v0.11.0-incubating
+
+- Update to build with PredictionIO 0.11.0-incubating
+- Rename Java package name
+- Update SBT and plugin versions
+
 ### v0.1.2
   add "org.jblas" dependency in build.sbt
 
@@ -19,13 +26,13 @@
 
 ## Development Notes
 
-### import sample data
+### Import Sample Data
 
 ```
 $ python data/import_eventserver.py --access_key <your_access_key>
 ```
 
-### query
+### Query
 
 normal:
 
@@ -77,7 +84,7 @@
 http://localhost:8000/queries.json
 ```
 
-### handle new user
+### Handle New User
 
 new user:
 
@@ -120,7 +127,7 @@
 
 ```
 
-## handle unavailable items
+### Handle Unavailable Items
 
 Set the following items as unavailable (need to specify complete list each time when this list is changed):
 
diff --git a/build.sbt b/build.sbt
index 20e1346..36da38f 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,16 +1,8 @@
-import AssemblyKeys._
-
-assemblySettings
-
-name := "barebone-template"
-
-organization := "io.prediction"
+name := "template-java-ecom-recommender"
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "core" % pioVersion.value % "provided",
-  "org.apache.spark" %% "spark-core" % "1.3.0" % "provided",
-  "org.apache.spark" %% "spark-mllib" % "1.3.0" % "provided",
-  "org.scalatest" % "scalatest_2.10" % "2.2.1" % "test",
-  "com.google.guava" % "guava" % "12.0",
-  "org.jblas" % "jblas" % "1.2.4"
-)
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.11.0-incubating" % "provided",
+  "org.apache.spark"        %% "spark-core" % "1.3.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib" % "1.3.0" % "provided",
+  "com.google.guava"         % "guava" % "12.0",
+  "org.jblas"                % "jblas" % "1.2.4")
diff --git a/engine.json b/engine.json
index 1f8ed0c..0f44544 100644
--- a/engine.json
+++ b/engine.json
@@ -1,7 +1,7 @@
 {
   "id": "default",
   "description": "Default settings",
-  "engineFactory": "org.template.recommendation.RecommendationEngine",
+  "engineFactory": "org.example.recommendation.RecommendationEngine",
   "datasource": {
     "params" : {
       "appName": "javadase"
diff --git a/project/assembly.sbt b/project/assembly.sbt
index 54c3252..e17409e 100644
--- a/project/assembly.sbt
+++ b/project/assembly.sbt
@@ -1 +1 @@
-addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.4")
diff --git a/project/build.properties b/project/build.properties
new file mode 100644
index 0000000..64317fd
--- /dev/null
+++ b/project/build.properties
@@ -0,0 +1 @@
+sbt.version=0.13.15
diff --git a/project/pio-build.sbt b/project/pio-build.sbt
deleted file mode 100644
index 878fc0d..0000000
--- a/project/pio-build.sbt
+++ /dev/null
@@ -1 +0,0 @@
-addSbtPlugin("io.prediction" % "pio-build" % "0.9.0")
\ No newline at end of file
diff --git a/src/main/java/org/template/recommendation/Algorithm.java b/src/main/java/org/example/recommendation/Algorithm.java
similarity index 98%
rename from src/main/java/org/template/recommendation/Algorithm.java
rename to src/main/java/org/example/recommendation/Algorithm.java
index 24b4e5c..349e945 100644
--- a/src/main/java/org/template/recommendation/Algorithm.java
+++ b/src/main/java/org/example/recommendation/Algorithm.java
@@ -1,10 +1,10 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import com.google.common.collect.Sets;
-import io.prediction.controller.java.PJavaAlgorithm;
-import io.prediction.data.storage.Event;
-import io.prediction.data.store.java.LJavaEventStore;
-import io.prediction.data.store.java.OptionHelper;
+import org.apache.predictionio.controller.java.PJavaAlgorithm;
+import org.apache.predictionio.data.storage.Event;
+import org.apache.predictionio.data.store.java.LJavaEventStore;
+import org.apache.predictionio.data.store.java.OptionHelper;
 import org.apache.spark.SparkContext;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
diff --git a/src/main/java/org/template/recommendation/AlgorithmParams.java b/src/main/java/org/example/recommendation/AlgorithmParams.java
similarity index 95%
rename from src/main/java/org/template/recommendation/AlgorithmParams.java
rename to src/main/java/org/example/recommendation/AlgorithmParams.java
index 0466334..4b9c7ed 100644
--- a/src/main/java/org/template/recommendation/AlgorithmParams.java
+++ b/src/main/java/org/example/recommendation/AlgorithmParams.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
-import io.prediction.controller.Params;
+import org.apache.predictionio.controller.Params;
 
 import java.util.List;
 
diff --git a/src/main/java/org/template/recommendation/DataSource.java b/src/main/java/org/example/recommendation/DataSource.java
similarity index 94%
rename from src/main/java/org/template/recommendation/DataSource.java
rename to src/main/java/org/example/recommendation/DataSource.java
index b9648c3..90ac975 100644
--- a/src/main/java/org/template/recommendation/DataSource.java
+++ b/src/main/java/org/example/recommendation/DataSource.java
@@ -1,13 +1,13 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.java.PJavaDataSource;
-import io.prediction.data.storage.Event;
-import io.prediction.data.storage.PropertyMap;
-import io.prediction.data.store.java.OptionHelper;
-import io.prediction.data.store.java.PJavaEventStore;
+import org.apache.predictionio.controller.EmptyParams;
+import org.apache.predictionio.controller.java.PJavaDataSource;
+import org.apache.predictionio.data.storage.Event;
+import org.apache.predictionio.data.storage.PropertyMap;
+import org.apache.predictionio.data.store.java.OptionHelper;
+import org.apache.predictionio.data.store.java.PJavaEventStore;
 import org.apache.spark.SparkContext;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
diff --git a/src/main/java/org/template/recommendation/DataSourceParams.java b/src/main/java/org/example/recommendation/DataSourceParams.java
similarity index 73%
rename from src/main/java/org/template/recommendation/DataSourceParams.java
rename to src/main/java/org/example/recommendation/DataSourceParams.java
index 25ac426..4651b92 100644
--- a/src/main/java/org/template/recommendation/DataSourceParams.java
+++ b/src/main/java/org/example/recommendation/DataSourceParams.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
-import io.prediction.controller.Params;
+import org.apache.predictionio.controller.Params;
 
 public class DataSourceParams implements Params{
     private final String appName;
diff --git a/src/main/java/org/template/recommendation/Item.java b/src/main/java/org/example/recommendation/Item.java
similarity index 94%
rename from src/main/java/org/template/recommendation/Item.java
rename to src/main/java/org/example/recommendation/Item.java
index 1365045..2159beb 100644
--- a/src/main/java/org/template/recommendation/Item.java
+++ b/src/main/java/org/example/recommendation/Item.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import java.io.Serializable;
 import java.util.Set;
diff --git a/src/main/java/org/template/recommendation/ItemScore.java b/src/main/java/org/example/recommendation/ItemScore.java
similarity index 95%
rename from src/main/java/org/template/recommendation/ItemScore.java
rename to src/main/java/org/example/recommendation/ItemScore.java
index a3fca92..23c3fdb 100644
--- a/src/main/java/org/template/recommendation/ItemScore.java
+++ b/src/main/java/org/example/recommendation/ItemScore.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import java.io.Serializable;
 
diff --git a/src/main/java/org/template/recommendation/Model.java b/src/main/java/org/example/recommendation/Model.java
similarity index 96%
rename from src/main/java/org/template/recommendation/Model.java
rename to src/main/java/org/example/recommendation/Model.java
index 129cb2a..ebf42e5 100644
--- a/src/main/java/org/template/recommendation/Model.java
+++ b/src/main/java/org/example/recommendation/Model.java
@@ -1,7 +1,7 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
-import io.prediction.controller.Params;
-import io.prediction.controller.PersistentModel;
+import org.apache.predictionio.controller.Params;
+import org.apache.predictionio.controller.PersistentModel;
 import org.apache.spark.SparkContext;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
diff --git a/src/main/java/org/template/recommendation/PredictedResult.java b/src/main/java/org/example/recommendation/PredictedResult.java
similarity index 92%
rename from src/main/java/org/template/recommendation/PredictedResult.java
rename to src/main/java/org/example/recommendation/PredictedResult.java
index b89c3a9..54d7ade 100644
--- a/src/main/java/org/template/recommendation/PredictedResult.java
+++ b/src/main/java/org/example/recommendation/PredictedResult.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import java.io.Serializable;
 import java.util.List;
diff --git a/src/main/java/org/template/recommendation/Preparator.java b/src/main/java/org/example/recommendation/Preparator.java
similarity index 72%
rename from src/main/java/org/template/recommendation/Preparator.java
rename to src/main/java/org/example/recommendation/Preparator.java
index 003855b..33beb50 100644
--- a/src/main/java/org/template/recommendation/Preparator.java
+++ b/src/main/java/org/example/recommendation/Preparator.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
-import io.prediction.controller.java.PJavaPreparator;
+import org.apache.predictionio.controller.java.PJavaPreparator;
 import org.apache.spark.SparkContext;
 
 public class Preparator extends PJavaPreparator<TrainingData, PreparedData> {
diff --git a/src/main/java/org/template/recommendation/PreparedData.java b/src/main/java/org/example/recommendation/PreparedData.java
similarity index 89%
rename from src/main/java/org/template/recommendation/PreparedData.java
rename to src/main/java/org/example/recommendation/PreparedData.java
index 6f732cc..802b7f2 100644
--- a/src/main/java/org/template/recommendation/PreparedData.java
+++ b/src/main/java/org/example/recommendation/PreparedData.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import java.io.Serializable;
 
diff --git a/src/main/java/org/template/recommendation/Query.java b/src/main/java/org/example/recommendation/Query.java
similarity index 97%
rename from src/main/java/org/template/recommendation/Query.java
rename to src/main/java/org/example/recommendation/Query.java
index 316553d..977f566 100644
--- a/src/main/java/org/template/recommendation/Query.java
+++ b/src/main/java/org/example/recommendation/Query.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import java.io.Serializable;
 import java.util.Collections;
diff --git a/src/main/java/org/template/recommendation/RecommendationEngine.java b/src/main/java/org/example/recommendation/RecommendationEngine.java
similarity index 62%
rename from src/main/java/org/template/recommendation/RecommendationEngine.java
rename to src/main/java/org/example/recommendation/RecommendationEngine.java
index d757737..ead9aa7 100644
--- a/src/main/java/org/template/recommendation/RecommendationEngine.java
+++ b/src/main/java/org/example/recommendation/RecommendationEngine.java
@@ -1,10 +1,10 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.Engine;
-import io.prediction.controller.EngineFactory;
-import io.prediction.core.BaseAlgorithm;
-import io.prediction.core.BaseEngine;
+import org.apache.predictionio.controller.EmptyParams;
+import org.apache.predictionio.controller.Engine;
+import org.apache.predictionio.controller.EngineFactory;
+import org.apache.predictionio.core.BaseAlgorithm;
+import org.apache.predictionio.core.BaseEngine;
 
 import java.util.Collections;
 import java.util.Set;
diff --git a/src/main/java/org/template/recommendation/Serving.java b/src/main/java/org/example/recommendation/Serving.java
similarity index 71%
rename from src/main/java/org/template/recommendation/Serving.java
rename to src/main/java/org/example/recommendation/Serving.java
index 6a122da..80d6c83 100644
--- a/src/main/java/org/template/recommendation/Serving.java
+++ b/src/main/java/org/example/recommendation/Serving.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
-import io.prediction.controller.java.LJavaServing;
+import org.apache.predictionio.controller.java.LJavaServing;
 import scala.collection.Seq;
 
 public class Serving extends LJavaServing<Query, PredictedResult> {
diff --git a/src/main/java/org/template/recommendation/TrainingData.java b/src/main/java/org/example/recommendation/TrainingData.java
similarity index 93%
rename from src/main/java/org/template/recommendation/TrainingData.java
rename to src/main/java/org/example/recommendation/TrainingData.java
index 7b800f1..35af8a0 100644
--- a/src/main/java/org/template/recommendation/TrainingData.java
+++ b/src/main/java/org/example/recommendation/TrainingData.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
-import io.prediction.controller.SanityCheck;
+import org.apache.predictionio.controller.SanityCheck;
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.api.java.JavaRDD;
 
diff --git a/src/main/java/org/template/recommendation/User.java b/src/main/java/org/example/recommendation/User.java
similarity index 94%
rename from src/main/java/org/template/recommendation/User.java
rename to src/main/java/org/example/recommendation/User.java
index f5f3cc1..d187a20 100644
--- a/src/main/java/org/template/recommendation/User.java
+++ b/src/main/java/org/example/recommendation/User.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import java.io.Serializable;
 import java.util.Map;
diff --git a/src/main/java/org/template/recommendation/UserItemEvent.java b/src/main/java/org/example/recommendation/UserItemEvent.java
similarity index 95%
rename from src/main/java/org/template/recommendation/UserItemEvent.java
rename to src/main/java/org/example/recommendation/UserItemEvent.java
index 3da56ca..d548a18 100644
--- a/src/main/java/org/template/recommendation/UserItemEvent.java
+++ b/src/main/java/org/example/recommendation/UserItemEvent.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
 
 import java.io.Serializable;
 
diff --git a/src/main/java/org/example/recommendation/UserItemEventType.java b/src/main/java/org/example/recommendation/UserItemEventType.java
new file mode 100644
index 0000000..f86b411
--- /dev/null
+++ b/src/main/java/org/example/recommendation/UserItemEventType.java
@@ -0,0 +1,5 @@
+package org.example.recommendation;
+
+public enum UserItemEventType {
+    VIEW, BUY
+}
diff --git a/src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java b/src/main/java/org/example/recommendation/evaluation/EvaluationParameter.java
similarity index 70%
rename from src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java
rename to src/main/java/org/example/recommendation/evaluation/EvaluationParameter.java
index da15a77..33028eb 100644
--- a/src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java
+++ b/src/main/java/org/example/recommendation/evaluation/EvaluationParameter.java
@@ -1,10 +1,10 @@
-package org.template.recommendation.evaluation;
+package org.example.recommendation.evaluation;
 
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.EngineParams;
-import io.prediction.controller.java.JavaEngineParamsGenerator;
-import org.template.recommendation.AlgorithmParams;
-import org.template.recommendation.DataSourceParams;
+import org.apache.predictionio.controller.EmptyParams;
+import org.apache.predictionio.controller.EngineParams;
+import org.apache.predictionio.controller.java.JavaEngineParamsGenerator;
+import org.example.recommendation.AlgorithmParams;
+import org.example.recommendation.DataSourceParams;
 
 import java.util.Arrays;
 import java.util.Collections;
diff --git a/src/main/java/org/example/recommendation/evaluation/EvaluationSpec.java b/src/main/java/org/example/recommendation/evaluation/EvaluationSpec.java
new file mode 100644
index 0000000..2bafc7b
--- /dev/null
+++ b/src/main/java/org/example/recommendation/evaluation/EvaluationSpec.java
@@ -0,0 +1,28 @@
+package org.example.recommendation.evaluation;
+
+import org.apache.predictionio.controller.Engine;
+import org.apache.predictionio.controller.java.JavaEvaluation;
+import org.apache.predictionio.core.BaseAlgorithm;
+import org.example.recommendation.Algorithm;
+import org.example.recommendation.DataSource;
+import org.example.recommendation.PredictedResult;
+import org.example.recommendation.Preparator;
+import org.example.recommendation.PreparedData;
+import org.example.recommendation.Query;
+import org.example.recommendation.Serving;
+
+import java.util.Collections;
+
+public class EvaluationSpec extends JavaEvaluation {
+    public EvaluationSpec() {
+        this.setEngineMetric(
+                new Engine<>(
+                        DataSource.class,
+                        Preparator.class,
+                        Collections.<String, Class<? extends BaseAlgorithm<PreparedData, ?, Query, PredictedResult>>>singletonMap("algo", Algorithm.class),
+                        Serving.class
+                ),
+                new PrecisionMetric()
+        );
+    }
+}
diff --git a/src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java b/src/main/java/org/example/recommendation/evaluation/PrecisionMetric.java
similarity index 85%
rename from src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java
rename to src/main/java/org/example/recommendation/evaluation/PrecisionMetric.java
index 277925d..e412fd5 100644
--- a/src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java
+++ b/src/main/java/org/example/recommendation/evaluation/PrecisionMetric.java
@@ -1,14 +1,14 @@
-package org.template.recommendation.evaluation;
+package org.example.recommendation.evaluation;
 
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.Metric;
-import io.prediction.controller.java.SerializableComparator;
+import org.apache.predictionio.controller.EmptyParams;
+import org.apache.predictionio.controller.Metric;
+import org.apache.predictionio.controller.java.SerializableComparator;
 import org.apache.spark.SparkContext;
 import org.apache.spark.api.java.function.Function;
 import org.apache.spark.rdd.RDD;
-import org.template.recommendation.ItemScore;
-import org.template.recommendation.PredictedResult;
-import org.template.recommendation.Query;
+import org.example.recommendation.ItemScore;
+import org.example.recommendation.PredictedResult;
+import org.example.recommendation.Query;
 import scala.Tuple2;
 import scala.Tuple3;
 import scala.collection.JavaConversions;
diff --git a/src/main/java/org/template/recommendation/UserItemEventType.java b/src/main/java/org/template/recommendation/UserItemEventType.java
deleted file mode 100644
index 6728cef..0000000
--- a/src/main/java/org/template/recommendation/UserItemEventType.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.template.recommendation;
-
-public enum UserItemEventType {
-    VIEW, BUY
-}
diff --git a/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java b/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java
deleted file mode 100644
index bfecca1..0000000
--- a/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.template.recommendation.evaluation;
-
-import io.prediction.controller.Engine;
-import io.prediction.controller.java.JavaEvaluation;
-import io.prediction.core.BaseAlgorithm;
-import org.template.recommendation.Algorithm;
-import org.template.recommendation.DataSource;
-import org.template.recommendation.PredictedResult;
-import org.template.recommendation.Preparator;
-import org.template.recommendation.PreparedData;
-import org.template.recommendation.Query;
-import org.template.recommendation.Serving;
-
-import java.util.Collections;
-
-public class EvaluationSpec extends JavaEvaluation {
-    public EvaluationSpec() {
-        this.setEngineMetric(
-                new Engine<>(
-                        DataSource.class,
-                        Preparator.class,
-                        Collections.<String, Class<? extends BaseAlgorithm<PreparedData, ?, Query, PredictedResult>>>singletonMap("algo", Algorithm.class),
-                        Serving.class
-                ),
-                new PrecisionMetric()
-        );
-    }
-}
diff --git a/template.json b/template.json
index 7f97fce..d076ec5 100644
--- a/template.json
+++ b/template.json
@@ -1 +1 @@
-{"pio": {"version": { "min": "0.9.3" }}}
+{"pio": {"version": { "min": "0.10.0-incubating" }}}