diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..2e41b51 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,15 @@ +name: Build + +on: [pull_request] + +jobs: + compile: + runs-on: ubuntu-latest + name: Build + steps: + - uses: actions/checkout@master + - name: Setup java + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - run: mvn clean install -Dcheckstyle.skip -q diff --git a/.github/workflows/checkstyle.yml b/.github/workflows/checkstyle.yml new file mode 100644 index 0000000..ef0ceaf --- /dev/null +++ b/.github/workflows/checkstyle.yml @@ -0,0 +1,15 @@ +name: Checkstyle + +on: [pull_request] + +jobs: + compile: + runs-on: ubuntu-latest + name: Checkstyle + steps: + - uses: actions/checkout@master + - name: Setup java + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - run: mvn checkstyle:check -q diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0084a3b --- /dev/null +++ b/.gitignore @@ -0,0 +1,208 @@ + +# Created by https://www.gitignore.io/api/java,maven,eclipse,netbeans,intellij+all +# Edit at https://www.gitignore.io/?templates=java,maven,eclipse,netbeans,intellij+all + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Annotation Processing +.apt_generated + +.sts4-cache/ + +### Intellij+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij+all Patch ### +# Ignores the whole .idea folder and all .iml files +# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 + +.idea/ + +# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 + +*.iml +modules.xml +.idea/misc.xml +*.ipr + +# Sonarlint plugin +.idea/sonarlint + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +### NetBeans ### +**/nbproject/private/ +**/nbproject/Makefile-*.mk +**/nbproject/Package-*.bash +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +# End of https://www.gitignore.io/api/java,maven,eclipse,netbeans,intellij+all diff --git a/README.md b/README.md new file mode 100644 index 0000000..ca8265a --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +![GitHub](https://img.shields.io/github/license/E-edu/java-common) +![GitHub top language](https://img.shields.io/github/languages/top/E-edu/java-common) + +![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/E-edu/java-common) + +![GitHub last commit (branch)](https://img.shields.io/github/last-commit/E-Edu/java-common/master?label=last%20commit%20%28master%29) +![GitHub last commit (branch)](https://img.shields.io/github/last-commit/E-Edu/java-common/experimental?label=last%20commit%20%28experimental%29) + +# Gewia Common + +This project contains the commonly shared code for all our +java based micro services (e.g. task and gateway). + +This repository also is our reference implementation for some things. + +## Scope +![Maven Central](https://img.shields.io/maven-central/v/com.gewia.common/scope) + +[Based on this meeting changelog](https://github.com/E-Edu/concept/blob/master/changelog/meeting/20200420-conceptmeeting.md#8-roles--permissions) + +We have a custom implementation of the widely known "scopes" used in OAuth2 for example. + +This implementation standardized scopes for +every Gewia related project - so this is the reference implementation. + +Some special features: +- Implementations with and without restrictions + - BasicScope (no restrictions) + - MicroServiceScope + - microService.topic.mode.scope.extra +- Merging (and de-merging) + - user.email.read+write+delete.all+beta +- Pre-defined scopes + - none (default) + - own + - self (only applicable to topics regarding a user itself) + - all + - beta +- Pre-defined modes + - read + - write + - delete + +## License + +This project is licensed under the MIT license. diff --git a/checkstyle.xml b/checkstyle.xml new file mode 100644 index 0000000..f927fb4 --- /dev/null +++ b/checkstyle.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..0d5b9b0 --- /dev/null +++ b/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.gewia.common + gewia-common + pom + 1.0 + + + scope + + + + 11 + ${java.version} + ${java.version} + UTF-8 + + + + + org.projectlombok + lombok + 1.18.12 + provided + + + + junit + junit + 4.13 + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${maven.compiler.target} + ${maven.compiler.source} + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M4 + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.1 + + checkstyle.xml + ${project.build.sourceEncoding} + true + true + false + + + + validate + validate + + check + + + + + + + \ No newline at end of file diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..92b410d --- /dev/null +++ b/renovate.json @@ -0,0 +1,14 @@ +{ + "schedule": [ + "after 7pm every weekday", + "before 8am every weekday" + ], + "baseBranches": [ + "experimental" + ], + "labels": [ + "renovate" + ], + "rangeStrategy": "pin", + "automerge": false +}