diff options
author | Cassie Wang <cassiewang@google.com> | 2020-07-21 14:26:01 -0700 |
---|---|---|
committer | Cassie Wang <cassiewang@google.com> | 2020-07-24 14:19:26 -0700 |
commit | c994b6ea30c9be8976da0b1bf6a8923907ff903f (patch) | |
tree | f69970caf14ff26cfea1f3a573c2c27a7cd83e3d /java | |
parent | 09d66401215254a2bdfc134009039636054d28d2 (diff) | |
download | icing-c994b6ea30c9be8976da0b1bf6a8923907ff903f.tar.gz |
Pull upstream changes.
Change-Id: Ieed20fd00a7c00778045434ae1b7c9e019a6c369
Diffstat (limited to 'java')
-rw-r--r-- | java/src/com/google/android/icing/IcingSearchEngine.java | 63 | ||||
-rw-r--r-- | java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java | 31 |
2 files changed, 68 insertions, 26 deletions
diff --git a/java/src/com/google/android/icing/IcingSearchEngine.java b/java/src/com/google/android/icing/IcingSearchEngine.java index ab34f8a..4ec9cda 100644 --- a/java/src/com/google/android/icing/IcingSearchEngine.java +++ b/java/src/com/google/android/icing/IcingSearchEngine.java @@ -20,6 +20,7 @@ import com.google.android.icing.proto.DeleteByNamespaceResultProto; import com.google.android.icing.proto.DeleteBySchemaTypeResultProto; import com.google.android.icing.proto.DeleteResultProto; import com.google.android.icing.proto.DocumentProto; +import com.google.android.icing.proto.GetAllNamespacesResultProto; import com.google.android.icing.proto.GetOptimizeInfoResultProto; import com.google.android.icing.proto.GetResultProto; import com.google.android.icing.proto.GetSchemaResultProto; @@ -44,6 +45,8 @@ import com.google.android.icing.protobuf.InvalidProtocolBufferException; public final class IcingSearchEngine { private static final String TAG = "IcingSearchEngine"; + private static final ExtensionRegistryLite EXTENSION_REGISTRY_LITE = + ExtensionRegistryLite.getEmptyRegistry(); private final long nativePointer; @@ -72,8 +75,7 @@ public final class IcingSearchEngine { } try { - return InitializeResultProto.parseFrom( - initializeResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return InitializeResultProto.parseFrom(initializeResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing InitializeResultProto.", e); return InitializeResultProto.newBuilder() @@ -100,8 +102,7 @@ public final class IcingSearchEngine { } try { - return SetSchemaResultProto.parseFrom( - setSchemaResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return SetSchemaResultProto.parseFrom(setSchemaResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing SetSchemaResultProto.", e); return SetSchemaResultProto.newBuilder() @@ -121,8 +122,7 @@ public final class IcingSearchEngine { } try { - return GetSchemaResultProto.parseFrom( - getSchemaResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return GetSchemaResultProto.parseFrom(getSchemaResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing GetSchemaResultProto.", e); return GetSchemaResultProto.newBuilder() @@ -142,8 +142,7 @@ public final class IcingSearchEngine { } try { - return GetSchemaTypeResultProto.parseFrom( - getSchemaTypeResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return GetSchemaTypeResultProto.parseFrom(getSchemaTypeResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing GetSchemaTypeResultProto.", e); return GetSchemaTypeResultProto.newBuilder() @@ -163,7 +162,7 @@ public final class IcingSearchEngine { } try { - return PutResultProto.parseFrom(putResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return PutResultProto.parseFrom(putResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing PutResultProto.", e); return PutResultProto.newBuilder() @@ -183,7 +182,7 @@ public final class IcingSearchEngine { } try { - return GetResultProto.parseFrom(getResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return GetResultProto.parseFrom(getResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing GetResultProto.", e); return GetResultProto.newBuilder() @@ -193,6 +192,27 @@ public final class IcingSearchEngine { } @NonNull + public GetAllNamespacesResultProto getAllNamespaces() { + byte[] getAllNamespacesResultBytes = nativeGetAllNamespaces(nativePointer); + if (getAllNamespacesResultBytes == null) { + Log.e(TAG, "Received null GetAllNamespacesResultProto from native."); + return GetAllNamespacesResultProto.newBuilder() + .setStatus(StatusProto.newBuilder().setCode(StatusProto.Code.INTERNAL)) + .build(); + } + + try { + return GetAllNamespacesResultProto.parseFrom( + getAllNamespacesResultBytes, EXTENSION_REGISTRY_LITE); + } catch (InvalidProtocolBufferException e) { + Log.e(TAG, "Error parsing GetAllNamespacesResultProto.", e); + return GetAllNamespacesResultProto.newBuilder() + .setStatus(StatusProto.newBuilder().setCode(StatusProto.Code.INTERNAL)) + .build(); + } + } + + @NonNull public SearchResultProto search( @NonNull SearchSpecProto searchSpec, @NonNull ScoringSpecProto scoringSpec, @@ -211,8 +231,7 @@ public final class IcingSearchEngine { } try { - return SearchResultProto.parseFrom( - searchResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return SearchResultProto.parseFrom(searchResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing SearchResultProto.", e); return SearchResultProto.newBuilder() @@ -232,8 +251,7 @@ public final class IcingSearchEngine { } try { - return DeleteResultProto.parseFrom( - deleteResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return DeleteResultProto.parseFrom(deleteResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing DeleteResultProto.", e); return DeleteResultProto.newBuilder() @@ -254,7 +272,7 @@ public final class IcingSearchEngine { try { return DeleteByNamespaceResultProto.parseFrom( - deleteByNamespaceResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + deleteByNamespaceResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing DeleteByNamespaceResultProto.", e); return DeleteByNamespaceResultProto.newBuilder() @@ -275,7 +293,7 @@ public final class IcingSearchEngine { try { return DeleteBySchemaTypeResultProto.parseFrom( - deleteBySchemaTypeResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + deleteBySchemaTypeResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing DeleteBySchemaTypeResultProto.", e); return DeleteBySchemaTypeResultProto.newBuilder() @@ -295,8 +313,7 @@ public final class IcingSearchEngine { } try { - return PersistToDiskResultProto.parseFrom( - persistToDiskResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return PersistToDiskResultProto.parseFrom(persistToDiskResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing PersistToDiskResultProto.", e); return PersistToDiskResultProto.newBuilder() @@ -316,8 +333,7 @@ public final class IcingSearchEngine { } try { - return OptimizeResultProto.parseFrom( - optimizeResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return OptimizeResultProto.parseFrom(optimizeResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing OptimizeResultProto.", e); return OptimizeResultProto.newBuilder() @@ -338,7 +354,7 @@ public final class IcingSearchEngine { try { return GetOptimizeInfoResultProto.parseFrom( - getOptimizeInfoResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + getOptimizeInfoResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing GetOptimizeInfoResultProto.", e); return GetOptimizeInfoResultProto.newBuilder() @@ -358,8 +374,7 @@ public final class IcingSearchEngine { } try { - return ResetResultProto.parseFrom( - resetResultBytes, ExtensionRegistryLite.getGeneratedRegistry()); + return ResetResultProto.parseFrom(resetResultBytes, EXTENSION_REGISTRY_LITE); } catch (InvalidProtocolBufferException e) { Log.e(TAG, "Error parsing ResetResultProto.", e); return ResetResultProto.newBuilder() @@ -383,6 +398,8 @@ public final class IcingSearchEngine { private static native byte[] nativeGet(long nativePointer, String namespace, String uri); + private static native byte[] nativeGetAllNamespaces(long nativePointer); + private static native byte[] nativeSearch( long nativePointer, byte[] searchSpecBytes, byte[] scoringSpecBytes, byte[] resultSpecBytes); diff --git a/java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java b/java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java index 3c7c2ea..a01e7db 100644 --- a/java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java +++ b/java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java @@ -21,6 +21,7 @@ import com.google.android.icing.proto.DeleteByNamespaceResultProto; import com.google.android.icing.proto.DeleteBySchemaTypeResultProto; import com.google.android.icing.proto.DeleteResultProto; import com.google.android.icing.proto.DocumentProto; +import com.google.android.icing.proto.GetAllNamespacesResultProto; import com.google.android.icing.proto.GetOptimizeInfoResultProto; import com.google.android.icing.proto.GetResultProto; import com.google.android.icing.proto.GetSchemaResultProto; @@ -44,17 +45,17 @@ import com.google.android.icing.proto.SearchSpecProto; import com.google.android.icing.proto.SetSchemaResultProto; import com.google.android.icing.proto.StatusProto; import com.google.android.icing.proto.TermMatchType; -import com.google.android.libraries.mdi.search.IcingSearchEngine; +import com.google.android.icing.IcingSearchEngine; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; +import org.junit.runners.JUnit4; /** * This test is not intended to fully test the functionality of each API. But rather to test the JNI * wrapper and Java interfaces of Icing library {@link IcingSearchEngine}. */ -@RunWith(RobolectricTestRunner.class) +@RunWith(JUnit4.class) public final class IcingSearchEngineTest { private static final String EMAIL_TYPE = "Email"; @@ -311,6 +312,30 @@ public final class IcingSearchEngineTest { } @Test + public void testGetAllNamespaces() throws Exception { + IcingSearchEngineOptions options = + IcingSearchEngineOptions.newBuilder().setBaseDir(filesDir).build(); + IcingSearchEngine icing = new IcingSearchEngine(options); + assertThat(icing.initialize().getStatus().getCode()).isEqualTo(StatusProto.Code.OK); + + SchemaTypeConfigProto emailTypeConfig = createEmailTypeConfig(); + SchemaProto schema = SchemaProto.newBuilder().addTypes(emailTypeConfig).build(); + assertThat( + icing + .setSchema(schema, /*ignoreErrorsAndDeleteDocuments=*/ false) + .getStatus() + .getCode()) + .isEqualTo(StatusProto.Code.OK); + + DocumentProto emailDocument = createEmailDocument("namespace", "uri"); + assertThat(icing.put(emailDocument).getStatus().getCode()).isEqualTo(StatusProto.Code.OK); + + GetAllNamespacesResultProto getAllNamespacesResultProto = icing.getAllNamespaces(); + assertThat(getAllNamespacesResultProto.getStatus().getCode()).isEqualTo(StatusProto.Code.OK); + assertThat(getAllNamespacesResultProto.getNamespacesList()).containsExactly("namespace"); + } + + @Test public void testReset() throws Exception { IcingSearchEngineOptions options = IcingSearchEngineOptions.newBuilder().setBaseDir(filesDir).build(); |