diff --git a/.github/release-drafter-master.yml b/.github/release-drafter-main.yml similarity index 97% rename from .github/release-drafter-master.yml rename to .github/release-drafter-main.yml index 1be06ba3d..dc7fbe462 100644 --- a/.github/release-drafter-master.yml +++ b/.github/release-drafter-main.yml @@ -1,5 +1,5 @@ filter-by-commitish: true -commitish: master +commitish: main template: | ## What's Changed diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07a5c4b05..6cd788322 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,20 +13,23 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [ 17, 21 ] + java: + - 17 + - 21 steps: - name: Check out code - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v5.0.0 with: fetch-depth: 0 - name: Setup Java ${{ matrix.java }} - uses: actions/setup-java@v3.13.0 + uses: actions/setup-java@v5.0.0 with: distribution: temurin java-version: ${{ matrix.java }} + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5.0.0 + - name: Build - uses: gradle/gradle-build-action@v2.9.0 - with: - arguments: build + run: ./gradlew build diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 8167d5c78..2a17f20b2 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -11,11 +11,11 @@ permissions: jobs: update_release_draft: permissions: - contents: write # for release-drafter to create a GitHub release + contents: write # To create a GitHub Release runs-on: ubuntu-latest steps: - - uses: release-drafter/release-drafter@v5.25.0 + - uses: release-drafter/release-drafter@v6.1.0 with: - config-name: release-drafter-master.yml + config-name: release-drafter-main.yml env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index aee1dd39d..8b883a12d 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ build/ /.metadata/ /.packages /.dart_tool/ +out/ diff --git a/asterisk-java-ami/build.gradle b/asterisk-java-ami/build.gradle index 48ee6c2a6..c0313e797 100644 --- a/asterisk-java-ami/build.gradle +++ b/asterisk-java-ami/build.gradle @@ -17,22 +17,29 @@ repositories { dependencies { implementation project(':asterisk-java-core') - implementation 'org.apache.commons:commons-lang3:3.14.0' - - testImplementation 'org.assertj:assertj-core:3.24.2' - testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1' - testImplementation 'org.mockito:mockito-core:5.7.0' - testImplementation 'ch.qos.logback:logback-classic:1.4.11' //todo remove - - testImplementation platform('org.testcontainers:testcontainers-bom:1.19.3') - testImplementation 'org.testcontainers:junit-jupiter' - testImplementation 'org.testcontainers:testcontainers' + implementation libs.apache.commons.codec + implementation libs.apache.commons.lang3 + + testImplementation libs.assertj.core + testImplementation libs.jsonassert + testImplementation libs.junit.jupiter + testImplementation libs.mockito.core + testImplementation libs.slf4j.simple + + testImplementation platform(libs.testcontainers.bom) + testImplementation('org.testcontainers:testcontainers-junit-jupiter') { + exclude group: 'com.fasterxml.jackson.core', module: 'jackson-annotations' + } + testImplementation('org.testcontainers:testcontainers') { + exclude group: 'com.fasterxml.jackson.core', module: 'jackson-annotations' + } //todo only for testing framework - testImplementation 'io.netty:netty-codec:4.1.101.Final' - testImplementation 'io.netty:netty-handler:4.1.101.Final' - testImplementation 'io.netty:netty-transport:4.1.101.Final' - testImplementation 'org.awaitility:awaitility:4.2.0' + testImplementation libs.netty.codec + testImplementation libs.netty.handler + testImplementation libs.netty.transport + + testRuntimeOnly libs.junit.platform.launcher } tasks.named('test') { diff --git a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/annotation/ExpectedResponse.java b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/annotation/ExpectedResponse.java index c057ce62a..8766b02a2 100644 --- a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/annotation/ExpectedResponse.java +++ b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/annotation/ExpectedResponse.java @@ -15,8 +15,8 @@ */ package org.asteriskjava.ami.action.annotation; -import org.asteriskjava.ami.action.ManagerAction; -import org.asteriskjava.ami.action.response.ManagerActionResponse; +import org.asteriskjava.ami.action.api.ManagerAction; +import org.asteriskjava.ami.action.api.response.ManagerActionResponse; import java.lang.annotation.Retention; import java.lang.annotation.Target; diff --git a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/annotation/GeneratedEvents.java b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/annotation/GeneratedEvents.java new file mode 100644 index 000000000..9ba9162be --- /dev/null +++ b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/annotation/GeneratedEvents.java @@ -0,0 +1,40 @@ +/* + * Copyright 2004-2023 Asterisk Java contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.asteriskjava.ami.action.annotation; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * @author Piotr Olaszewski + * @since 4.0.0 + */ +@Target(TYPE) +@Retention(RUNTIME) +public @interface GeneratedEvents { + Event[] value(); + + @interface Event { + Class value(); + + String name(); + + boolean complete() default false; + } +} diff --git a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/AbstractManagerAction.java b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/AbstractManagerAction.java similarity index 97% rename from asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/AbstractManagerAction.java rename to asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/AbstractManagerAction.java index f9145e018..577015b02 100644 --- a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/AbstractManagerAction.java +++ b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/AbstractManagerAction.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.asteriskjava.ami.action; +package org.asteriskjava.ami.action.api; import org.apache.commons.lang3.builder.ToStringBuilder; import org.asteriskjava.core.databind.annotation.AsteriskName; @@ -32,9 +32,9 @@ public abstract class AbstractManagerAction implements ManagerAction { @Serial private static final long serialVersionUID = -7667827187378395689L; + @AsteriskName("ActionID") private String actionId; - @AsteriskName("ActionID") public String getActionId() { return actionId; } diff --git a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/AuthType.java b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/AuthType.java similarity index 92% rename from asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/AuthType.java rename to asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/AuthType.java index 2cf03147e..5184ca44a 100644 --- a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/AuthType.java +++ b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/AuthType.java @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.asteriskjava.ami.action; +package org.asteriskjava.ami.action.api; /** * Digest algorithms to use in the challenge. * * @author Piotr Olaszewski - * @see ChallengeAction * @since 4.0.0 */ public enum AuthType { diff --git a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/ChallengeAction.java b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/ChallengeAction.java similarity index 81% rename from asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/ChallengeAction.java rename to asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/ChallengeAction.java index 3c79b3e6f..53de091c1 100644 --- a/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/ChallengeAction.java +++ b/asterisk-java-ami/src/main/java/org/asteriskjava/ami/action/api/ChallengeAction.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.asteriskjava.ami.action; +package org.asteriskjava.ami.action.api; import org.asteriskjava.ami.action.annotation.ExpectedResponse; -import org.asteriskjava.ami.action.response.ChallengeManagerActionResponse; +import org.asteriskjava.ami.action.api.response.ChallengeActionResponse; import java.io.Serial; /** * The {@link ChallengeAction} requests a challenge from the server to use when logging in using challenge/response. - * Sending this action to the Asterisk server results in a {@link ChallengeManagerActionResponse} being received from the server. + * Sending this action to the Asterisk server results in a {@link ChallengeActionResponse} being received from the server. *

* Supported Asterisk versions: *