Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.idea
.classpath
.gradle

.project
.settings
bin
build

application.yml
47 changes: 30 additions & 17 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ buildscript {
}

dependencies {
classpath 'com.netflix.nebula:gradle-ospackage-plugin:1.12.2'
classpath 'com.netflix.nebula:gradle-ospackage-plugin:8.3.0'
}
}

plugins {
id "com.github.johnrengelman.shadow" version "5.0.0"
id "com.github.johnrengelman.shadow" version "5.2.0"
id "application"
id "java"
id "net.ltgt.apt-eclipse" version "0.21"
id "nebula.ospackage" version "4.8.0"
id "nebula.ospackage" version "8.3.0"
}

apply plugin: 'nebula.deb'
Expand All @@ -22,12 +22,10 @@ description "jbert control application"
version "0.3.0"
group "ch.jbert"

sourceCompatibility = "1.8"
targetCompatibility = "1.8"

repositories {
mavenCentral()
maven { url "https://jcenter.bintray.com" }
maven { url 'https://jitpack.io' }
}

configurations {
Expand All @@ -41,51 +39,66 @@ dependencies {
annotationProcessor "io.micronaut:micronaut-graal"
annotationProcessor "io.micronaut:micronaut-inject-java"
annotationProcessor "io.micronaut:micronaut-validation"
annotationProcessor "io.micronaut.configuration:micronaut-openapi"
compileOnly "org.graalvm.nativeimage:svm"
implementation platform("io.micronaut:micronaut-bom:$micronautVersion")
implementation "io.micronaut:micronaut-http-client"
implementation "io.micronaut:micronaut-inject"
implementation "io.micronaut:micronaut-validation"
implementation "io.micronaut:micronaut-runtime"
implementation "io.micronaut:micronaut-http-server-netty"
implementation "io.micronaut:micronaut-http-client"
implementation "io.micronaut:micronaut-management"
implementation "io.swagger.core.v3:swagger-annotations"
implementation "com.github.goxr3plus:jaudiotagger:2.2.7"
implementation 'com.google.guava:guava:28.2-jre'
runtimeOnly "ch.qos.logback:logback-classic:1.2.3"
testAnnotationProcessor platform("io.micronaut:micronaut-bom:$micronautVersion")
testAnnotationProcessor "io.micronaut:micronaut-inject-java"
testImplementation platform("io.micronaut:micronaut-bom:$micronautVersion")
testImplementation "org.junit.jupiter:junit-jupiter-api"
testImplementation "io.micronaut.test:micronaut-test-junit5"
testImplementation "org.mockito:mockito-junit-jupiter:3.3.3"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine"

// Sub-Project dependencies
compile project(':core')
implementation project(':core')
}

test.classpath += configurations.developmentOnly

mainClassName = "ch.jbert.Application"

// use JUnit 5 platform
test {
useJUnitPlatform()
}

shadowJar {
mergeServiceFiles()
java {
sourceCompatibility = JavaVersion.toVersion('1.8')
targetCompatibility = JavaVersion.toVersion('1.8')
}

run.classpath += configurations.developmentOnly
run.jvmArgs("-noverify",
"-XX:TieredStopAtLevel=1",
"-Dcom.sun.management.jmxremote",
"-Dcom.sun.management.jmxremote.port=7777",
"-Dcom.sun.management.jmxremote.local.only=false",
"-Dcom.sun.management.jmxremote.authenticate=false",
"-Dcom.sun.management.jmxremote.ssl=false")
run.jvmArgs(
"-noverify",
"-XX:TieredStopAtLevel=1",
"-Dcom.sun.management.jmxremote",
"-Dcom.sun.management.jmxremote.port=7777",
"-Dcom.sun.management.jmxremote.local.only=false",
"-Dcom.sun.management.jmxremote.authenticate=false",
"-Dcom.sun.management.jmxremote.ssl=false")

tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
options.compilerArgs.add("-parameters")
options.compilerArgs.add("-deprecation")
options.compilerArgs.add("-Werror")
options.fork = true
options.forkOptions.jvmArgs << '-Dmicronaut.openapi.views.spec=rapidoc.enabled=true,redoc.enabled=true,swagger-ui.enabled=true,swagger-ui.theme=flattop'
}

shadowJar {
mergeServiceFiles()
}

task jbertDebPackage(type: Deb) {
Expand Down
10 changes: 4 additions & 6 deletions core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,19 @@ plugins {
id "java"
}

sourceCompatibility = "1.8"
targetCompatibility = "1.8"
sourceCompatibility = JavaVersion.toVersion('1.8')
targetCompatibility = JavaVersion.toVersion('1.8')

repositories {
mavenCentral()
maven { url "https://jcenter.bintray.com" }

}

dependencies {
// https://mvnrepository.com/artifact/com.pi4j/pi4j-core
compile group: "com.pi4j", name: "pi4j-core", version: "1.2"
implementation group: "com.pi4j", name: "pi4j-core", version: "1.2"
// https://mvnrepository.com/artifact/org.hihn/javampd
compile group: "org.hihn", name: "javampd", version: "6.1.13"
implementation group: "org.hihn", name: "javampd", version: "6.1.13"
}

// use JUnit 5 platform
Expand All @@ -29,4 +28,3 @@ tasks.withType(JavaCompile) {
options.compilerArgs.add('-deprecation')
options.compilerArgs.add('-Werror')
}

20 changes: 12 additions & 8 deletions core/src/main/java/ch/jbert/mpd/MpdServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,19 @@ public void ensureConnection() {

@Override
public void configure() {
if (PLAYER_REPEAT) {
logger.info("Enable repeat playing");
mpd.getPlayer().setRepeat(true);
try {
if (PLAYER_REPEAT) {
logger.info("Enable repeat playing");
mpd.getPlayer().setRepeat(true);
}
if (X_FADE) {
mpd.getPlayer().setXFade((int) X_FADE_DURATION.getSeconds());
}

mpd.getPlayer().setVolume(DEFAULT_VOLUME_IN_PERCENT);
} catch (Exception e) {
logger.warn("Failed configuring mpd", e);
}
if (X_FADE) {
mpd.getPlayer().setXFade((int) X_FADE_DURATION.getSeconds());
}

mpd.getPlayer().setVolume(DEFAULT_VOLUME_IN_PERCENT);
}

@Override
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
micronautVersion=1.2.9
micronautVersion=1.3.6
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
18 changes: 17 additions & 1 deletion gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 17 additions & 1 deletion gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions openapi.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
micronaut.openapi.expand.api.version=0.1.0
micronaut.openapi.expand.api.title=jBert REST API
micronaut.openapi.expand.api.description=jBert control application REST interface specification
micronaut.openapi.expand.api.license.name=MIT
micronaut.openapi.expand.api.tags.system.name=System
micronaut.openapi.expand.api.tags.system.description=System Endpoints
micronaut.openapi.expand.api.tags.playlists.name=Playlists
micronaut.openapi.expand.api.tags.playlists.description=Playlist Endpoints
micronaut.openapi.expand.api.tags.tracks.name=Tracks
micronaut.openapi.expand.api.tags.tracks.description=Track Endpoints
3 changes: 3 additions & 0 deletions runlocal.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env bash

MICRONAUT_ENVIRONMENTS=local gradle run
16 changes: 16 additions & 0 deletions src/main/java/ch/jbert/Application.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
package ch.jbert;

import io.micronaut.runtime.Micronaut;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.info.License;
import io.swagger.v3.oas.annotations.tags.Tag;

@OpenAPIDefinition(
info = @Info(
title = "${api.title}",
version = "${api.version}",
description = "${api.description}",
license = @License(name = "${api.license.name}")
),
tags = {
@Tag(name = "${api.tags.playlists.name}", description = "${api.tags.playlists.description}"),
@Tag(name = "${api.tags.tracks.name}", description = "${api.tags.tracks.description}")
}
)
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package ch.jbert.controllers.api;

import javax.inject.Singleton;

import ch.jbert.models.Error;
import io.micronaut.context.annotation.Requires;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.HttpStatus;
import io.micronaut.http.annotation.Produces;
import io.micronaut.http.server.exceptions.ExceptionHandler;

@Produces
@Singleton
@Requires(classes = { Exception.class, ExceptionHandler.class })
public class GenericExceptionHandler implements ExceptionHandler<Exception, HttpResponse> {

@Override
public HttpResponse handle(HttpRequest request, Exception exception) {
return HttpResponse.serverError(new Error(HttpStatus.INTERNAL_SERVER_ERROR.getCode(), exception.getMessage()));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package ch.jbert.controllers.api;

import javax.inject.Singleton;

import ch.jbert.models.Error;
import io.micronaut.context.annotation.Requires;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.HttpStatus;
import io.micronaut.http.annotation.Produces;
import io.micronaut.http.server.exceptions.ExceptionHandler;

@Produces
@Singleton
@Requires(classes = { IllegalArgumentException.class, ExceptionHandler.class })
public class IllegalArgumentExceptionHandler implements ExceptionHandler<IllegalArgumentException, HttpResponse> {

@Override
public HttpResponse handle(HttpRequest request, IllegalArgumentException exception) {
return HttpResponse.badRequest(new Error(HttpStatus.BAD_REQUEST.getCode(), exception.getMessage()));
}

}
Loading