Skip to content

Commit dd3ace8

Browse files
authored
Merge pull request #157 from couchbaselabs/pr/CBL-7448
CBL-7448 : Update Test App to use CBL android 4.0 API
2 parents e403685 + 42bd652 commit dd3ace8

File tree

20 files changed

+497
-491
lines changed

20 files changed

+497
-491
lines changed

CBLClient/Apps/CBLTestServer-Android/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ android {
2727
defaultConfig {
2828
applicationId 'com.couchbase.TestServerApp'
2929
minSdkVersion 24
30-
targetSdkVersion 30
30+
targetSdkVersion 33
3131
versionCode 1
3232
versionName DEF_VERSION
3333
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'

CBLClient/Apps/CBLTestServer-Android/app/src/androidTest/java/com/couchbase/CouchbaseLiteServ/LogTest.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@
2222

2323
import com.couchbase.mobiletestkit.javacommon.*;
2424
import com.couchbase.mobiletestkit.javacommon.RequestHandler.*;
25-
import com.couchbase.lite.Database;
26-
import com.couchbase.lite.FileLogger;
2725
import com.couchbase.lite.LogDomain;
28-
import com.couchbase.lite.LogLevel;
26+
import com.couchbase.lite.internal.logging.Log;
2927

3028

3129
public class LogTest {
@@ -52,17 +50,13 @@ public void testLogZipper() throws Exception {
5250

5351
Assert.assertNotNull(data);
5452
Assert.assertEquals("application/zip", data.contentType);
55-
// I don't know a good way to test the contents of the zip data. Pick a random number...
5653
Assert.assertTrue(data.data.length > 20);
5754
}
5855

5956
private void writeAllLogs(String message) {
60-
FileLogger logger = Database.log.getFile();
61-
logger.log(LogLevel.DEBUG, LogDomain.DATABASE, message);
62-
logger.log(LogLevel.VERBOSE, LogDomain.DATABASE, message);
63-
logger.log(LogLevel.INFO, LogDomain.DATABASE, message);
64-
logger.log(LogLevel.WARNING, LogDomain.DATABASE, message);
65-
logger.log(LogLevel.ERROR, LogDomain.DATABASE, message);
57+
Log.d(LogDomain.DATABASE, message);
58+
Log.i(LogDomain.DATABASE, message);
59+
Log.w(LogDomain.DATABASE, message);
60+
Log.e(LogDomain.DATABASE, message);
6661
}
67-
}
68-
62+
}

CBLClient/Apps/CBLTestServer-Android/app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
android:theme="@style/AppTheme"
1717
android:networkSecurityConfig="@xml/network_security_config"
1818
>
19-
<activity android:name=".MainActivity">
19+
<activity android:name=".MainActivity"
20+
android:exported="true">
2021
<intent-filter>
2122
<action android:name="android.intent.action.MAIN"/>
2223
<category android:name="android.intent.category.LAUNCHER"/>

CBLClient/Apps/CBLTestServer-Android/app/src/main/java/com/couchbase/CouchbaseLiteServ/TestServerContext.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.couchbase.lite.CouchbaseLiteException;
44
import com.couchbase.lite.KeyStoreUtils;
5+
import com.couchbase.lite.KeyUsage;
56
import com.couchbase.lite.TLSIdentity;
67
import com.couchbase.mobiletestkit.javacommon.Context;
78
import com.couchbase.mobiletestkit.javacommon.util.Log;
@@ -12,8 +13,6 @@
1213
import java.net.Inet4Address;
1314
import java.net.InetAddress;
1415
import java.net.NetworkInterface;
15-
import java.security.KeyManagementException;
16-
import java.security.KeyStore;
1716
import java.security.KeyStoreException;
1817
import java.security.NoSuchAlgorithmException;
1918
import java.security.UnrecoverableEntryException;
@@ -25,15 +24,13 @@
2524
import java.io.ByteArrayOutputStream;
2625
import java.io.InputStream;
2726
import java.util.ArrayList;
27+
import java.util.HashSet;
28+
import java.util.Set;
2829
import java.util.UUID;
2930
import java.util.Calendar;
3031
import java.util.Date;
3132
import java.util.HashMap;
3233
import java.util.List;
33-
import java.security.NoSuchProviderException;
34-
import java.security.UnrecoverableEntryException;
35-
import java.security.cert.Certificate;
36-
import java.security.cert.X509Certificate;
3734
import java.net.URL;
3835
import java.net.URISyntaxException;
3936

@@ -117,7 +114,10 @@ public TLSIdentity getCreateIdentity() {
117114
String alias = UUID.randomUUID().toString();
118115
TLSIdentity identity = null;
119116
try {
120-
identity = TLSIdentity.createIdentity(true, X509Attributes, certTime, alias);
117+
Set<KeyUsage> keyUsage = new HashSet<>();
118+
keyUsage.add(KeyUsage.SERVER_AUTH);
119+
keyUsage.add(KeyUsage.CLIENT_AUTH);
120+
identity = TLSIdentity.createIdentity(keyUsage, X509Attributes, certTime, alias);
121121
} catch (CouchbaseLiteException e) {
122122
e.printStackTrace();
123123
}

CBLClient/Apps/CBLTestServer-Java-Desktop/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ jar {
2424
archiveAppendix = 'Desktop'
2525
archiveVersion = COUCHBASE_LITE_JAVA_VERSION
2626
archiveClassifier = 'enterprise'
27+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
2728

2829
manifest {
2930
attributes('Main-Class': 'com.couchbase.mobiletestkit.javatestserver.TestServerMain')
@@ -37,6 +38,7 @@ repositories {
3738
mavenCentral()
3839
maven {
3940
url 'http://proget.build.couchbase.com/maven2/internalmaven/'
41+
allowInsecureProtocol = true
4042
// Release repo
4143
// url 'https://mobile.maven.couchbase.com/maven2/dev/'
4244
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

CBLClient/Apps/CBLTestServer-Java-WS/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ repositories {
2323
mavenCentral()
2424
maven {
2525
url "http://proget.build.couchbase.com/maven2/internalmaven/"
26+
allowInsecureProtocol = true
2627
}
2728
}
2829

@@ -39,7 +40,7 @@ sourceSets {
3940
dependencies {
4041
providedCompile "com.couchbase.lite:couchbase-lite-java-ee:${COUCHBASE_LITE_JAVA_VERSION}"
4142
implementation 'com.google.code.gson:gson:2.8.5'
42-
testCompile group: 'junit', name: 'junit', version: '4.12'
43+
testImplementation group: 'junit', name: 'junit', version: '4.12'
4344
providedCompile "javax.servlet:javax.servlet-api:4.0.1"
4445
}
4546

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

CBLClient/Apps/CBLTestServer-Java-WS/src/main/java/com/couchbase/javaws/TestServerWS.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package com.couchbase.javaws;
22

3+
import com.couchbase.lite.logging.ConsoleLogSink;
4+
import com.couchbase.lite.logging.LogSinks;
35
import com.couchbase.mobiletestkit.javacommon.*;
46
import com.couchbase.mobiletestkit.javacommon.util.Log;
57
import com.couchbase.lite.CouchbaseLite;
6-
import com.couchbase.lite.Database;
78
import com.couchbase.lite.LogDomain;
89
import com.couchbase.lite.LogLevel;
910
import com.google.gson.Gson;
@@ -28,9 +29,7 @@ public class TestServerWS extends HttpServlet {
2829
@Override
2930
public void init() throws ServletException {
3031
CouchbaseLite.init();
31-
Database.log.getConsole().setLevel(LogLevel.DEBUG);
32-
Database.log.getConsole().setDomains(LogDomain.ALL_DOMAINS);
33-
32+
LogSinks.get().setConsole(new ConsoleLogSink(LogLevel.DEBUG, LogDomain.ALL));
3433
Log.init(new TestServerLogger());
3534
}
3635

CBLClient/Apps/JavaRequestHandlers/src/main/java/com/couchbase/mobiletestkit/javacommon/RequestHandler/CollectionRequestHandler.java

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
import java.util.Set;
99

1010
import com.couchbase.lite.Blob;
11+
import com.couchbase.lite.CollectionChange;
12+
import com.couchbase.lite.CollectionChangeListener;
1113
import com.couchbase.lite.CouchbaseLiteException;
1214
import com.couchbase.lite.DataSource;
1315
import com.couchbase.lite.Database;
1416
import com.couchbase.lite.Expression;
15-
import com.couchbase.lite.Index;
1617
import com.couchbase.lite.IndexConfiguration;
17-
import com.couchbase.lite.Limit;
18+
import com.couchbase.lite.ListenerToken;
1819
import com.couchbase.lite.Meta;
1920
import com.couchbase.lite.Query;
2021
import com.couchbase.lite.QueryBuilder;
@@ -30,6 +31,7 @@
3031
import com.couchbase.lite.Document;
3132
import com.couchbase.lite.MutableDocument;
3233
import com.couchbase.mobiletestkit.javacommon.RequestHandlerDispatcher;
34+
import com.couchbase.mobiletestkit.javacommon.util.ConcurrentExecutor;
3335
import com.couchbase.mobiletestkit.javacommon.util.Log;
3436

3537
public class CollectionRequestHandler {
@@ -314,4 +316,61 @@ else if (attItemValue.containsKey("digest")) {
314316

315317
return data;
316318
}
319+
320+
321+
public ListenerToken addChangeListener(Args args) throws CouchbaseLiteException {
322+
Database database = args.get("database");
323+
ListenerToken token;
324+
if (args.contain("docId")) {
325+
String docId = args.get("docId");
326+
MyDocumentChangeListener changeListener = new MyDocumentChangeListener();
327+
token = database.getDefaultCollection().addDocumentChangeListener(docId, ConcurrentExecutor.EXECUTOR, changeListener);
328+
}
329+
else {
330+
MyCollectionChangeListener changeListener = new MyCollectionChangeListener();
331+
token = database.getDefaultCollection().addChangeListener(ConcurrentExecutor.EXECUTOR, changeListener);
332+
}
333+
return token;
334+
}
335+
336+
public void removeChangeListener(Args args) {
337+
Database database = args.get("database");
338+
ListenerToken token = args.get("changeListenerToken");
339+
token.remove();
340+
}
341+
342+
public int databaseChangeListenerChangesCount(Args args) {
343+
MyCollectionChangeListener changeListener = args.get("changeListener");
344+
return changeListener.getChanges().size();
345+
}
346+
347+
public CollectionChange databaseChangeListenerGetChange(Args args) {
348+
MyCollectionChangeListener changeListener = args.get("changeListener");
349+
int index = args.get("index");
350+
return changeListener.getChanges().get(index);
351+
}
352+
353+
public Database changeGetDatabase(Args args) {
354+
CollectionChange change = args.get("change");
355+
return change.getDatabase();
356+
}
357+
358+
public List<String> changeGetDocumentId(Args args) {
359+
CollectionChange change = args.get("change");
360+
return change.getDocumentIDs();
361+
}
362+
363+
class MyCollectionChangeListener implements CollectionChangeListener {
364+
private List<CollectionChange> changes;
365+
366+
public List<CollectionChange> getChanges() {
367+
return changes;
368+
}
369+
370+
371+
@Override
372+
public void changed(CollectionChange change) {
373+
changes.add(change);
374+
}
375+
}
317376
}

0 commit comments

Comments
 (0)