mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-19 10:32:05 +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:
|
||||
java:
|
||||
- 11
|
||||
- 15
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
|
28
build.gradle
28
build.gradle
|
@ -152,6 +152,7 @@ allprojects {
|
|||
commonsIoVersion = '2.6'
|
||||
bouncyCastleVersion = '1.68'
|
||||
guavaVersion = '30.1-jre'
|
||||
mockitoVersion = '3.7.7'
|
||||
|
||||
if (project.hasProperty("useSonatype")) {
|
||||
useSonatype = project.getProperty("useSonatype").toBoolean()
|
||||
|
@ -255,7 +256,7 @@ allprojects {
|
|||
}
|
||||
|
||||
jacoco {
|
||||
toolVersion = "0.8.3"
|
||||
toolVersion = "0.8.6"
|
||||
}
|
||||
|
||||
jacocoTestReport {
|
||||
|
@ -273,7 +274,10 @@ allprojects {
|
|||
// since the one paramater addStringOption doesn't seem to
|
||||
// work, we extra add '-quiet', which is added anyway by
|
||||
// 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.
|
||||
// See also https://bugs.openjdk.java.net/browse/JDK-8200363
|
||||
|
@ -285,12 +289,16 @@ allprojects {
|
|||
tasks.withType(Javadoc) {
|
||||
options.addStringOption('-release', javaMajor)
|
||||
|
||||
// Fix for javadoc search. If not set, the search result would direct to
|
||||
// javadoc/undefined/org/jivesoftware/smack/altconnections/HttpLookupMethod.html
|
||||
// instead of
|
||||
// javadoc/org/jivesoftware/smack/altconnections/HttpLookupMethod.html
|
||||
// https://stackoverflow.com/a/53732633/194894
|
||||
options.addBooleanOption("-no-module-directories", true)
|
||||
// The -no-modules-directories javadoc option was removed in Java 13
|
||||
// See https://bugs.openjdk.java.net/browse/JDK-8215582
|
||||
if (JavaVersion.current() < JavaVersion.VERSION_13) {
|
||||
// Fix for javadoc search. If not set, the search result would direct to
|
||||
// javadoc/undefined/org/jivesoftware/smack/altconnections/HttpLookupMethod.html
|
||||
// instead of
|
||||
// javadoc/org/jivesoftware/smack/altconnections/HttpLookupMethod.html
|
||||
// https://stackoverflow.com/a/53732633/194894
|
||||
options.addBooleanOption("-no-module-directories", true)
|
||||
}
|
||||
}
|
||||
tasks.withType(JavaCompile) {
|
||||
options.compilerArgs.addAll([
|
||||
|
@ -312,10 +320,10 @@ tasks.withType(Javadoc) {
|
|||
// The smack-extensions subproject uses mockito in its fest
|
||||
// fixtures, and we want to have mockito also available in
|
||||
// test, so we use API here.
|
||||
testFixturesApi "org.mockito:mockito-core:3.3.3"
|
||||
testFixturesApi "org.mockito:mockito-core:${mockitoVersion}"
|
||||
|
||||
// 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'
|
||||
|
||||
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) {
|
||||
ServerPingWithAlarmManager serverPingWithAlarmManager = INSTANCES.get(connection);
|
||||
if (serverPingWithAlarmManager == null) {
|
||||
|
@ -104,6 +110,11 @@ public final class ServerPingWithAlarmManager extends Manager {
|
|||
mEnabled = enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this manager is enabled.
|
||||
*
|
||||
* @return <code>true</code> if this manager is enabled, <code>false</code> otherwise.
|
||||
*/
|
||||
public boolean isEnabled() {
|
||||
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");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -39,8 +39,8 @@ public class AndroidSmackInitializer implements SmackInitializer {
|
|||
@Override
|
||||
public List<Exception> initialize() {
|
||||
SmackConfiguration.setDefaultHostnameVerifier(new StrictHostnameVerifier());
|
||||
Base64.setEncoder(AndroidBase64Encoder.getInstance());
|
||||
Base64UrlSafeEncoder.setEncoder(AndroidBase64UrlSafeEncoder.getInstance());
|
||||
Base64.setEncoder(AndroidBase64Encoder.INSTANCE);
|
||||
Base64UrlSafeEncoder.setEncoder(AndroidBase64UrlSafeEncoder.INSTANCE);
|
||||
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");
|
||||
* 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 {
|
||||
|
||||
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;
|
||||
|
||||
|
@ -32,10 +35,6 @@ public final class AndroidBase64Encoder implements org.jivesoftware.smack.util.s
|
|||
// Use getInstance()
|
||||
}
|
||||
|
||||
public static AndroidBase64Encoder getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] decode(String string) {
|
||||
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");
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* An URL-safe Base64 encoder.
|
||||
* @author Florian Schmaus
|
||||
*/
|
||||
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;
|
||||
|
||||
|
@ -32,10 +39,6 @@ public final class AndroidBase64UrlSafeEncoder implements StringEncoder<String>
|
|||
// Use getInstance()
|
||||
}
|
||||
|
||||
public static AndroidBase64UrlSafeEncoder getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String encode(String string) {
|
||||
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");
|
||||
* 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 {
|
||||
|
||||
/**
|
||||
* Constructs a new Smack debugger for Android.
|
||||
*
|
||||
* @param connection the connection to debug.
|
||||
*/
|
||||
public AndroidDebugger(XMPPConnection 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
|
||||
* 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>
|
||||
* <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.
|
||||
|
@ -35,7 +37,9 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
|||
* to true, otherwise it will be null.
|
||||
* </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>
|
||||
* <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
|
||||
|
|
|
@ -28,7 +28,9 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
|||
* 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.
|
||||
*
|
||||
* <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>
|
||||
* <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>
|
||||
|
@ -36,7 +38,9 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
|||
* to true, otherwise it will be null.</li>
|
||||
* </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>
|
||||
* <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
|
||||
|
@ -45,6 +49,7 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
|
|||
* to true.</li>
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* <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>
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue