Use TDLib 1.7.10, add BOM, fix null updates, rewrite pom.xml
Fix #64: null updates sent to the updates handler Fix gradle import issue (#61) by rewriting the maven dependency structure, and adding a BOM to being able to keep the natives version in sync with tdlight-java version Fix #63 by adding the required dependencies for windows, linux and macOS in the README.md
This commit is contained in:
parent
afa9d362a4
commit
b27c736866
8
.github/workflows/maven-publish.yml
vendored
8
.github/workflows/maven-publish.yml
vendored
@ -11,8 +11,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- { os: ubuntu-20.04, arch: "linux/amd64", implementation: "tdlight" }
|
- { os: ubuntu-20.04, arch: "linux/amd64" }
|
||||||
#- { os: ubuntu-20.04, arch: "linux/amd64", implementation: "tdlib" }
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Branch name
|
- name: Branch name
|
||||||
@ -30,10 +29,8 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
# ====== Variables
|
# ====== Variables
|
||||||
export REVISION=${{ steps.branch_name.outputs.SOURCE_TAG_VERSION }}
|
export REVISION=${{ steps.branch_name.outputs.SOURCE_TAG_VERSION }}
|
||||||
export IMPLEMENTATION_NAME=${{ matrix.implementation }}
|
|
||||||
|
|
||||||
echo "REVISION=$REVISION" >> $GITHUB_ENV
|
echo "REVISION=$REVISION" >> $GITHUB_ENV
|
||||||
echo "IMPLEMENTATION_NAME=$IMPLEMENTATION_NAME" >> $GITHUB_ENV
|
|
||||||
- name: Set up JDK 17 (Snapshot)
|
- name: Set up JDK 17 (Snapshot)
|
||||||
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v1
|
||||||
@ -46,8 +43,6 @@ jobs:
|
|||||||
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "IMPLEMENTATION_NAME: $IMPLEMENTATION_NAME"
|
|
||||||
|
|
||||||
source ./scripts/continuous-integration/github-workflows/deploy-snapshot.sh
|
source ./scripts/continuous-integration/github-workflows/deploy-snapshot.sh
|
||||||
env:
|
env:
|
||||||
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
||||||
@ -65,7 +60,6 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "REVISION: $REVISION"
|
echo "REVISION: $REVISION"
|
||||||
echo "IMPLEMENTATION_NAME: $IMPLEMENTATION_NAME"
|
|
||||||
|
|
||||||
source ./scripts/continuous-integration/github-workflows/deploy-release.sh
|
source ./scripts/continuous-integration/github-workflows/deploy-release.sh
|
||||||
env:
|
env:
|
||||||
|
42
README.md
42
README.md
@ -28,7 +28,10 @@
|
|||||||
- s390x (Linux)
|
- s390x (Linux)
|
||||||
- ppc64el/ppc64le (Linux)
|
- ppc64el/ppc64le (Linux)
|
||||||
|
|
||||||
**Required libraries for Linux: OpenSSL and zlib**
|
## 📚 Required libraries
|
||||||
|
- **Linux: OpenSSL, zlib**
|
||||||
|
- **MacOS: OpenSSL**
|
||||||
|
- **Windows: [Microsoft Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe)**
|
||||||
|
|
||||||
### Install OpenSSL on macOS
|
### Install OpenSSL on macOS
|
||||||
|
|
||||||
@ -62,18 +65,32 @@ If you are using Maven, edit your `pom.xml` file as below:
|
|||||||
|
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- Add the following dependency -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-java-bom</artifactId>
|
||||||
|
<version>VERSION</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<!-- Add the following dependencies -->
|
<!-- Add the following dependencies -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlight-java</artifactId>
|
<artifactId>tdlight-java</artifactId>
|
||||||
<version>VERSION</version>
|
<!-- don't specify the version here -->
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlight-natives-linux-amd64</artifactId>
|
<artifactId>tdlight-natives-linux-amd64</artifactId>
|
||||||
<version>NATIVES_VERSION</version>
|
<!-- don't specify the version here -->
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- Include other native versions that you want, for example for windows, osx, ... -->
|
<!-- Include other native versions that you want, for example for windows, osx, ... -->
|
||||||
|
|
||||||
@ -84,9 +101,6 @@ If you are using Maven, edit your `pom.xml` file as below:
|
|||||||
Replace `VERSION` with the latest release version, you can find
|
Replace `VERSION` with the latest release version, you can find
|
||||||
it [here](https://github.com/tdlight-team/tdlight-java/releases).
|
it [here](https://github.com/tdlight-team/tdlight-java/releases).
|
||||||
|
|
||||||
Replace `NATIVES_VERSION` with the latest native version. Make sure that you are using the correct natives version for
|
|
||||||
the release that you are using.
|
|
||||||
|
|
||||||
## Setting up the library using Gradle
|
## Setting up the library using Gradle
|
||||||
|
|
||||||
If you are using Gradle, add the following lines into your `build.gradle` file
|
If you are using Gradle, add the following lines into your `build.gradle` file
|
||||||
@ -95,9 +109,18 @@ If you are using Gradle, add the following lines into your `build.gradle` file
|
|||||||
repositories {
|
repositories {
|
||||||
maven { url "https://mvn.mchv.eu/repository/mchv/" }
|
maven { url "https://mvn.mchv.eu/repository/mchv/" }
|
||||||
}
|
}
|
||||||
|
dependencyManagement {
|
||||||
|
imports {
|
||||||
|
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Edgware.SR4'
|
||||||
|
}
|
||||||
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'it.tdlight:tdlight-java:LATEST_VERSION'
|
// import the BOM
|
||||||
implementation 'it.tdlight:tdlight-natives-linux-amd64:NATIVES_VERSION'
|
implementation platform('it.tdlight:tdlight-java-bom:VERSION')
|
||||||
|
|
||||||
|
// do not specify the versions on the dependencies below!
|
||||||
|
implementation 'it.tdlight:tdlight-java'
|
||||||
|
implementation 'it.tdlight:tdlight-natives-linux-amd64'
|
||||||
// Include other native versions that you want, for example for windows, osx, ...
|
// Include other native versions that you want, for example for windows, osx, ...
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -105,9 +128,6 @@ dependencies {
|
|||||||
Replace `VERSION` with the latest release version, you can find
|
Replace `VERSION` with the latest release version, you can find
|
||||||
it [here](https://github.com/tdlight-team/tdlight-java/releases).
|
it [here](https://github.com/tdlight-team/tdlight-java/releases).
|
||||||
|
|
||||||
Replace `NATIVES_VERSION` with the latest native version. Make sure that you are using the correct natives version for
|
|
||||||
the release that you are using.
|
|
||||||
|
|
||||||
## ⚒ Native dependencies
|
## ⚒ Native dependencies
|
||||||
|
|
||||||
To use TDLight Java you need to include one or more native dependencies:
|
To use TDLight Java you need to include one or more native dependencies:
|
||||||
|
198
bom/pom.xml
Normal file
198
bom/pom.xml
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-java-bom</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<name>TDLight Java BOM</name>
|
||||||
|
<properties>
|
||||||
|
<revision>1.0.0.0-SNAPSHOT</revision>
|
||||||
|
<nativesRevisionNumber>194</nativesRevisionNumber>
|
||||||
|
<nativesRevisionSuffix/>
|
||||||
|
<tdlight.natives.version>4.0.${nativesRevisionNumber}${nativesRevisionSuffix}</tdlight.natives.version>
|
||||||
|
<apiRevisionNumber>193</apiRevisionNumber>
|
||||||
|
<apiRevisionSuffix/>
|
||||||
|
<tdlight.api.version>4.0.${apiRevisionNumber}${apiRevisionSuffix}</tdlight.api.version>
|
||||||
|
</properties>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>mchv-release</id>
|
||||||
|
<name>MCHV Release Apache Maven Packages</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>mchv-snapshot</id>
|
||||||
|
<name>MCHV Snapshot Apache Maven Packages</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>mchv-release-distribution</id>
|
||||||
|
<name>MCHV Release Apache Maven Packages Distribution</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv</url>
|
||||||
|
</repository>
|
||||||
|
<snapshotRepository>
|
||||||
|
<id>mchv-snapshot-distribution</id>
|
||||||
|
<name>MCHV Snapshot Apache Maven Packages Distribution</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
||||||
|
</snapshotRepository>
|
||||||
|
</distributionManagement>
|
||||||
|
<scm>
|
||||||
|
<connection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java.git</connection>
|
||||||
|
<developerConnection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java.git</developerConnection>
|
||||||
|
<tag>HEAD</tag>
|
||||||
|
</scm>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.unimi.dsi</groupId>
|
||||||
|
<artifactId>fastutil</artifactId>
|
||||||
|
<version>8.5.6</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.harawata</groupId>
|
||||||
|
<artifactId>appdirs</artifactId>
|
||||||
|
<version>1.2.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.zxing</groupId>
|
||||||
|
<artifactId>core</artifactId>
|
||||||
|
<version>3.4.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-api-legacy</artifactId>
|
||||||
|
<version>${tdlight.api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-api-sealed</artifactId>
|
||||||
|
<version>${tdlight.api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-api-legacy</artifactId>
|
||||||
|
<version>${tdlight.api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-api-sealed</artifactId>
|
||||||
|
<version>${tdlight.api.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-java</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-java</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-java-parent</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-java-parent</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- TDLight natives -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives-linux-amd64</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives-linux-aarch64</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives-linux-x86</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives-linux-armv6</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives-linux-armv7</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives-linux-ppc64le</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives-windows-amd64</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives-osx-amd64</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- TDLib natives -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-linux-amd64</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-linux-aarch64</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-linux-x86</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-linux-armv6</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-linux-armv7</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-linux-ppc64le</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-windows-amd64</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlib-natives-osx-amd64</artifactId>
|
||||||
|
<version>${tdlight.natives.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
<modules>
|
||||||
|
<module>../parent</module>
|
||||||
|
</modules>
|
||||||
|
</project>
|
@ -8,8 +8,6 @@
|
|||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<tdlight.java.version>2.7.9.5</tdlight.java.version>
|
|
||||||
<tdlight.natives.version>4.0.186</tdlight.natives.version>
|
|
||||||
</properties>
|
</properties>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
@ -23,29 +21,36 @@
|
|||||||
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-java-bom</artifactId>
|
||||||
|
<version>2.7.10.0</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- TDLight -->
|
<!-- TDLight -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlight-java</artifactId>
|
<artifactId>tdlight-java</artifactId>
|
||||||
<version>${tdlight.java.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- TDLight natives -->
|
<!-- TDLight natives -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlight-natives-linux-amd64</artifactId>
|
<artifactId>tdlight-natives-linux-amd64</artifactId>
|
||||||
<version>${tdlight.natives.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlight-natives-windows-amd64</artifactId>
|
<artifactId>tdlight-natives-windows-amd64</artifactId>
|
||||||
<version>${tdlight.natives.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlight-natives-osx-amd64</artifactId>
|
<artifactId>tdlight-natives-osx-amd64</artifactId>
|
||||||
<version>${tdlight.natives.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- log4j logging -->
|
<!-- log4j logging -->
|
||||||
|
21
parent/pom.xml
Normal file
21
parent/pom.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>tdlight-java-parent</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<parent>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
<artifactId>tdlight-java-bom</artifactId>
|
||||||
|
<relativePath>../bom/pom.xml</relativePath>
|
||||||
|
</parent>
|
||||||
|
<properties>
|
||||||
|
<revision>1.0.0.0-SNAPSHOT</revision>
|
||||||
|
</properties>
|
||||||
|
<modules>
|
||||||
|
<!--disabled: <module>../tdlib</module>-->
|
||||||
|
<module>../tdlight</module>
|
||||||
|
</modules>
|
||||||
|
</project>
|
68
pom.xml
68
pom.xml
@ -1,68 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>it.tdlight</groupId>
|
|
||||||
<artifactId>tdlight-java-parent</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
<packaging>pom</packaging>
|
|
||||||
<name>TDLight Java Parent</name>
|
|
||||||
<properties>
|
|
||||||
<revision>1.0.0.0-SNAPSHOT</revision>
|
|
||||||
<nativesRevisionNumber>187</nativesRevisionNumber>
|
|
||||||
<nativesRevisionSuffix/>
|
|
||||||
<apiRevisionNumber>185</apiRevisionNumber>
|
|
||||||
<apiRevisionSuffix/>
|
|
||||||
</properties>
|
|
||||||
<repositories>
|
|
||||||
<repository>
|
|
||||||
<id>mchv-release</id>
|
|
||||||
<name>MCHV Release Apache Maven Packages</name>
|
|
||||||
<url>https://mvn.mchv.eu/repository/mchv</url>
|
|
||||||
</repository>
|
|
||||||
<repository>
|
|
||||||
<id>mchv-snapshot</id>
|
|
||||||
<name>MCHV Snapshot Apache Maven Packages</name>
|
|
||||||
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
<distributionManagement>
|
|
||||||
<repository>
|
|
||||||
<id>mchv-release-distribution</id>
|
|
||||||
<name>MCHV Release Apache Maven Packages Distribution</name>
|
|
||||||
<url>https://mvn.mchv.eu/repository/mchv</url>
|
|
||||||
</repository>
|
|
||||||
<snapshotRepository>
|
|
||||||
<id>mchv-snapshot-distribution</id>
|
|
||||||
<name>MCHV Snapshot Apache Maven Packages Distribution</name>
|
|
||||||
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
|
||||||
</snapshotRepository>
|
|
||||||
</distributionManagement>
|
|
||||||
<scm>
|
|
||||||
<connection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java.git</connection>
|
|
||||||
<developerConnection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java.git</developerConnection>
|
|
||||||
<tag>HEAD</tag>
|
|
||||||
</scm>
|
|
||||||
|
|
||||||
<modules/>
|
|
||||||
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>tdlib</id>
|
|
||||||
<activation>
|
|
||||||
<activeByDefault>false</activeByDefault>
|
|
||||||
</activation>
|
|
||||||
<modules>
|
|
||||||
<module>tdlib</module>
|
|
||||||
</modules>
|
|
||||||
</profile>
|
|
||||||
<profile>
|
|
||||||
<id>tdlight</id>
|
|
||||||
<activation>
|
|
||||||
<activeByDefault>false</activeByDefault>
|
|
||||||
</activation>
|
|
||||||
<modules>
|
|
||||||
<module>tdlight</module>
|
|
||||||
</modules>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
</project>
|
|
@ -2,7 +2,6 @@
|
|||||||
set -e
|
set -e
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
||||||
# REVISION = <revision>
|
# REVISION = <revision>
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
|
|
||||||
cd ./scripts/core/
|
cd ./scripts/core/
|
||||||
./deploy_release.sh
|
./deploy_release.sh
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
set -e
|
set -e
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
|
|
||||||
cd ./scripts/core/
|
cd ./scripts/core/
|
||||||
./deploy_snapshot.sh
|
./deploy_snapshot.sh
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
set -e
|
set -e
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
|
|
||||||
cd ./scripts/core/
|
cd ./scripts/core/
|
||||||
./only_compile_release.sh
|
./only_compile_release.sh
|
||||||
|
@ -1,21 +1,18 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
||||||
# REVISION = <revision>
|
# REVISION = <revision>
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
|
|
||||||
# Check variables correctness
|
# Check variables correctness
|
||||||
if [ -z "${REVISION}" ]; then
|
if [ -z "${REVISION}" ]; then
|
||||||
echo "Missing parameter: REVISION"
|
echo "Missing parameter: REVISION"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd ../../
|
cd "../../"
|
||||||
|
|
||||||
mvn -B -P "${IMPLEMENTATION_NAME}" -Drevision="${REVISION}" clean deploy
|
cd "bom"
|
||||||
|
mvn -B -Drevision="${REVISION}" clean deploy
|
||||||
|
cd "../"
|
||||||
|
|
||||||
echo "Done."
|
echo "Done."
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -1,16 +1,11 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
|
|
||||||
# Check variables correctness
|
cd "../../"
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd ../../
|
cd "bom"
|
||||||
|
mvn -B clean deploy
|
||||||
mvn -B -P "${IMPLEMENTATION_NAME}" clean deploy
|
cd "../"
|
||||||
|
|
||||||
echo "Done."
|
echo "Done."
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -1,16 +1,11 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd "../../"
|
cd "../../"
|
||||||
|
|
||||||
mvn -B -P "${IMPLEMENTATION_NAME}" clean package
|
cd "bom"
|
||||||
|
mvn -B clean package
|
||||||
|
cd "../"
|
||||||
|
|
||||||
echo "Done."
|
echo "Done."
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -45,7 +45,7 @@ final class AuthorizationStateWaitAuthenticationDataHandler implements GenericUp
|
|||||||
}
|
}
|
||||||
}, exceptionHandler);
|
}, exceptionHandler);
|
||||||
} else {
|
} else {
|
||||||
PhoneNumberAuthenticationSettings phoneSettings = new PhoneNumberAuthenticationSettings(false, false, false);
|
PhoneNumberAuthenticationSettings phoneSettings = new PhoneNumberAuthenticationSettings(false, false, false, false, null);
|
||||||
|
|
||||||
String phoneNumber = String.valueOf(authenticationData.getUserPhoneNumber());
|
String phoneNumber = String.valueOf(authenticationData.getUserPhoneNumber());
|
||||||
SetAuthenticationPhoneNumber response = new SetAuthenticationPhoneNumber(phoneNumber, phoneSettings);
|
SetAuthenticationPhoneNumber response = new SetAuthenticationPhoneNumber(phoneNumber, phoneSettings);
|
||||||
|
@ -73,7 +73,7 @@ final class CommandsHandler implements GenericUpdateHandler<UpdateNewMessage> {
|
|||||||
if (response.getConstructor() == TdApi.Error.CONSTRUCTOR) {
|
if (response.getConstructor() == TdApi.Error.CONSTRUCTOR) {
|
||||||
throw new TelegramError((TdApi.Error) response);
|
throw new TelegramError((TdApi.Error) response);
|
||||||
}
|
}
|
||||||
handler.onCommand((Chat) response, message.sender, arguments);
|
handler.onCommand((Chat) response, message.senderId, arguments);
|
||||||
}, error -> logger.warn("Error when handling the command {}", commandName, error));
|
}, error -> logger.warn("Error when handling the command {}", commandName, error));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,24 +47,22 @@ public final class InternalClient implements ClientEventsHandler, TelegramClient
|
|||||||
@Override
|
@Override
|
||||||
public void handleEvents(boolean isClosed, long[] eventIds, TdApi.Object[] events, int arrayOffset, int arrayLength) {
|
public void handleEvents(boolean isClosed, long[] eventIds, TdApi.Object[] events, int arrayOffset, int arrayLength) {
|
||||||
if (updatesHandler != null) {
|
if (updatesHandler != null) {
|
||||||
LongArrayList idsToFilter = new LongArrayList(eventIds);
|
ObjectArrayList<TdApi.Object> updatesList = new ObjectArrayList<>(arrayLength);
|
||||||
ObjectArrayList<TdApi.Object> eventsToFilter = new ObjectArrayList<>(events);
|
|
||||||
|
|
||||||
for (int i = (arrayOffset + arrayLength) - 1; i >= arrayOffset; i--) {
|
for (int i = (arrayOffset + arrayLength) - 1; i >= arrayOffset; i--) {
|
||||||
if (eventIds[i] != 0) {
|
if (eventIds[i] != 0) {
|
||||||
idsToFilter.removeLong(i);
|
|
||||||
eventsToFilter.remove(i);
|
|
||||||
|
|
||||||
long eventId = eventIds[i];
|
long eventId = eventIds[i];
|
||||||
TdApi.Object event = events[i];
|
TdApi.Object event = events[i];
|
||||||
|
|
||||||
Handler<?> handler = handlers.remove(eventId);
|
Handler<?> handler = handlers.remove(eventId);
|
||||||
handleResponse(eventId, event, handler);
|
handleResponse(eventId, event, handler);
|
||||||
|
} else {
|
||||||
|
updatesList.add(events[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
updatesHandler.getUpdatesHandler().onUpdates(eventsToFilter);
|
updatesHandler.getUpdatesHandler().onUpdates(updatesList);
|
||||||
} catch (Throwable cause) {
|
} catch (Throwable cause) {
|
||||||
handleException(updatesHandler.getExceptionHandler(), cause);
|
handleException(updatesHandler.getExceptionHandler(), cause);
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public final class InternalClientManager implements AutoCloseable {
|
|||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
this.implementationName = implementationName;
|
this.implementationName = implementationName;
|
||||||
responseReceiver = new ResponseReceiver(this::handleClientEvents);
|
responseReceiver = new NativeResponseReceiver(this::handleClientEvents);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package it.tdlight.common.internal;
|
||||||
|
|
||||||
|
import it.tdlight.common.EventsHandler;
|
||||||
|
import it.tdlight.jni.TdApi.Object;
|
||||||
|
|
||||||
|
public class NativeResponseReceiver extends ResponseReceiver {
|
||||||
|
|
||||||
|
public NativeResponseReceiver(EventsHandler eventsHandler) {
|
||||||
|
super(eventsHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int receive(int[] clientIds, long[] eventIds, Object[] events, double timeout) {
|
||||||
|
return NativeClientAccess.receive(clientIds, eventIds, events, timeout);
|
||||||
|
}
|
||||||
|
}
|
@ -7,18 +7,19 @@ import it.tdlight.common.EventsHandler;
|
|||||||
import it.tdlight.common.utils.IntSwapper;
|
import it.tdlight.common.utils.IntSwapper;
|
||||||
import it.tdlight.common.utils.SpinWaitSupport;
|
import it.tdlight.common.utils.SpinWaitSupport;
|
||||||
import it.tdlight.jni.TdApi;
|
import it.tdlight.jni.TdApi;
|
||||||
import it.tdlight.jni.TdApi.Object;
|
|
||||||
import it.tdlight.jni.TdApi.UpdateAuthorizationState;
|
import it.tdlight.jni.TdApi.UpdateAuthorizationState;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.StringJoiner;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
public final class ResponseReceiver extends Thread implements AutoCloseable {
|
abstract class ResponseReceiver extends Thread implements AutoCloseable {
|
||||||
|
|
||||||
private static final String FLAG_PAUSE_SHUTDOWN_UNTIL_ALL_CLOSED = "it.tdlight.pauseShutdownUntilAllClosed";
|
private static final String FLAG_PAUSE_SHUTDOWN_UNTIL_ALL_CLOSED = "it.tdlight.pauseShutdownUntilAllClosed";
|
||||||
private static final String FLAG_USE_OPTIMIZED_DISPATCHER = "tdlight.dispatcher.use_optimized_dispatcher";
|
private static final String FLAG_USE_OPTIMIZED_DISPATCHER = "tdlight.dispatcher.use_optimized_dispatcher";
|
||||||
@ -58,30 +59,34 @@ public final class ResponseReceiver extends Thread implements AutoCloseable {
|
|||||||
this.setDaemon(true);
|
this.setDaemon(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return results count
|
||||||
|
*/
|
||||||
|
public abstract int receive(int[] clientIds, long[] eventIds, TdApi.Object[] events, double timeout);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void start() {
|
public void run() {
|
||||||
if (closeCalled.get()) {
|
if (closeCalled.get()) {
|
||||||
throw new IllegalStateException("Closed");
|
throw new IllegalStateException("Closed");
|
||||||
}
|
}
|
||||||
if (startCalled.compareAndSet(false, true)) {
|
if (startCalled.compareAndSet(false, true)) {
|
||||||
super.start();
|
this.runInternal();
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalStateException("Start already called");
|
throw new IllegalStateException("Start already called");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void runInternal() {
|
||||||
public void run() {
|
|
||||||
int[] sortIndex;
|
int[] sortIndex;
|
||||||
try {
|
try {
|
||||||
boolean interrupted;
|
boolean interrupted;
|
||||||
while (
|
while (
|
||||||
!(interrupted = Thread.interrupted())
|
!(interrupted = Thread.interrupted())
|
||||||
&& !jvmShutdown.get()
|
&& !jvmShutdown.get()
|
||||||
&& (!closeCalled.get() || !registeredClients.isEmpty())
|
&& (!closeCalled.get() || !registeredClients.isEmpty())
|
||||||
) {
|
) {
|
||||||
// Timeout is expressed in seconds
|
// Timeout is expressed in seconds
|
||||||
int resultsCount = NativeClientAccess.receive(clientIds, eventIds, events, 2.0);
|
int resultsCount = receive(clientIds, eventIds, events, 2.0);
|
||||||
|
|
||||||
if (resultsCount <= 0) {
|
if (resultsCount <= 0) {
|
||||||
SpinWaitSupport.onSpinWait();
|
SpinWaitSupport.onSpinWait();
|
||||||
@ -145,13 +150,39 @@ public final class ResponseReceiver extends Thread implements AutoCloseable {
|
|||||||
|
|
||||||
public final int clientId;
|
public final int clientId;
|
||||||
public final long eventId;
|
public final long eventId;
|
||||||
public final Object event;
|
public final TdApi.Object event;
|
||||||
|
|
||||||
public Event(int clientId, long eventId, Object event) {
|
public Event(int clientId, long eventId, TdApi.Object event) {
|
||||||
this.clientId = clientId;
|
this.clientId = clientId;
|
||||||
this.eventId = eventId;
|
this.eventId = eventId;
|
||||||
this.event = event;
|
this.event = event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (o == null || getClass() != o.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Event event1 = (Event) o;
|
||||||
|
return clientId == event1.clientId && eventId == event1.eventId && Objects.equals(event, event1.event);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(clientId, eventId, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new StringJoiner(", ", Event.class.getSimpleName() + "[", "]")
|
||||||
|
.add("clientId=" + clientId)
|
||||||
|
.add("eventId=" + eventId)
|
||||||
|
.add("event=" + event)
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Event> eventsList = new ArrayList<>(resultsCount);
|
List<Event> eventsList = new ArrayList<>(resultsCount);
|
||||||
|
51
src/test/java/it/tdlight/common/internal/Event.java
Normal file
51
src/test/java/it/tdlight/common/internal/Event.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package it.tdlight.common.internal;
|
||||||
|
|
||||||
|
import it.tdlight.jni.TdApi;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public final class Event {
|
||||||
|
|
||||||
|
private final int clientId;
|
||||||
|
private final long eventId;
|
||||||
|
private final TdApi.Object event;
|
||||||
|
|
||||||
|
Event(int clientId, long eventId, TdApi.Object event) {
|
||||||
|
this.clientId = clientId;
|
||||||
|
this.eventId = eventId;
|
||||||
|
this.event = event;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int clientId() {
|
||||||
|
return clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long eventId() {
|
||||||
|
return eventId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TdApi.Object event() {
|
||||||
|
return event;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null || obj.getClass() != this.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Event that = (Event) obj;
|
||||||
|
return this.clientId == that.clientId && this.eventId == that.eventId && Objects.equals(this.event, that.event);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(clientId, eventId, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Event[" + "clientId=" + clientId + ", " + "eventId=" + eventId + ", " + "event=" + event + ']';
|
||||||
|
}
|
||||||
|
}
|
124
src/test/java/it/tdlight/common/internal/HandleEventsTest.java
Normal file
124
src/test/java/it/tdlight/common/internal/HandleEventsTest.java
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
package it.tdlight.common.internal;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
import it.tdlight.common.EventsHandler;
|
||||||
|
import it.tdlight.jni.TdApi;
|
||||||
|
import it.tdlight.jni.TdApi.Object;
|
||||||
|
import it.unimi.dsi.fastutil.longs.LongArraySet;
|
||||||
|
import it.unimi.dsi.fastutil.longs.LongSets;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class HandleEventsTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() throws InterruptedException {
|
||||||
|
System.setProperty("tdlight.dispatcher.use_optimized_dispatcher", "false");
|
||||||
|
List<Event> initialEvents = new ArrayList<>();
|
||||||
|
initialEvents.add(new Event(2, 0, new TdApi.LogVerbosityLevel(0)));
|
||||||
|
initialEvents.add(new Event(1, 1, new TdApi.LogVerbosityLevel(1)));
|
||||||
|
initialEvents.add(new Event(7, 3, new TdApi.LogVerbosityLevel(2)));
|
||||||
|
initialEvents.add(new Event(7, 0, new TdApi.LogVerbosityLevel(3)));
|
||||||
|
initialEvents.add(new Event(1, 7, new TdApi.LogVerbosityLevel(4)));
|
||||||
|
initialEvents.add(new Event(2, 398, new TdApi.LogVerbosityLevel(5)));
|
||||||
|
initialEvents.add(new Event(7, 98832, new TdApi.LogVerbosityLevel(6)));
|
||||||
|
initialEvents.add(new Event(2, 32832, new TdApi.LogVerbosityLevel(7)));
|
||||||
|
initialEvents.add(new Event(1, 39484, new TdApi.LogVerbosityLevel(8)));
|
||||||
|
initialEvents.add(new Event(1, 39485, new TdApi.LogVerbosityLevel(9)));
|
||||||
|
initialEvents.add(new Event(1, 39486, new TdApi.LogVerbosityLevel(10)));
|
||||||
|
initialEvents.add(new Event(1, 39487, new TdApi.LogVerbosityLevel(11)));
|
||||||
|
initialEvents.add(new Event(1, 39488, new TdApi.LogVerbosityLevel(12)));
|
||||||
|
CountDownLatch eventsQueueEmptied = new CountDownLatch(1);
|
||||||
|
ArrayBlockingQueue<Event> eventsQueue = new ArrayBlockingQueue<>(1024);
|
||||||
|
eventsQueue.addAll(initialEvents);
|
||||||
|
ArrayBlockingQueue<Result> results = new ArrayBlockingQueue<>(1024);
|
||||||
|
ResponseReceiver responseReceiver = new ResponseReceiver((clientId, isClosed, clientEventIds, clientEvents, arrayOffset, arrayLength) -> {
|
||||||
|
results.add(new Result(clientId,
|
||||||
|
isClosed,
|
||||||
|
Arrays.copyOf(clientEventIds, clientEventIds.length),
|
||||||
|
Arrays.copyOf(clientEvents, clientEvents.length),
|
||||||
|
arrayOffset,
|
||||||
|
arrayLength
|
||||||
|
));
|
||||||
|
}) {
|
||||||
|
@Override
|
||||||
|
public int receive(int[] clientIds, long[] eventIds, Object[] events, double timeout) {
|
||||||
|
int i = 0;
|
||||||
|
while (!eventsQueue.isEmpty() && i < clientIds.length) {
|
||||||
|
Event event = eventsQueue.poll();
|
||||||
|
clientIds[i] = event.clientId();
|
||||||
|
eventIds[i] = event.eventId();
|
||||||
|
events[i] = event.event();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (eventsQueue.isEmpty()) {
|
||||||
|
eventsQueueEmptied.countDown();
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
responseReceiver.registerClient(2);
|
||||||
|
responseReceiver.registerClient(1);
|
||||||
|
responseReceiver.registerClient(7);
|
||||||
|
responseReceiver.start();
|
||||||
|
eventsQueueEmptied.await();
|
||||||
|
responseReceiver.interrupt();
|
||||||
|
responseReceiver.close();
|
||||||
|
HashMap<Integer, Result> resultsMap = new HashMap<>();
|
||||||
|
while (!results.isEmpty()) {
|
||||||
|
Result part = results.poll();
|
||||||
|
if (part.arrayLength() > 0) {
|
||||||
|
Result prev = resultsMap.get(part.clientId());
|
||||||
|
if (prev == null) {
|
||||||
|
prev = new Result(part.clientId(), false, new long[0], new TdApi.Object[0], 0, 0);
|
||||||
|
}
|
||||||
|
int newSize = part.arrayLength() + prev.arrayLength();
|
||||||
|
long[] newIds = new long[newSize];
|
||||||
|
TdApi.Object[] newEvents = new TdApi.Object[newSize];
|
||||||
|
int i = 0;
|
||||||
|
for (int i1 = 0; i1 < prev.arrayLength(); i1++, i++) {
|
||||||
|
newIds[i] = prev.clientEventIds()[i1 + prev.arrayOffset()];
|
||||||
|
newEvents[i] = prev.clientEvents()[i1 + prev.arrayOffset()];
|
||||||
|
}
|
||||||
|
for (int i1 = 0; i1 < part.arrayLength(); i1++, i++) {
|
||||||
|
newIds[i] = part.clientEventIds()[i1 + part.arrayOffset()];
|
||||||
|
newEvents[i] = part.clientEvents()[i1 + part.arrayOffset()];
|
||||||
|
}
|
||||||
|
resultsMap.put(part.clientId(), new Result(part.clientId(), part.isClosed() || prev.isClosed(), newIds, newEvents, 0, newSize));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Result client2Results = resultsMap.remove(2);
|
||||||
|
Result client1Results = resultsMap.remove(1);
|
||||||
|
Result client7Results = resultsMap.remove(7);
|
||||||
|
assertTrue(resultsMap.isEmpty());
|
||||||
|
assertEquals(0, results.size());
|
||||||
|
|
||||||
|
assertEquals(2, client2Results.clientId());
|
||||||
|
assertEquals(1, client1Results.clientId());
|
||||||
|
assertEquals(7, client7Results.clientId());
|
||||||
|
|
||||||
|
assertEquals(getClientEventIds(initialEvents, 2), LongArraySet.of(Arrays.copyOfRange(client2Results.clientEventIds(), client2Results.arrayOffset(), client2Results.arrayOffset() + client2Results.arrayLength())));
|
||||||
|
assertEquals(getClientEventIds(initialEvents, 1), LongArraySet.of(Arrays.copyOfRange(client1Results.clientEventIds(), client1Results.arrayOffset(), client1Results.arrayOffset() + client1Results.arrayLength())));
|
||||||
|
assertEquals(getClientEventIds(initialEvents, 7), LongArraySet.of(Arrays.copyOfRange(client7Results.clientEventIds(), client7Results.arrayOffset(), client7Results.arrayOffset() + client7Results.arrayLength())));
|
||||||
|
|
||||||
|
assertEquals(initialEvents.size(), client2Results.arrayLength() + client1Results.arrayLength() + client7Results.arrayLength());
|
||||||
|
|
||||||
|
assertEquals(3, client2Results.arrayLength());
|
||||||
|
assertEquals(7, client1Results.arrayLength());
|
||||||
|
assertEquals(3, client7Results.arrayLength());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Set<Long> getClientEventIds(List<Event> initialEvents, long clientId) {
|
||||||
|
return initialEvents.stream().filter(e -> e.clientId() == clientId).map(Event::eventId).collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
}
|
80
src/test/java/it/tdlight/common/internal/Result.java
Normal file
80
src/test/java/it/tdlight/common/internal/Result.java
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package it.tdlight.common.internal;
|
||||||
|
|
||||||
|
import it.tdlight.jni.TdApi;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public final class Result {
|
||||||
|
|
||||||
|
private final int clientId;
|
||||||
|
private final boolean isClosed;
|
||||||
|
private final long[] clientEventIds;
|
||||||
|
private final TdApi.Object[] clientEvents;
|
||||||
|
private final int arrayOffset;
|
||||||
|
private final int arrayLength;
|
||||||
|
|
||||||
|
public Result(int clientId,
|
||||||
|
boolean isClosed,
|
||||||
|
long[] clientEventIds,
|
||||||
|
TdApi.Object[] clientEvents,
|
||||||
|
int arrayOffset,
|
||||||
|
int arrayLength) {
|
||||||
|
this.clientId = clientId;
|
||||||
|
this.isClosed = isClosed;
|
||||||
|
this.clientEventIds = clientEventIds;
|
||||||
|
this.clientEvents = clientEvents;
|
||||||
|
this.arrayOffset = arrayOffset;
|
||||||
|
this.arrayLength = arrayLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int clientId() {
|
||||||
|
return clientId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isClosed() {
|
||||||
|
return isClosed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long[] clientEventIds() {
|
||||||
|
return clientEventIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TdApi.Object[] clientEvents() {
|
||||||
|
return clientEvents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int arrayOffset() {
|
||||||
|
return arrayOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int arrayLength() {
|
||||||
|
return arrayLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null || obj.getClass() != this.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Result that = (Result) obj;
|
||||||
|
return this.clientId == that.clientId && this.isClosed == that.isClosed && Objects.equals(this.clientEventIds,
|
||||||
|
that.clientEventIds
|
||||||
|
) && Objects.equals(this.clientEvents, that.clientEvents) && this.arrayOffset == that.arrayOffset
|
||||||
|
&& this.arrayLength == that.arrayLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(clientId, isClosed, clientEventIds, clientEvents, arrayOffset, arrayLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Result[" + "clientId=" + clientId + ", " + "isClosed=" + isClosed + ", " + "clientEventIds="
|
||||||
|
+ clientEventIds + ", " + "clientEvents=" + clientEvents + ", " + "arrayOffset=" + arrayOffset + ", "
|
||||||
|
+ "arrayLength=" + arrayLength + ']';
|
||||||
|
}
|
||||||
|
}
|
@ -9,11 +9,12 @@
|
|||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
<artifactId>tdlight-java-parent</artifactId>
|
<artifactId>tdlight-java-parent</artifactId>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../parent/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<revision>1.0.0.0-SNAPSHOT</revision>
|
<revision>1.0.0.0-SNAPSHOT</revision>
|
||||||
|
<tdlib.api.artifact.id>tdlib-api-legacy</tdlib.api.artifact.id>
|
||||||
</properties>
|
</properties>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
@ -47,13 +48,7 @@
|
|||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlib-api</artifactId>
|
<artifactId>${tdlib.api.artifact.id}</artifactId>
|
||||||
<version>4.0.${apiRevisionNumber}${apiRevisionSuffix}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>it.cavallium</groupId>
|
|
||||||
<artifactId>concurrent-locks</artifactId>
|
|
||||||
<version>1.0.8</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.unimi.dsi</groupId>
|
<groupId>it.unimi.dsi</groupId>
|
||||||
@ -77,23 +72,21 @@
|
|||||||
<groupId>com.google.zxing</groupId>
|
<groupId>com.google.zxing</groupId>
|
||||||
<artifactId>core</artifactId>
|
<artifactId>core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
<version>5.8.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.unimi.dsi</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>fastutil</artifactId>
|
<artifactId>tdlight-java-bom</artifactId>
|
||||||
<version>8.5.6</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
<type>pom</type>
|
||||||
<dependency>
|
<scope>import</scope>
|
||||||
<groupId>net.harawata</groupId>
|
|
||||||
<artifactId>appdirs</artifactId>
|
|
||||||
<version>1.2.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.zxing</groupId>
|
|
||||||
<artifactId>core</artifactId>
|
|
||||||
<version>3.4.1</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
@ -110,9 +103,28 @@
|
|||||||
<directory>target-snapshot</directory>
|
<directory>target-snapshot</directory>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>jdk-with-sealed-interfaces</id>
|
||||||
|
<activation>
|
||||||
|
<jdk>[17,)</jdk>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<tdlib.api.artifact.id>tdlib-api-sealed</tdlib.api.artifact.id>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>jdk-with-legacy-interfaces</id>
|
||||||
|
<activation>
|
||||||
|
<jdk>(,17)</jdk>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<tdlib.api.artifact.id>tdlib-api-legacy</tdlib.api.artifact.id>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
<build>
|
<build>
|
||||||
<sourceDirectory>${project.basedir}/../src/main/java</sourceDirectory>
|
<sourceDirectory>${project.basedir}/../src/main/java</sourceDirectory>
|
||||||
|
<testSourceDirectory>${project.basedir}/../src/test/java</testSourceDirectory>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-clean-plugin</artifactId>
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
@ -243,12 +255,11 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.codehaus.mojo</groupId>
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
<artifactId>flatten-maven-plugin</artifactId>
|
<artifactId>flatten-maven-plugin</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.2.2</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<updatePomFile>true</updatePomFile>
|
|
||||||
<flattenMode>resolveCiFriendliesOnly</flattenMode>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
<executions>
|
||||||
|
<!-- enable flattening -->
|
||||||
<execution>
|
<execution>
|
||||||
<id>flatten</id>
|
<id>flatten</id>
|
||||||
<phase>process-resources</phase>
|
<phase>process-resources</phase>
|
||||||
@ -256,6 +267,7 @@
|
|||||||
<goal>flatten</goal>
|
<goal>flatten</goal>
|
||||||
</goals>
|
</goals>
|
||||||
</execution>
|
</execution>
|
||||||
|
<!-- ensure proper cleanup -->
|
||||||
<execution>
|
<execution>
|
||||||
<id>flatten.clean</id>
|
<id>flatten.clean</id>
|
||||||
<phase>clean</phase>
|
<phase>clean</phase>
|
||||||
@ -284,6 +296,18 @@
|
|||||||
<artifactId>maven-deploy-plugin</artifactId>
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
<version>2.8.2</version>
|
<version>2.8.2</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.surefire</groupId>
|
||||||
|
<artifactId>surefire</artifactId>
|
||||||
|
<version>3.0.0-M5</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
<version>5.8.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
@ -9,11 +9,12 @@
|
|||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
<artifactId>tdlight-java-parent</artifactId>
|
<artifactId>tdlight-java-parent</artifactId>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../parent/pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<revision>1.0.0.0-SNAPSHOT</revision>
|
<revision>1.0.0.0-SNAPSHOT</revision>
|
||||||
|
<tdlight.api.artifact.id>tdlight-api-legacy</tdlight.api.artifact.id>
|
||||||
</properties>
|
</properties>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
@ -47,13 +48,7 @@
|
|||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlight-api</artifactId>
|
<artifactId>${tdlight.api.artifact.id}</artifactId>
|
||||||
<version>4.0.${apiRevisionNumber}${apiRevisionSuffix}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>it.cavallium</groupId>
|
|
||||||
<artifactId>concurrent-locks</artifactId>
|
|
||||||
<version>1.0.8</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.unimi.dsi</groupId>
|
<groupId>it.unimi.dsi</groupId>
|
||||||
@ -77,23 +72,21 @@
|
|||||||
<groupId>com.google.zxing</groupId>
|
<groupId>com.google.zxing</groupId>
|
||||||
<artifactId>core</artifactId>
|
<artifactId>core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
<version>5.8.0</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.unimi.dsi</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>fastutil</artifactId>
|
<artifactId>tdlight-java-bom</artifactId>
|
||||||
<version>8.5.6</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
<type>pom</type>
|
||||||
<dependency>
|
<scope>import</scope>
|
||||||
<groupId>net.harawata</groupId>
|
|
||||||
<artifactId>appdirs</artifactId>
|
|
||||||
<version>1.2.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.google.zxing</groupId>
|
|
||||||
<artifactId>core</artifactId>
|
|
||||||
<version>3.4.1</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
@ -110,9 +103,28 @@
|
|||||||
<directory>target-snapshot</directory>
|
<directory>target-snapshot</directory>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>jdk-with-sealed-interfaces</id>
|
||||||
|
<activation>
|
||||||
|
<jdk>[17,)</jdk>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<tdlight.api.artifact.id>tdlight-api-sealed</tdlight.api.artifact.id>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>jdk-with-legacy-interfaces</id>
|
||||||
|
<activation>
|
||||||
|
<jdk>(,17)</jdk>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<tdlight.api.artifact.id>tdlight-api-legacy</tdlight.api.artifact.id>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
<build>
|
<build>
|
||||||
<sourceDirectory>${project.basedir}/../src/main/java</sourceDirectory>
|
<sourceDirectory>${project.basedir}/../src/main/java</sourceDirectory>
|
||||||
|
<testSourceDirectory>${project.basedir}/../src/test/java</testSourceDirectory>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<artifactId>maven-clean-plugin</artifactId>
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
@ -187,6 +199,7 @@
|
|||||||
<excludes>
|
<excludes>
|
||||||
<exclude>it/tdlight/tdlib/ClientManager.java</exclude>
|
<exclude>it/tdlight/tdlib/ClientManager.java</exclude>
|
||||||
</excludes>
|
</excludes>
|
||||||
|
<release>8</release>
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
<executions>
|
||||||
<!-- disable default phase due to fixed id and position in lifecycle -->
|
<!-- disable default phase due to fixed id and position in lifecycle -->
|
||||||
@ -243,12 +256,11 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.codehaus.mojo</groupId>
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
<artifactId>flatten-maven-plugin</artifactId>
|
<artifactId>flatten-maven-plugin</artifactId>
|
||||||
<version>1.1.0</version>
|
<version>1.2.2</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<updatePomFile>true</updatePomFile>
|
|
||||||
<flattenMode>resolveCiFriendliesOnly</flattenMode>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
<executions>
|
||||||
|
<!-- enable flattening -->
|
||||||
<execution>
|
<execution>
|
||||||
<id>flatten</id>
|
<id>flatten</id>
|
||||||
<phase>process-resources</phase>
|
<phase>process-resources</phase>
|
||||||
@ -256,6 +268,7 @@
|
|||||||
<goal>flatten</goal>
|
<goal>flatten</goal>
|
||||||
</goals>
|
</goals>
|
||||||
</execution>
|
</execution>
|
||||||
|
<!-- ensure proper cleanup -->
|
||||||
<execution>
|
<execution>
|
||||||
<id>flatten.clean</id>
|
<id>flatten.clean</id>
|
||||||
<phase>clean</phase>
|
<phase>clean</phase>
|
||||||
@ -300,6 +313,18 @@
|
|||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.surefire</groupId>
|
||||||
|
<artifactId>surefire</artifactId>
|
||||||
|
<version>3.0.0-M5</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
<version>5.8.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
Loading…
Reference in New Issue
Block a user