mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-12-22 18:48:00 +01:00
Merge pull request #460 from Flowdalic/ci-java-15
Run CI also with Java 15
This commit is contained in:
commit
d881395d05
9 changed files with 66 additions and 30 deletions
1
.github/workflows/ci.yml
vendored
1
.github/workflows/ci.yml
vendored
|
@ -14,6 +14,7 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
java:
|
java:
|
||||||
- 11
|
- 11
|
||||||
|
- 15
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
|
|
28
build.gradle
28
build.gradle
|
@ -152,6 +152,7 @@ allprojects {
|
||||||
commonsIoVersion = '2.6'
|
commonsIoVersion = '2.6'
|
||||||
bouncyCastleVersion = '1.68'
|
bouncyCastleVersion = '1.68'
|
||||||
guavaVersion = '30.1-jre'
|
guavaVersion = '30.1-jre'
|
||||||
|
mockitoVersion = '3.7.7'
|
||||||
|
|
||||||
if (project.hasProperty("useSonatype")) {
|
if (project.hasProperty("useSonatype")) {
|
||||||
useSonatype = project.getProperty("useSonatype").toBoolean()
|
useSonatype = project.getProperty("useSonatype").toBoolean()
|
||||||
|
@ -255,7 +256,7 @@ allprojects {
|
||||||
}
|
}
|
||||||
|
|
||||||
jacoco {
|
jacoco {
|
||||||
toolVersion = "0.8.3"
|
toolVersion = "0.8.6"
|
||||||
}
|
}
|
||||||
|
|
||||||
jacocoTestReport {
|
jacocoTestReport {
|
||||||
|
@ -273,7 +274,10 @@ allprojects {
|
||||||
// since the one paramater addStringOption doesn't seem to
|
// since the one paramater addStringOption doesn't seem to
|
||||||
// work, we extra add '-quiet', which is added anyway by
|
// work, we extra add '-quiet', which is added anyway by
|
||||||
// gradle.
|
// gradle.
|
||||||
options.addStringOption('Xdoclint:all', '-quiet')
|
// TODO: This enables all doclint check but
|
||||||
|
// 'missing'. Re-enable 'missing' once every public API in
|
||||||
|
// Smack has a javadoc comment.
|
||||||
|
options.addStringOption('Xdoclint:accessibility,html,reference,syntax', '-quiet')
|
||||||
|
|
||||||
// Treat warnings as errors.
|
// Treat warnings as errors.
|
||||||
// See also https://bugs.openjdk.java.net/browse/JDK-8200363
|
// See also https://bugs.openjdk.java.net/browse/JDK-8200363
|
||||||
|
@ -285,12 +289,16 @@ allprojects {
|
||||||
tasks.withType(Javadoc) {
|
tasks.withType(Javadoc) {
|
||||||
options.addStringOption('-release', javaMajor)
|
options.addStringOption('-release', javaMajor)
|
||||||
|
|
||||||
// Fix for javadoc search. If not set, the search result would direct to
|
// The -no-modules-directories javadoc option was removed in Java 13
|
||||||
// javadoc/undefined/org/jivesoftware/smack/altconnections/HttpLookupMethod.html
|
// See https://bugs.openjdk.java.net/browse/JDK-8215582
|
||||||
// instead of
|
if (JavaVersion.current() < JavaVersion.VERSION_13) {
|
||||||
// javadoc/org/jivesoftware/smack/altconnections/HttpLookupMethod.html
|
// Fix for javadoc search. If not set, the search result would direct to
|
||||||
// https://stackoverflow.com/a/53732633/194894
|
// javadoc/undefined/org/jivesoftware/smack/altconnections/HttpLookupMethod.html
|
||||||
options.addBooleanOption("-no-module-directories", true)
|
// instead of
|
||||||
|
// javadoc/org/jivesoftware/smack/altconnections/HttpLookupMethod.html
|
||||||
|
// https://stackoverflow.com/a/53732633/194894
|
||||||
|
options.addBooleanOption("-no-module-directories", true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile) {
|
||||||
options.compilerArgs.addAll([
|
options.compilerArgs.addAll([
|
||||||
|
@ -312,10 +320,10 @@ tasks.withType(Javadoc) {
|
||||||
// The smack-extensions subproject uses mockito in its fest
|
// The smack-extensions subproject uses mockito in its fest
|
||||||
// fixtures, and we want to have mockito also available in
|
// fixtures, and we want to have mockito also available in
|
||||||
// test, so we use API here.
|
// test, so we use API here.
|
||||||
testFixturesApi "org.mockito:mockito-core:3.3.3"
|
testFixturesApi "org.mockito:mockito-core:${mockitoVersion}"
|
||||||
|
|
||||||
// To mock final classes
|
// To mock final classes
|
||||||
testImplementation 'org.mockito:mockito-inline:3.3.3'
|
testImplementation "org.mockito:mockito-inline:${mockitoVersion}"
|
||||||
testImplementation 'com.jamesmurty.utils:java-xmlbuilder:1.2'
|
testImplementation 'com.jamesmurty.utils:java-xmlbuilder:1.2'
|
||||||
|
|
||||||
errorprone 'com.google.errorprone:error_prone_core:2.5.1'
|
errorprone 'com.google.errorprone:error_prone_core:2.5.1'
|
||||||
|
|
|
@ -79,6 +79,12 @@ public final class ServerPingWithAlarmManager extends Manager {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the instance of this manager for the given connection.
|
||||||
|
*
|
||||||
|
* @param connection the connection.
|
||||||
|
* @return the instance of this manager for the given connection.
|
||||||
|
*/
|
||||||
public static synchronized ServerPingWithAlarmManager getInstanceFor(XMPPConnection connection) {
|
public static synchronized ServerPingWithAlarmManager getInstanceFor(XMPPConnection connection) {
|
||||||
ServerPingWithAlarmManager serverPingWithAlarmManager = INSTANCES.get(connection);
|
ServerPingWithAlarmManager serverPingWithAlarmManager = INSTANCES.get(connection);
|
||||||
if (serverPingWithAlarmManager == null) {
|
if (serverPingWithAlarmManager == null) {
|
||||||
|
@ -104,6 +110,11 @@ public final class ServerPingWithAlarmManager extends Manager {
|
||||||
mEnabled = enabled;
|
mEnabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if this manager is enabled.
|
||||||
|
*
|
||||||
|
* @return <code>true</code> if this manager is enabled, <code>false</code> otherwise.
|
||||||
|
*/
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
return mEnabled;
|
return mEnabled;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014-2018 Florian Schmaus
|
* Copyright © 2014-2021 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -39,8 +39,8 @@ public class AndroidSmackInitializer implements SmackInitializer {
|
||||||
@Override
|
@Override
|
||||||
public List<Exception> initialize() {
|
public List<Exception> initialize() {
|
||||||
SmackConfiguration.setDefaultHostnameVerifier(new StrictHostnameVerifier());
|
SmackConfiguration.setDefaultHostnameVerifier(new StrictHostnameVerifier());
|
||||||
Base64.setEncoder(AndroidBase64Encoder.getInstance());
|
Base64.setEncoder(AndroidBase64Encoder.INSTANCE);
|
||||||
Base64UrlSafeEncoder.setEncoder(AndroidBase64UrlSafeEncoder.getInstance());
|
Base64UrlSafeEncoder.setEncoder(AndroidBase64UrlSafeEncoder.INSTANCE);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014-2019 Florian Schmaus
|
* Copyright © 2014-2021 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -24,7 +24,10 @@ import android.util.Base64;
|
||||||
*/
|
*/
|
||||||
public final class AndroidBase64Encoder implements org.jivesoftware.smack.util.stringencoder.Base64.Encoder {
|
public final class AndroidBase64Encoder implements org.jivesoftware.smack.util.stringencoder.Base64.Encoder {
|
||||||
|
|
||||||
private static AndroidBase64Encoder instance = new AndroidBase64Encoder();
|
/**
|
||||||
|
* An instance of this encoder.
|
||||||
|
*/
|
||||||
|
public static AndroidBase64Encoder INSTANCE = new AndroidBase64Encoder();
|
||||||
|
|
||||||
private static final int BASE64_ENCODER_FLAGS = Base64.NO_WRAP;
|
private static final int BASE64_ENCODER_FLAGS = Base64.NO_WRAP;
|
||||||
|
|
||||||
|
@ -32,10 +35,6 @@ public final class AndroidBase64Encoder implements org.jivesoftware.smack.util.s
|
||||||
// Use getInstance()
|
// Use getInstance()
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AndroidBase64Encoder getInstance() {
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public byte[] decode(String string) {
|
public byte[] decode(String string) {
|
||||||
return Base64.decode(string, Base64.DEFAULT);
|
return Base64.decode(string, Base64.DEFAULT);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014-2019 Florian Schmaus
|
* Copyright © 2014-2021 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -22,9 +22,16 @@ import org.jivesoftware.smack.util.stringencoder.StringEncoder;
|
||||||
|
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An URL-safe Base64 encoder.
|
||||||
|
* @author Florian Schmaus
|
||||||
|
*/
|
||||||
public final class AndroidBase64UrlSafeEncoder implements StringEncoder<String> {
|
public final class AndroidBase64UrlSafeEncoder implements StringEncoder<String> {
|
||||||
|
|
||||||
private static AndroidBase64UrlSafeEncoder instance = new AndroidBase64UrlSafeEncoder();
|
/**
|
||||||
|
* An instance of this encoder.
|
||||||
|
*/
|
||||||
|
public static AndroidBase64UrlSafeEncoder INSTANCE = new AndroidBase64UrlSafeEncoder();
|
||||||
|
|
||||||
private static final int BASE64_ENCODER_FLAGS = Base64.URL_SAFE | Base64.NO_WRAP;
|
private static final int BASE64_ENCODER_FLAGS = Base64.URL_SAFE | Base64.NO_WRAP;
|
||||||
|
|
||||||
|
@ -32,10 +39,6 @@ public final class AndroidBase64UrlSafeEncoder implements StringEncoder<String>
|
||||||
// Use getInstance()
|
// Use getInstance()
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AndroidBase64UrlSafeEncoder getInstance() {
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String encode(String string) {
|
public String encode(String string) {
|
||||||
return Base64.encodeToString(string.getBytes(StandardCharsets.UTF_8), BASE64_ENCODER_FLAGS);
|
return Base64.encodeToString(string.getBytes(StandardCharsets.UTF_8), BASE64_ENCODER_FLAGS);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Copyright © 2014-2017 Florian Schmaus
|
* Copyright © 2014-2021 Florian Schmaus
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -34,6 +34,11 @@ import android.util.Log;
|
||||||
*/
|
*/
|
||||||
public class AndroidDebugger extends AbstractDebugger {
|
public class AndroidDebugger extends AbstractDebugger {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new Smack debugger for Android.
|
||||||
|
*
|
||||||
|
* @param connection the connection to debug.
|
||||||
|
*/
|
||||||
public AndroidDebugger(XMPPConnection connection) {
|
public AndroidDebugger(XMPPConnection connection) {
|
||||||
super(connection);
|
super(connection);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,9 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
||||||
* PubSub node. An <code>Item</code> has several properties that are dependent
|
* PubSub node. An <code>Item</code> has several properties that are dependent
|
||||||
* on the configuration of the node to which it has been or will be published.
|
* on the configuration of the node to which it has been or will be published.
|
||||||
*
|
*
|
||||||
* <h3>An Item received from a node (via {@link LeafNode#getItems()} or {@link LeafNode#addItemEventListener(org.jivesoftware.smackx.pubsub.listener.ItemEventListener)}</h3>
|
* <p>
|
||||||
|
* <b>An Item received from a node (via {@link LeafNode#getItems()} or {@link LeafNode#addItemEventListener(org.jivesoftware.smackx.pubsub.listener.ItemEventListener)}</b>
|
||||||
|
* </p>
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>Will always have an id (either user or server generated) unless node configuration has both
|
* <li>Will always have an id (either user or server generated) unless node configuration has both
|
||||||
* {@link ConfigureForm#isPersistItems()} and {@link ConfigureForm#isDeliverPayloads()}set to false.
|
* {@link ConfigureForm#isPersistItems()} and {@link ConfigureForm#isDeliverPayloads()}set to false.
|
||||||
|
@ -35,7 +37,9 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
||||||
* to true, otherwise it will be null.
|
* to true, otherwise it will be null.
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* <h3>An Item created to send to a node (via {@link LeafNode#publish()} or {@link LeafNode#publish()}</h3>
|
* <p>
|
||||||
|
* <b>An Item created to send to a node (via {@link LeafNode#publish()} or {@link LeafNode#publish()}</b>
|
||||||
|
* </p>
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>The id is optional, since the server will generate one if necessary, but should be used if it is
|
* <li>The id is optional, since the server will generate one if necessary, but should be used if it is
|
||||||
* meaningful in the context of the node. This value must be unique within the node that it is sent to, since
|
* meaningful in the context of the node. This value must be unique within the node that it is sent to, since
|
||||||
|
|
|
@ -28,7 +28,9 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
||||||
* pubsub node. An <code>Item</code> has several properties that are dependent
|
* pubsub node. An <code>Item</code> has several properties that are dependent
|
||||||
* on the configuration of the node to which it has been or will be published.
|
* on the configuration of the node to which it has been or will be published.
|
||||||
*
|
*
|
||||||
* <h3>An Item received from a node (via {@link LeafNode#getItems()} or {@link LeafNode#addItemEventListener(org.jivesoftware.smackx.pubsub.listener.ItemEventListener)}</h3>
|
* <p>
|
||||||
|
* <b>An Item received from a node (via {@link LeafNode#getItems()} or {@link LeafNode#addItemEventListener(org.jivesoftware.smackx.pubsub.listener.ItemEventListener)}</b>
|
||||||
|
* </p>
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>Will always have an id (either user or server generated) unless node configuration has both
|
* <li>Will always have an id (either user or server generated) unless node configuration has both
|
||||||
* {@link ConfigureForm#isPersistItems()} and {@link ConfigureForm#isDeliverPayloads()}set to false.</li>
|
* {@link ConfigureForm#isPersistItems()} and {@link ConfigureForm#isDeliverPayloads()}set to false.</li>
|
||||||
|
@ -36,7 +38,9 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
||||||
* to true, otherwise it will be null.</li>
|
* to true, otherwise it will be null.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* <h3>An Item created to send to a node (via {@link LeafNode#publish()}</h3>
|
* <p>
|
||||||
|
* <b>An Item created to send to a node (via {@link LeafNode#publish()}</b>
|
||||||
|
* </p>
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>The id is optional, since the server will generate one if necessary, but should be used if it is
|
* <li>The id is optional, since the server will generate one if necessary, but should be used if it is
|
||||||
* meaningful in the context of the node. This value must be unique within the node that it is sent to, since
|
* meaningful in the context of the node. This value must be unique within the node that it is sent to, since
|
||||||
|
@ -45,6 +49,7 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
||||||
* to true.</li>
|
* to true.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
|
*
|
||||||
* <p>To customise the payload object being returned from the {@link #getPayload()} method, you can
|
* <p>To customise the payload object being returned from the {@link #getPayload()} method, you can
|
||||||
* add a custom parser as explained in {@link ItemProvider}.</p>
|
* add a custom parser as explained in {@link ItemProvider}.</p>
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue