Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ceaafa2f authored by Mohammadinamul Sheik's avatar Mohammadinamul Sheik Committed by Android (Google) Code Review
Browse files

Merge "Do not throw NPE if the dictionary info is not available on db"

parents 4c326c66 9a3598b0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -34,6 +34,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.TreeMap;

import javax.annotation.Nullable;

/**
 * Various helper functions for the state database
 */
@@ -705,6 +707,7 @@ public class MetadataDbHelper extends SQLiteOpenHelper {
     * @param version the word list version.
     * @return the metadata about this word list.
     */
    @Nullable
    public static ContentValues getContentValuesByWordListId(final SQLiteDatabase db,
            final String id, final int version) {
        final Cursor cursor = db.query(METADATA_TABLE_NAME,
+13 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.inputmethod.dictionarypack;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.util.Log;

import java.io.IOException;
import java.io.InputStreamReader;
@@ -30,10 +31,13 @@ import java.util.List;
 * Helper class to easy up manipulation of dictionary pack metadata.
 */
public class MetadataHandler {

    public static final String TAG = MetadataHandler.class.getSimpleName();

    // The canonical file name for metadata. This is not the name of a real file on the
    // device, but a symbolic name used in the database and in metadata handling. It is never
    // tested against, only used for human-readability as the file name for the metadata.
    public final static String METADATA_FILENAME = "metadata.json";
    public static final String METADATA_FILENAME = "metadata.json";

    /**
     * Reads the data from the cursor and store it in metadata objects.
@@ -114,6 +118,14 @@ public class MetadataHandler {
            final String clientId, final String wordListId, final int version) {
        final ContentValues contentValues = MetadataDbHelper.getContentValuesByWordListId(
                MetadataDbHelper.getDb(context, clientId), wordListId, version);
        if (contentValues == null) {
            // TODO: Figure out why this would happen.
            // Check if this happens when the metadata gets updated in the background.
            Log.e(TAG, String.format( "Unable to find the current metadata for wordlist "
                            + "(clientId=%s, wordListId=%s, version=%d) on the database",
                    clientId, wordListId, version));
            return null;
        }
        return WordListMetadata.createFromContentValues(contentValues);
    }

+3 −0
Original line number Diff line number Diff line
@@ -1143,6 +1143,9 @@ public final class UpdateHandler {
            }
            final WordListMetadata wordListMetaData = MetadataHandler.getCurrentMetadataForWordList(
                    context, clientId, wordlistId, version);
            if (wordListMetaData == null) {
                return;
            }

            final ActionBatch actions = new ActionBatch();
            actions.add(new ActionBatch.StartDownloadAction(
+3 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.inputmethod.dictionarypack;

import android.content.ContentValues;

import javax.annotation.Nonnull;

/**
 * The metadata for a single word list.
 *
@@ -77,7 +79,7 @@ public class WordListMetadata {
     *
     * If this lacks any required field, IllegalArgumentException is thrown.
     */
    public static WordListMetadata createFromContentValues(final ContentValues values) {
    public static WordListMetadata createFromContentValues(@Nonnull final ContentValues values) {
        final String id = values.getAsString(MetadataDbHelper.WORDLISTID_COLUMN);
        final Integer type = values.getAsInteger(MetadataDbHelper.TYPE_COLUMN);
        final String description = values.getAsString(MetadataDbHelper.DESCRIPTION_COLUMN);