@NonNull in room-runtime

Also, hide StringUtil class

Test: N/A
Change-Id: Id0dc04dc3409de88ac9a13993db092ed7a3f1408
diff --git a/room/runtime/src/main/java/android/arch/persistence/room/InvalidationTracker.java b/room/runtime/src/main/java/android/arch/persistence/room/InvalidationTracker.java
index 45ec028..b31dc13 100644
--- a/room/runtime/src/main/java/android/arch/persistence/room/InvalidationTracker.java
+++ b/room/runtime/src/main/java/android/arch/persistence/room/InvalidationTracker.java
@@ -219,7 +219,7 @@
      *
      * @param observer The observer which listens the database for changes.
      */
-    public void addObserver(Observer observer) {
+    public void addObserver(@NonNull Observer observer) {
         final String[] tableNames = observer.mTables;
         int[] tableIds = new int[tableNames.length];
         final int size = tableNames.length;
@@ -265,7 +265,7 @@
      * @param observer The observer to remove.
      */
     @SuppressWarnings("WeakerAccess")
-    public void removeObserver(final Observer observer) {
+    public void removeObserver(@NonNull final Observer observer) {
         ObserverWrapper wrapper;
         synchronized (mObserverMap) {
             wrapper = mObserverMap.remove(observer);
diff --git a/room/runtime/src/main/java/android/arch/persistence/room/Room.java b/room/runtime/src/main/java/android/arch/persistence/room/Room.java
index 8ce4be0..2850b55 100644
--- a/room/runtime/src/main/java/android/arch/persistence/room/Room.java
+++ b/room/runtime/src/main/java/android/arch/persistence/room/Room.java
@@ -43,6 +43,7 @@
      * @return A {@code RoomDatabaseBuilder<T>} which you can use to create the database.
      */
     @SuppressWarnings("WeakerAccess")
+    @NonNull
     public static <T extends RoomDatabase> RoomDatabase.Builder<T> databaseBuilder(
             @NonNull Context context, @NonNull Class<T> klass, @NonNull String name) {
         //noinspection ConstantConditions
@@ -65,6 +66,7 @@
      * @param <T>     The type of the database class.
      * @return A {@code RoomDatabaseBuilder<T>} which you can use to create the database.
      */
+    @NonNull
     public static <T extends RoomDatabase> RoomDatabase.Builder<T> inMemoryDatabaseBuilder(
             @NonNull Context context, @NonNull Class<T> klass) {
         return new RoomDatabase.Builder<>(context, klass, null);
diff --git a/room/runtime/src/main/java/android/arch/persistence/room/RoomDatabase.java b/room/runtime/src/main/java/android/arch/persistence/room/RoomDatabase.java
index cdad868..8c94024 100644
--- a/room/runtime/src/main/java/android/arch/persistence/room/RoomDatabase.java
+++ b/room/runtime/src/main/java/android/arch/persistence/room/RoomDatabase.java
@@ -49,7 +49,7 @@
  *
  * @see Database
  */
-@SuppressWarnings({"unused", "WeakerAccess"})
+//@SuppressWarnings({"unused", "WeakerAccess"})
 public abstract class RoomDatabase {
     private static final String DB_IMPL_SUFFIX = "_Impl";
     // set by the generated open helper.
@@ -153,7 +153,9 @@
      *
      * @hide
      */
+    @SuppressWarnings("WeakerAccess")
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+    // used in generated code
     public void assertNotMainThread() {
         if (mAllowMainThreadQueries) {
             return;
@@ -298,6 +300,7 @@
      * @return True if there is an active transaction in current thread, false otherwise.
      * @see SupportSQLiteDatabase#inTransaction()
      */
+    @SuppressWarnings("WeakerAccess")
     public boolean inTransaction() {
         return mOpenHelper.getWritableDatabase().inTransaction();
     }
@@ -307,7 +310,6 @@
      *
      * @param <T> The type of the abstract database class.
      */
-    @SuppressWarnings("unused")
     public static class Builder<T extends RoomDatabase> {
         private final Class<T> mDatabaseClass;
         private final String mName;
@@ -337,7 +339,8 @@
          * @param factory The factory to use to access the database.
          * @return this
          */
-        public Builder<T> openHelperFactory(SupportSQLiteOpenHelper.Factory factory) {
+        @NonNull
+        public Builder<T> openHelperFactory(@Nullable SupportSQLiteOpenHelper.Factory factory) {
             mFactory = factory;
             return this;
         }
@@ -361,6 +364,7 @@
          *                   changes.
          * @return this
          */
+        @NonNull
         public Builder<T> addMigrations(Migration... migrations) {
             mMigrationContainer.addMigrations(migrations);
             return this;
@@ -378,6 +382,7 @@
          *
          * @return this
          */
+        @NonNull
         public Builder<T> allowMainThreadQueries() {
             mAllowMainThreadQueries = true;
             return this;
@@ -400,6 +405,7 @@
          *
          * @return this
          */
+        @NonNull
         public Builder<T> fallbackToDestructiveMigration() {
             mRequireMigration = false;
             return this;
@@ -411,6 +417,7 @@
          * @param callback The callback.
          * @return this
          */
+        @NonNull
         public Builder<T> addCallback(@NonNull Callback callback) {
             if (mCallbacks == null) {
                 mCallbacks = new ArrayList<>();
@@ -427,6 +434,7 @@
          *
          * @return A new database instance.
          */
+        @NonNull
         public T build() {
             //noinspection ConstantConditions
             if (mContext == null) {
@@ -493,6 +501,7 @@
          * @return An ordered list of {@link Migration} objects that should be run to migrate
          * between the given versions. If a migration path cannot be found, returns {@code null}.
          */
+        @SuppressWarnings("WeakerAccess")
         @Nullable
         public List<Migration> findMigrationPath(int start, int end) {
             if (start == end) {
diff --git a/room/runtime/src/main/java/android/arch/persistence/room/migration/Migration.java b/room/runtime/src/main/java/android/arch/persistence/room/migration/Migration.java
index 907e624..d69ea0d 100644
--- a/room/runtime/src/main/java/android/arch/persistence/room/migration/Migration.java
+++ b/room/runtime/src/main/java/android/arch/persistence/room/migration/Migration.java
@@ -17,6 +17,7 @@
 package android.arch.persistence.room.migration;
 
 import android.arch.persistence.db.SupportSQLiteDatabase;
+import android.support.annotation.NonNull;
 
 /**
  * Base class for a database migration.
@@ -58,5 +59,5 @@
      *
      * @param database The database instance
      */
-    public abstract void migrate(SupportSQLiteDatabase database);
+    public abstract void migrate(@NonNull SupportSQLiteDatabase database);
 }
diff --git a/room/runtime/src/main/java/android/arch/persistence/room/util/StringUtil.java b/room/runtime/src/main/java/android/arch/persistence/room/util/StringUtil.java
index bee05dd..d01e3c5 100644
--- a/room/runtime/src/main/java/android/arch/persistence/room/util/StringUtil.java
+++ b/room/runtime/src/main/java/android/arch/persistence/room/util/StringUtil.java
@@ -17,6 +17,7 @@
 package android.arch.persistence.room.util;
 
 import android.support.annotation.Nullable;
+import android.support.annotation.RestrictTo;
 import android.util.Log;
 
 import java.util.ArrayList;
@@ -24,10 +25,14 @@
 import java.util.StringTokenizer;
 
 /**
+ * @hide
+ *
  * String utilities for Room
  */
-@SuppressWarnings("WeakerAccess")
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class StringUtil {
+
+    @SuppressWarnings("unused")
     public static final String[] EMPTY_STRING_ARRAY = new String[0];
     /**
      * Returns a new StringBuilder to be used while producing SQL queries.