aboutsummaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorCassie Wang <cassiewang@google.com>2020-07-21 14:26:01 -0700
committerCassie Wang <cassiewang@google.com>2020-07-24 14:19:26 -0700
commitc994b6ea30c9be8976da0b1bf6a8923907ff903f (patch)
treef69970caf14ff26cfea1f3a573c2c27a7cd83e3d /java
parent09d66401215254a2bdfc134009039636054d28d2 (diff)
downloadicing-c994b6ea30c9be8976da0b1bf6a8923907ff903f.tar.gz
Pull upstream changes.
Change-Id: Ieed20fd00a7c00778045434ae1b7c9e019a6c369
Diffstat (limited to 'java')
-rw-r--r--java/src/com/google/android/icing/IcingSearchEngine.java63
-rw-r--r--java/tests/instrumentation/src/com/google/android/icing/IcingSearchEngineTest.java31
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();