From cc235da44b3ebba675250bcc7e122653b9821052 Mon Sep 17 00:00:00 2001 From: Lemonochrme Date: Tue, 10 Dec 2024 16:46:50 +0100 Subject: [PATCH 1/9] Clean boilerplate for independant REST and SOAP services --- helpapp/.gitattributes | 2 - helpapp/.gitignore | 33 --- helpapp/.mvn/wrapper/maven-wrapper.properties | 19 -- helpapp/README.md | 24 ++ helpapp/mvnw | 259 ------------------ helpapp/mvnw.cmd | 149 ---------- helpapp/pom.xml | 83 ++---- helpapp/rest-service/pom.xml | 40 +++ .../helpapp/rest/RestApplication.java | 20 ++ .../src/main/resources/application.properties | 1 + .../target/classes/application.properties | 1 + .../helpapp/rest/RestApplication.class | Bin 0 -> 996 bytes .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 1 + .../compile/default-compile/inputFiles.lst | 1 + .../target/rest-service-1.0-SNAPSHOT.jar | Bin 0 -> 3033 bytes helpapp/soap-service/pom.xml | 40 +++ .../helpapp/soap/SoapApplication.java | 12 + .../src/main/resources/application.properties | 1 + .../target/classes/application.properties | 1 + .../helpapp/soap/SoapApplication.class | Bin 0 -> 729 bytes .../target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 1 + .../compile/default-compile/inputFiles.lst | 1 + .../target/soap-service-1.0-SNAPSHOT.jar | Bin 0 -> 2826 bytes .../helpapp/CustomErrorController.java | 17 -- .../helpapp/HelpappApplication.java | 13 - .../src/main/resources/application.properties | 2 - .../helpapp/HelpappApplicationTests.java | 13 - 29 files changed, 175 insertions(+), 569 deletions(-) delete mode 100644 helpapp/.gitattributes delete mode 100644 helpapp/.gitignore delete mode 100644 helpapp/.mvn/wrapper/maven-wrapper.properties create mode 100644 helpapp/README.md delete mode 100755 helpapp/mvnw delete mode 100644 helpapp/mvnw.cmd create mode 100644 helpapp/rest-service/pom.xml create mode 100644 helpapp/rest-service/src/main/java/insa/application/helpapp/rest/RestApplication.java create mode 100644 helpapp/rest-service/src/main/resources/application.properties create mode 100644 helpapp/rest-service/target/classes/application.properties create mode 100644 helpapp/rest-service/target/classes/insa/application/helpapp/rest/RestApplication.class create mode 100644 helpapp/rest-service/target/maven-archiver/pom.properties create mode 100644 helpapp/rest-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 helpapp/rest-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 helpapp/rest-service/target/rest-service-1.0-SNAPSHOT.jar create mode 100644 helpapp/soap-service/pom.xml create mode 100644 helpapp/soap-service/src/main/java/insa/application/helpapp/soap/SoapApplication.java create mode 100644 helpapp/soap-service/src/main/resources/application.properties create mode 100644 helpapp/soap-service/target/classes/application.properties create mode 100644 helpapp/soap-service/target/classes/insa/application/helpapp/soap/SoapApplication.class create mode 100644 helpapp/soap-service/target/maven-archiver/pom.properties create mode 100644 helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 helpapp/soap-service/target/soap-service-1.0-SNAPSHOT.jar delete mode 100644 helpapp/src/main/java/insa/application/helpapp/CustomErrorController.java delete mode 100644 helpapp/src/main/java/insa/application/helpapp/HelpappApplication.java delete mode 100644 helpapp/src/main/resources/application.properties delete mode 100644 helpapp/src/test/java/insa/application/helpapp/HelpappApplicationTests.java diff --git a/helpapp/.gitattributes b/helpapp/.gitattributes deleted file mode 100644 index 3b41682..0000000 --- a/helpapp/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -/mvnw text eol=lf -*.cmd text eol=crlf diff --git a/helpapp/.gitignore b/helpapp/.gitignore deleted file mode 100644 index 549e00a..0000000 --- a/helpapp/.gitignore +++ /dev/null @@ -1,33 +0,0 @@ -HELP.md -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/**/target/ -!**/src/test/**/target/ - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ -!**/src/main/**/build/ -!**/src/test/**/build/ - -### VS Code ### -.vscode/ diff --git a/helpapp/.mvn/wrapper/maven-wrapper.properties b/helpapp/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index d58dfb7..0000000 --- a/helpapp/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you 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. -wrapperVersion=3.3.2 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/helpapp/README.md b/helpapp/README.md new file mode 100644 index 0000000..57185fb --- /dev/null +++ b/helpapp/README.md @@ -0,0 +1,24 @@ +# Mini-Projet Architecture de Services + +## Objectif : + +Créer une application axée microservices en utilisant SOAP et REST + +## Installation + +``` +mvn compile +``` + +Une fois le projet compilé, lancer les différents services SOAP et REST via `Spring Boot` : + +``` +mvn spring-boot:run -pl rest-service +``` + + +``` +mvn spring-boot:run -pl soap-service +``` + +Vérifier le bon fonctionnement en accédant à `localhost:8080/hello` pour REST et `localhost:8081/ws` pour SOAP. diff --git a/helpapp/mvnw b/helpapp/mvnw deleted file mode 100755 index 19529dd..0000000 --- a/helpapp/mvnw +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you 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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 -# -# Optional ENV vars -# ----------------- -# JAVA_HOME - location of a JDK home dir, required when download maven via java source -# MVNW_REPOURL - repo url base for downloading maven distribution -# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output -# ---------------------------------------------------------------------------- - -set -euf -[ "${MVNW_VERBOSE-}" != debug ] || set -x - -# OS specific support. -native_path() { printf %s\\n "$1"; } -case "$(uname)" in -CYGWIN* | MINGW*) - [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" - native_path() { cygpath --path --windows "$1"; } - ;; -esac - -# set JAVACMD and JAVACCMD -set_java_home() { - # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched - if [ -n "${JAVA_HOME-}" ]; then - if [ -x "$JAVA_HOME/jre/sh/java" ]; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - JAVACCMD="$JAVA_HOME/jre/sh/javac" - else - JAVACMD="$JAVA_HOME/bin/java" - JAVACCMD="$JAVA_HOME/bin/javac" - - if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then - echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 - echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 - return 1 - fi - fi - else - JAVACMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v java - )" || : - JAVACCMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v javac - )" || : - - if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then - echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 - return 1 - fi - fi -} - -# hash string like Java String::hashCode -hash_string() { - str="${1:-}" h=0 - while [ -n "$str" ]; do - char="${str%"${str#?}"}" - h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) - str="${str#?}" - done - printf %x\\n $h -} - -verbose() { :; } -[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } - -die() { - printf %s\\n "$1" >&2 - exit 1 -} - -trim() { - # MWRAPPER-139: - # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. - # Needed for removing poorly interpreted newline sequences when running in more - # exotic environments such as mingw bash on Windows. - printf "%s" "${1}" | tr -d '[:space:]' -} - -# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties -while IFS="=" read -r key value; do - case "${key-}" in - distributionUrl) distributionUrl=$(trim "${value-}") ;; - distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; - esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" - -case "${distributionUrl##*/}" in -maven-mvnd-*bin.*) - MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ - case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in - *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; - :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; - :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; - :Linux*x86_64*) distributionPlatform=linux-amd64 ;; - *) - echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 - distributionPlatform=linux-amd64 - ;; - esac - distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" - ;; -maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; -esac - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" -distributionUrlName="${distributionUrl##*/}" -distributionUrlNameMain="${distributionUrlName%.*}" -distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" -MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - -exec_maven() { - unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : - exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" -} - -if [ -d "$MAVEN_HOME" ]; then - verbose "found existing MAVEN_HOME at $MAVEN_HOME" - exec_maven "$@" -fi - -case "${distributionUrl-}" in -*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; -*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; -esac - -# prepare tmp dir -if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then - clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } - trap clean HUP INT TERM EXIT -else - die "cannot create temp dir" -fi - -mkdir -p -- "${MAVEN_HOME%/*}" - -# Download and Install Apache Maven -verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -verbose "Downloading from: $distributionUrl" -verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -# select .zip or .tar.gz -if ! command -v unzip >/dev/null; then - distributionUrl="${distributionUrl%.zip}.tar.gz" - distributionUrlName="${distributionUrl##*/}" -fi - -# verbose opt -__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' -[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v - -# normalize http auth -case "${MVNW_PASSWORD:+has-password}" in -'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; -has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; -esac - -if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then - verbose "Found wget ... using wget" - wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" -elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then - verbose "Found curl ... using curl" - curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" -elif set_java_home; then - verbose "Falling back to use Java to download" - javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" - targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" - cat >"$javaSource" <<-END - public class Downloader extends java.net.Authenticator - { - protected java.net.PasswordAuthentication getPasswordAuthentication() - { - return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); - } - public static void main( String[] args ) throws Exception - { - setDefault( new Downloader() ); - java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); - } - } - END - # For Cygwin/MinGW, switch paths to Windows format before running javac and java - verbose " - Compiling Downloader.java ..." - "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" - verbose " - Running Downloader.java ..." - "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" -fi - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -if [ -n "${distributionSha256Sum-}" ]; then - distributionSha256Result=false - if [ "$MVN_CMD" = mvnd.sh ]; then - echo "Checksum validation is not supported for maven-mvnd." >&2 - echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - elif command -v shasum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 - echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - fi - if [ $distributionSha256Result = false ]; then - echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 - echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 - exit 1 - fi -fi - -# unzip and move -if command -v unzip >/dev/null; then - unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" -else - tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" -fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" - -clean || : -exec_maven "$@" diff --git a/helpapp/mvnw.cmd b/helpapp/mvnw.cmd deleted file mode 100644 index 249bdf3..0000000 --- a/helpapp/mvnw.cmd +++ /dev/null @@ -1,149 +0,0 @@ -<# : batch portion -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 -@REM -@REM Optional ENV vars -@REM MVNW_REPOURL - repo url base for downloading maven distribution -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output -@REM ---------------------------------------------------------------------------- - -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) -@SET __MVNW_CMD__= -@SET __MVNW_ERROR__= -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% -@SET PSModulePath= -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) -) -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% -@SET __MVNW_PSMODULEP_SAVE= -@SET __MVNW_ARG0_NAME__= -@SET MVNW_USERNAME= -@SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) -@echo Cannot start maven from wrapper >&2 && exit /b 1 -@GOTO :EOF -: end batch / begin powershell #> - -$ErrorActionPreference = "Stop" -if ($env:MVNW_VERBOSE -eq "true") { - $VerbosePreference = "Continue" -} - -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl -if (!$distributionUrl) { - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" -} - -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { - "maven-mvnd-*" { - $USE_MVND = $true - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" - $MVN_CMD = "mvnd.cmd" - break - } - default { - $USE_MVND = $false - $MVN_CMD = $script -replace '^mvnw','mvn' - break - } -} - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" -} -$distributionUrlName = $distributionUrl -replace '^.*/','' -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" -if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" -} -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" - -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" - exit $? -} - -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" -} - -# prepare tmp dir -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null -trap { - if ($TMP_DOWNLOAD_DIR.Exists) { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } - } -} - -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null - -# Download and Install Apache Maven -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -Write-Verbose "Downloading from: $distributionUrl" -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -$webclient = New-Object System.Net.WebClient -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) -} -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum -if ($distributionSha256Sum) { - if ($USE_MVND) { - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." - } - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." - } -} - -# unzip and move -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null -try { - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null -} catch { - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { - Write-Error "fail to move MAVEN_HOME" - } -} finally { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } -} - -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/helpapp/pom.xml b/helpapp/pom.xml index d16cec9..6ef8936 100644 --- a/helpapp/pom.xml +++ b/helpapp/pom.xml @@ -1,66 +1,25 @@ - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.4.0 - - - insa.application - helpapp - 0.0.1-SNAPSHOT - helpapp - Exercice Application that ease voluntary help to others - - - - - - - - - - - - - - - 21 - - - - org.springframework.boot - spring-boot-starter - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + insa.application.helpapp + helpapp + 1.0-SNAPSHOT + pom - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - test - - - - org.apache.cxf - cxf-spring-boot-starter-jaxws - 3.5.0 - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + rest-service + soap-service + + + + + org.springframework.boot + spring-boot-dependencies + 3.1.4 + pom + import + + + diff --git a/helpapp/rest-service/pom.xml b/helpapp/rest-service/pom.xml new file mode 100644 index 0000000..c85e368 --- /dev/null +++ b/helpapp/rest-service/pom.xml @@ -0,0 +1,40 @@ + + + insa.application.helpapp + helpapp + 1.0-SNAPSHOT + + 4.0.0 + rest-service + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 3.1.4 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 21 + 21 + + + + + + diff --git a/helpapp/rest-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/rest-service/src/main/java/insa/application/helpapp/rest/RestApplication.java new file mode 100644 index 0000000..2e82618 --- /dev/null +++ b/helpapp/rest-service/src/main/java/insa/application/helpapp/rest/RestApplication.java @@ -0,0 +1,20 @@ +package insa.application.helpapp.rest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class RestApplication { + + public static void main(String[] args) { + SpringApplication.run(RestApplication.class, args); + } + + @GetMapping("/hello") + public String hello() { + return "Hello from REST!"; + } +} diff --git a/helpapp/rest-service/src/main/resources/application.properties b/helpapp/rest-service/src/main/resources/application.properties new file mode 100644 index 0000000..4c00e40 --- /dev/null +++ b/helpapp/rest-service/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8080 diff --git a/helpapp/rest-service/target/classes/application.properties b/helpapp/rest-service/target/classes/application.properties new file mode 100644 index 0000000..4c00e40 --- /dev/null +++ b/helpapp/rest-service/target/classes/application.properties @@ -0,0 +1 @@ +server.port=8080 diff --git a/helpapp/rest-service/target/classes/insa/application/helpapp/rest/RestApplication.class b/helpapp/rest-service/target/classes/insa/application/helpapp/rest/RestApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..fdfbad45dfbc148a35b760d95d94ab8fda6e0e3d GIT binary patch literal 996 zcmb7D%We}f6g_U94IwRQD3oUcERsmY8-$R8DwT-GB7l@s>7px7>ZC4?9eF%0p9L!r z3qF94LR^Q4j9@m5H1^!rIrcqwe*FCQ9l#+TRj`3v3Hd4tC^BrHiwnWEFf;x>I+qjA zP<*b8@&^pLc4u5dnPFdS7%xvn!TwYrDfk)PQK3Y0cl|<tpq`h~wT#$}{o-tk)T2Ay2IF@}uW{ zYo=*QlLeWKc+gbM-Q(U+i0qWZ5bNv&c9t@*c&Fs ztGOJjScS_QWBpP!0(_F$vr8HANSRYE{^au4(!V8zL!*iDLg<8=Pz=Hc>dMF_ZX#c) z(3-|y1MoPA$8eCzwNzdt-jYyDf#hlqUeHLSgd)~wnE+Xb4F?FyI;*vGJ+x4wF%M4; zbb1tNy+#(NozY(CegXST9~-FC8p5Ed-J!MmI{^(`Cu46)FcS|+=~7V<~t1dKY=Ub+yi&Ilno`;EM5sr$stm=T7K&>pF3;KUoqsMNIpE zO2y7O-9f_MLBS<+wbqKra0^W~4ic>qJ{|N~r01*7mot?+=Xem$G3Ip|kTqg#^NRHDhD9SHLEh@=OE!Ota z)$-Q8qUw?A!u!1Cw- z{{wf$W4A>)ugWE;o?r8PcK$xe+xGRf{}~?$^xLjk7~r_EP3RQQ?es@69|By0{~ffS z+?cAdKVae}cAnO<^ccsfiSe!*A0%z$2vt~fNpSwj0>|pSl$@Uv&O8+Q^59_<>sBeV z4JR*LO*{3tHSl6d(vg_BjL#E)M@8FtHEa7!GU1HeZyT}gD!;4DcfT+t<<}K^&nc`g zTA-|LA9?TkMHgRTe4)!Y^uy*BAYi&b)t-VdkTq9Ky4< zpE1tNUm`4g;`*t%PLEI3_{RkEuasL0#$mQ&_CEDbs9 z_t`*T&u5W;J8tJSGCM64;!v?*5OuwOw{-hT#f`eRH9vURuRv-`uNN=AYqWw_4)L zQk1S$Z7Z$$mbL7blc(U6i#d#~M@x@MAKT@=W5F{gHWvFx-5lSTrq34HCMnETJ8h-? z*S(W7y0^enFyH%>mvQr>df$#y#`g|>`^6>m!@+jP(n%MlPF!KUVL|$WrA+rHed`Y@ z`uK0#Do)+Th+s>lyT7F^f--~nRlZN3%Y|hr zDqKp>HC8-!$_^0!(=8moQ*g5H<-Xf*Z*bgIl-{&B?$)(?xx)J|PZZ%>{9J3j4BHZh zn5ki+N(^Cj&wc*RT$aCW-;{i-$#*=243zA*Je|Q?enY79tmWhUgw1l6a=a4_tPVJS zeO)G(X3;KC`Sta)xWJ)(HQ!y4SHhUg_9Bcyi_dS9*VvemGSE6F>tHJ5!Pn z5Ct>u32&}L1_BHhYW)l^lsXG->2?xdv`FudLvf?w+^hvl5+||k*&Dgz-;q@N^=MhVEF%EjRh&LVP!kahnSi{r8`1%Fs5caWj$_FL8U#y z)R`ohidOc+tl(h4R{Fy%+0yuiTq~e;0U~^{7cU5#zOrG2FU}xB@eIf&L}3%)%?dP# Qfq@qYzW^J0=h;C#0Ct!4N&o-= literal 0 HcmV?d00001 diff --git a/helpapp/soap-service/pom.xml b/helpapp/soap-service/pom.xml new file mode 100644 index 0000000..da398d8 --- /dev/null +++ b/helpapp/soap-service/pom.xml @@ -0,0 +1,40 @@ + + + insa.application.helpapp + helpapp + 1.0-SNAPSHOT + + 4.0.0 + soap-service + + + + + org.springframework.boot + spring-boot-starter-web-services + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 3.1.4 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 21 + 21 + + + + + + diff --git a/helpapp/soap-service/src/main/java/insa/application/helpapp/soap/SoapApplication.java b/helpapp/soap-service/src/main/java/insa/application/helpapp/soap/SoapApplication.java new file mode 100644 index 0000000..3abc8e9 --- /dev/null +++ b/helpapp/soap-service/src/main/java/insa/application/helpapp/soap/SoapApplication.java @@ -0,0 +1,12 @@ +package insa.application.helpapp.soap; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SoapApplication { + + public static void main(String[] args) { + SpringApplication.run(SoapApplication.class, args); + } +} diff --git a/helpapp/soap-service/src/main/resources/application.properties b/helpapp/soap-service/src/main/resources/application.properties new file mode 100644 index 0000000..4d360de --- /dev/null +++ b/helpapp/soap-service/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8081 diff --git a/helpapp/soap-service/target/classes/application.properties b/helpapp/soap-service/target/classes/application.properties new file mode 100644 index 0000000..4d360de --- /dev/null +++ b/helpapp/soap-service/target/classes/application.properties @@ -0,0 +1 @@ +server.port=8081 diff --git a/helpapp/soap-service/target/classes/insa/application/helpapp/soap/SoapApplication.class b/helpapp/soap-service/target/classes/insa/application/helpapp/soap/SoapApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..e398bf1db77462971bae9f9dc32e52c8209b7a73 GIT binary patch literal 729 zcmb7CxlRKy5Pc4T4Iy0NJ{r0Z3Ea^HAweXn2qc0+LFHY{V%XR#uNU|&Di8%9z(*m* z3sP1n4K8Lh*Bj59`TTnS0C0@$Ix3h5P;FomQw$6D;!*HK=$M~}_cC$}Q-?|`cf>H! z+8qR_G3+Uw2`>zO`Z~ zpNxIrp)rp43umd4TH0JQgstA_TirxtS?9Xs={pbB+3k%(j*NEl+3~K?w<^x92oqUq zL2e)JFjTwdMl#Izl$K}tFqHPv=Q1>VCKAa&Smo_sXVu-QjDb`3KdA6+hC~t1dKY=Ub+yi&Ilno`;EM5sr$stm=T7K&>pF3;KUoqsMNIpE zO2y7O-9f_MLBS<+wbqKra0^W~4ic>qJ{|N~r01*7mot?+=Xe!NUS#j2MG-_(VnqhMPC(p`rmdC zsO47VQ_~f&FFUJCPDsT+NPlv1yQ@ZBMZvbe%l!^7k^Ho!#^EgWcc1pE({dy-!+`VCuBI-?T(>Ti#LrgWL;?|EcbsIy3o2T|m^% z;~Kk7L3KXiHNRS-C>^;Ao++h^&>DNjD1>X_uusVA1wBOxvLt9H+!?6!#;E!TUk zE~(2s8uQQOTi^0y7IwS`!&J9!F-^4c5li;v3JiU`IxOW?&D|dsk;~>tzJ0RyvGC&c zp>fd@#Wr0{`sC9uX(jwQ)+k5K>-71rHdDXNKA$R~q9%OQC*tW}wHt-ztCAj^te<;m z`%G?E?YI2Xa}AW^Zp>*ZpLT)gr(G~;Lfwt~qve$yt#O8;f5=J+C(XwIUX zBm8Z?u)zVoo274()@#~vCpqK`^wuT+Eee!xPczia*%?4(tg+k^Q2h?~A&j+pNUg9}r ziR_gT+5+Q2_0Y!9RFj;BfNM|MnFH*Niw zzB4Clrui@XVR%~h#RWD&jkzn|dQbFzYZ(@$%F2H!V-s_#VcM2tnd}|hMW><1^!wSL@p?t%@U*|uaM2am?Eg^UQ)2B*cEHwbJGbOQwD9LzFcyk?A5Ma2lce%s~t3{Xi zSvG0pdhC9|{)ly1+9fVW*WL@auRpCm>(Qr_HtXTvW^1vcH5a81w(@u|e!8G}^=*HF zoQcN5GM?mZ+_P$C|9)b)r88+`+YR+!x>vU7DIOOH%QlF9|6}^KfU{gjL+*O(-FjJA z<$Ha3T77^wBa;X-?ivv2Js=QZc147AdNnT5UDgPFFau@h((l4p=AL4>!k*LestE)aAN)*29D0cK2rid+Z~VEF%k z6R`M#$2F_~hWQXvGpGngXuglB8Bc+X+f-1Ij4)M|1;a@=O+_o9VOC%-qG6V7X{;dE s3TT0i2wzA9q8Bd+o7C9I^bE)*L}3%)%?dP#fq@qYzW_s>fgQvH06b}si2wiq literal 0 HcmV?d00001 diff --git a/helpapp/src/main/java/insa/application/helpapp/CustomErrorController.java b/helpapp/src/main/java/insa/application/helpapp/CustomErrorController.java deleted file mode 100644 index 32f0f72..0000000 --- a/helpapp/src/main/java/insa/application/helpapp/CustomErrorController.java +++ /dev/null @@ -1,17 +0,0 @@ -package insa.application.helpapp; - -import org.springframework.boot.web.servlet.error.ErrorController; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -@Controller -public class CustomErrorController implements ErrorController { - - @RequestMapping("/error") - @ResponseBody - public String handleError() { - // Return the inline HTML content for the custom error page - return "Error

Something went wrong!

We are sorry, but the page you are looking for does not exist.

Error Image"; - } -} \ No newline at end of file diff --git a/helpapp/src/main/java/insa/application/helpapp/HelpappApplication.java b/helpapp/src/main/java/insa/application/helpapp/HelpappApplication.java deleted file mode 100644 index ee1a710..0000000 --- a/helpapp/src/main/java/insa/application/helpapp/HelpappApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package insa.application.helpapp; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class HelpappApplication { - - public static void main(String[] args) { - SpringApplication.run(HelpappApplication.class, args); - } - -} diff --git a/helpapp/src/main/resources/application.properties b/helpapp/src/main/resources/application.properties deleted file mode 100644 index 42482f7..0000000 --- a/helpapp/src/main/resources/application.properties +++ /dev/null @@ -1,2 +0,0 @@ -spring.application.name=helpapp -server.port=8080 \ No newline at end of file diff --git a/helpapp/src/test/java/insa/application/helpapp/HelpappApplicationTests.java b/helpapp/src/test/java/insa/application/helpapp/HelpappApplicationTests.java deleted file mode 100644 index 34f598c..0000000 --- a/helpapp/src/test/java/insa/application/helpapp/HelpappApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package insa.application.helpapp; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class HelpappApplicationTests { - - @Test - void contextLoads() { - } - -} From d4b0c2979c6d286b3eecc05a567db86bb04f5b7a Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Tue, 10 Dec 2024 17:33:48 +0100 Subject: [PATCH 2/9] Added working SOAP API --- .gitignore | 1 + .../target/maven-archiver/pom.properties | 2 - .../compile/default-compile/inputFiles.lst | 2 +- .../target/rest-service-1.0-SNAPSHOT.jar | Bin 3033 -> 2963 bytes helpapp/soap-service/pom.xml | 105 ++++++++++++------ helpapp/soap-service/src/main/java/.gitignore | 1 + .../producingwebservice/CountryEndpoint.java | 31 ++++++ .../CountryRepository.java | 47 ++++++++ .../ProducingWebServiceApplication.java | 12 ++ .../producingwebservice/WebServiceConfig.java | 40 +++++++ .../helpapp/soap/SoapApplication.java | 12 -- .../src/main/resources/application.properties | 1 - .../src/main/resources/countries.xsd | 36 ++++++ ...WebServiceApplicationIntegrationTests.java | 56 ++++++++++ .../target/classes/application.properties | 1 - .../helpapp/soap/SoapApplication.class | Bin 729 -> 0 bytes .../target/maven-archiver/pom.properties | 8 +- .../compile/default-compile/createdFiles.lst | 11 +- .../compile/default-compile/inputFiles.lst | 11 +- .../target/soap-service-1.0-SNAPSHOT.jar | Bin 2826 -> 0 bytes 20 files changed, 317 insertions(+), 60 deletions(-) create mode 100644 .gitignore create mode 100644 helpapp/soap-service/src/main/java/.gitignore create mode 100644 helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java create mode 100644 helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java create mode 100644 helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java create mode 100644 helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java delete mode 100644 helpapp/soap-service/src/main/java/insa/application/helpapp/soap/SoapApplication.java create mode 100644 helpapp/soap-service/src/main/resources/countries.xsd create mode 100644 helpapp/soap-service/src/test/java/com/example/producingwebservice/ProducingWebServiceApplicationIntegrationTests.java delete mode 100644 helpapp/soap-service/target/classes/insa/application/helpapp/soap/SoapApplication.class delete mode 100644 helpapp/soap-service/target/soap-service-1.0-SNAPSHOT.jar diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f97022 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ \ No newline at end of file diff --git a/helpapp/rest-service/target/maven-archiver/pom.properties b/helpapp/rest-service/target/maven-archiver/pom.properties index d5ea815..2138542 100644 --- a/helpapp/rest-service/target/maven-archiver/pom.properties +++ b/helpapp/rest-service/target/maven-archiver/pom.properties @@ -1,5 +1,3 @@ -#Generated by Maven -#Tue Dec 10 16:22:56 CET 2024 artifactId=rest-service groupId=insa.application.helpapp version=1.0-SNAPSHOT diff --git a/helpapp/rest-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/helpapp/rest-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 3ec4258..ea7a2ce 100644 --- a/helpapp/rest-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/helpapp/rest-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1 +1 @@ -/home/robin/Desktop/helpapp/rest-service/src/main/java/insa/application/helpapp/rest/RestApplication.java +/home/yoboujon/Documents/GEI/service-architecture/helpapp/rest-service/src/main/java/insa/application/helpapp/rest/RestApplication.java diff --git a/helpapp/rest-service/target/rest-service-1.0-SNAPSHOT.jar b/helpapp/rest-service/target/rest-service-1.0-SNAPSHOT.jar index a1b0940870ec94b067e4a8d093a922cda524494f..c76de09709624d435612047c8ffac10fef6a5092 100644 GIT binary patch delta 766 zcmca9K3SY6z?+$ci-CcIf#GuZL>_rz5g?lb$nJ`~74@hih=GA2aH5^Do1T}ij;HU% z(p6i6KKSZ*pAG&{#1q7ELeuyBnP7u!#utsBJT1~Xd&cwPSFe-Tc=bGdw*?t6b$u*i zWI$MOse9rDIaZ)eK*nb+2xGDmqY;!9$!HE@UGAQ2#G(OZ#j`j4;DryBu`u@G&1!8dctoq54%^Cw~p3HA8#MMk3Ji9y>#_1 z>iX$wo%Zp2>ZN~5UzdR^?U|_hD^)R(Cn;*`(^8&2f0?@EnFzzrnADZ7M;-R9T{y2X zZ^Qg#hYjuZ9O6KKF*1oT!-8(|U3PsWYvExxS)Riv6zt`$NT4&|fECUXV0i1e8pzAc zD^Ao$HuMrO4&bVQ3_&;tq~+XXLq-v8eCj1p)c*ylm*YV=`BL{}eoiUow~i*0bvVJ1 zak+aEmlVre#{$O5a$Hi-V7CPe&1IY{$gZV>Y#S(rz%2kWOyL}m>mD;s-pFN(h_Gl* zDV8OTW=xYSIpyFnH+eo-w3cb|UQTN@NaQjAjV(6`zr3E2fk6%!NH%a|85ou{USg4HNB*<8{2wozU^tb>d)u zvLtMZnDzmcik)-1gM__#iQDB^fmQ(-x3nOP$()QvP?iIuIV;dj zx0@zAG1+rK9C*8Fb0?D@6PO2b`s5l$4UlpmYbB#2l=Ys`8>;+F)8_juj7$;`&3A#m z`;+v;sS@NnAa-V$T)?R{`2#2KWPNtNdfpS>T!#z<7%tTM8D1!L7TVJ7B)({o-XDkJ zM#H&T3zj5KV%xJfa^LkB4T0okocHW^BrjBu+ATQeL}S>3-S=kH-9Pv-=b*-B;S)E{ zzxb3ZH6tibxbS1&k@oAl*S;t&JR%|f-r%?C34Ps-Q6i5*Y%^Bg`dC=edwscReSkM3 zlL#}yPt)1;vBk&ao9wWl5#W$A`|EfF=!eX_;zWIj0g&jt4fG^X91aBGECGhUj?X72 zaL6hHh0v8rq9_w%oSeuZJh_33WAbhePHgJsP}KXv)bsKo+yag|ZZ0X7EsdRwlQp^I z;Bh$FA1rzSrb{Ck;&xC3!OaCS_~9G@hX4Q7SQr?5T|*poJ^kGDa}&!_^H4mFu2};` zb1(}qu8l!HL04yrqHZQg9Vkr*!;{eD4Pe*4fywY17v$&aRpjO%dlfTn!Hs3u()g7P Op3?HU<=D=%gCqfk&GA+M diff --git a/helpapp/soap-service/pom.xml b/helpapp/soap-service/pom.xml index da398d8..d122e95 100644 --- a/helpapp/soap-service/pom.xml +++ b/helpapp/soap-service/pom.xml @@ -1,40 +1,73 @@ - - - insa.application.helpapp - helpapp - 1.0-SNAPSHOT - - 4.0.0 - soap-service + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.0 + + + com.example + producing-web-service-complete + 0.0.1-SNAPSHOT + producing-web-service-complete + Demo project for Spring Boot - - - - org.springframework.boot - spring-boot-starter-web-services - - + + 17 + - - - - - org.springframework.boot - spring-boot-maven-plugin - 3.1.4 - + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-web-services + + + + wsdl4j + wsdl4j + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.codehaus.mojo + jaxb2-maven-plugin + 3.1.0 + + + xjc + + xjc + + + + + + ${project.basedir}/src/main/resources/countries.xsd + + + + + + - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 21 - 21 - - - - - diff --git a/helpapp/soap-service/src/main/java/.gitignore b/helpapp/soap-service/src/main/java/.gitignore new file mode 100644 index 0000000..5de3989 --- /dev/null +++ b/helpapp/soap-service/src/main/java/.gitignore @@ -0,0 +1 @@ +io diff --git a/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java b/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java new file mode 100644 index 0000000..f14655f --- /dev/null +++ b/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java @@ -0,0 +1,31 @@ +package com.example.producingwebservice; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ws.server.endpoint.annotation.Endpoint; +import org.springframework.ws.server.endpoint.annotation.PayloadRoot; +import org.springframework.ws.server.endpoint.annotation.RequestPayload; +import org.springframework.ws.server.endpoint.annotation.ResponsePayload; + +import io.spring.guides.gs_producing_web_service.GetCountryRequest; +import io.spring.guides.gs_producing_web_service.GetCountryResponse; + +@Endpoint +public class CountryEndpoint { + private static final String NAMESPACE_URI = "http://spring.io/guides/gs-producing-web-service"; + + private CountryRepository countryRepository; + + @Autowired + public CountryEndpoint(CountryRepository countryRepository) { + this.countryRepository = countryRepository; + } + + @PayloadRoot(namespace = NAMESPACE_URI, localPart = "getCountryRequest") + @ResponsePayload + public GetCountryResponse getCountry(@RequestPayload GetCountryRequest request) { + GetCountryResponse response = new GetCountryResponse(); + response.setCountry(countryRepository.findCountry(request.getName())); + + return response; + } +} diff --git a/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java b/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java new file mode 100644 index 0000000..d9e5a89 --- /dev/null +++ b/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java @@ -0,0 +1,47 @@ +package com.example.producingwebservice; + +import jakarta.annotation.PostConstruct; +import java.util.HashMap; +import java.util.Map; + +import io.spring.guides.gs_producing_web_service.Country; +import io.spring.guides.gs_producing_web_service.Currency; +import org.springframework.stereotype.Component; +import org.springframework.util.Assert; + +@Component +public class CountryRepository { + private static final Map countries = new HashMap<>(); + + @PostConstruct + public void initData() { + Country spain = new Country(); + spain.setName("Spain"); + spain.setCapital("Madrid"); + spain.setCurrency(Currency.EUR); + spain.setPopulation(46704314); + + countries.put(spain.getName(), spain); + + Country poland = new Country(); + poland.setName("Poland"); + poland.setCapital("Warsaw"); + poland.setCurrency(Currency.PLN); + poland.setPopulation(38186860); + + countries.put(poland.getName(), poland); + + Country uk = new Country(); + uk.setName("United Kingdom"); + uk.setCapital("London"); + uk.setCurrency(Currency.GBP); + uk.setPopulation(63705000); + + countries.put(uk.getName(), uk); + } + + public Country findCountry(String name) { + Assert.notNull(name, "The country's name must not be null"); + return countries.get(name); + } +} diff --git a/helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java b/helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java new file mode 100644 index 0000000..e9308b1 --- /dev/null +++ b/helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java @@ -0,0 +1,12 @@ +package com.example.producingwebservice; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ProducingWebServiceApplication { + + public static void main(String[] args) { + SpringApplication.run(ProducingWebServiceApplication.class, args); + } +} diff --git a/helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java b/helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java new file mode 100644 index 0000000..3379538 --- /dev/null +++ b/helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java @@ -0,0 +1,40 @@ +package com.example.producingwebservice; + +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.ws.config.annotation.EnableWs; +import org.springframework.ws.config.annotation.WsConfigurerAdapter; +import org.springframework.ws.transport.http.MessageDispatcherServlet; +import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition; +import org.springframework.xml.xsd.SimpleXsdSchema; +import org.springframework.xml.xsd.XsdSchema; + +@EnableWs +@Configuration +public class WebServiceConfig extends WsConfigurerAdapter { + @Bean + public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) { + MessageDispatcherServlet servlet = new MessageDispatcherServlet(); + servlet.setApplicationContext(applicationContext); + servlet.setTransformWsdlLocations(true); + return new ServletRegistrationBean<>(servlet, "/ws/*"); + } + + @Bean(name = "countries") + public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) { + DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition(); + wsdl11Definition.setPortTypeName("CountriesPort"); + wsdl11Definition.setLocationUri("/ws"); + wsdl11Definition.setTargetNamespace("http://spring.io/guides/gs-producing-web-service"); + wsdl11Definition.setSchema(countriesSchema); + return wsdl11Definition; + } + + @Bean + public XsdSchema countriesSchema() { + return new SimpleXsdSchema(new ClassPathResource("countries.xsd")); + } +} diff --git a/helpapp/soap-service/src/main/java/insa/application/helpapp/soap/SoapApplication.java b/helpapp/soap-service/src/main/java/insa/application/helpapp/soap/SoapApplication.java deleted file mode 100644 index 3abc8e9..0000000 --- a/helpapp/soap-service/src/main/java/insa/application/helpapp/soap/SoapApplication.java +++ /dev/null @@ -1,12 +0,0 @@ -package insa.application.helpapp.soap; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class SoapApplication { - - public static void main(String[] args) { - SpringApplication.run(SoapApplication.class, args); - } -} diff --git a/helpapp/soap-service/src/main/resources/application.properties b/helpapp/soap-service/src/main/resources/application.properties index 4d360de..e69de29 100644 --- a/helpapp/soap-service/src/main/resources/application.properties +++ b/helpapp/soap-service/src/main/resources/application.properties @@ -1 +0,0 @@ -server.port=8081 diff --git a/helpapp/soap-service/src/main/resources/countries.xsd b/helpapp/soap-service/src/main/resources/countries.xsd new file mode 100644 index 0000000..a893956 --- /dev/null +++ b/helpapp/soap-service/src/main/resources/countries.xsd @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/helpapp/soap-service/src/test/java/com/example/producingwebservice/ProducingWebServiceApplicationIntegrationTests.java b/helpapp/soap-service/src/test/java/com/example/producingwebservice/ProducingWebServiceApplicationIntegrationTests.java new file mode 100644 index 0000000..cc030be --- /dev/null +++ b/helpapp/soap-service/src/test/java/com/example/producingwebservice/ProducingWebServiceApplicationIntegrationTests.java @@ -0,0 +1,56 @@ +/* + * Copyright 2014-2015 the original author or authors. + * + * 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 com.example.producingwebservice; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import io.spring.guides.gs_producing_web_service.GetCountryRequest; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.oxm.jaxb.Jaxb2Marshaller; +import org.springframework.util.ClassUtils; +import org.springframework.ws.client.core.WebServiceTemplate; + +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +public class ProducingWebServiceApplicationIntegrationTests { + + private Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); + + @LocalServerPort + private int port = 0; + + @BeforeEach + public void init() throws Exception { + marshaller.setPackagesToScan(ClassUtils.getPackageName(GetCountryRequest.class)); + marshaller.afterPropertiesSet(); + } + + @Test + public void testSendAndReceive() { + WebServiceTemplate ws = new WebServiceTemplate(marshaller); + GetCountryRequest request = new GetCountryRequest(); + request.setName("Spain"); + + assertThat(ws.marshalSendAndReceive("http://localhost:" + + port + "/ws", request) != null); + } +} diff --git a/helpapp/soap-service/target/classes/application.properties b/helpapp/soap-service/target/classes/application.properties index 4d360de..e69de29 100644 --- a/helpapp/soap-service/target/classes/application.properties +++ b/helpapp/soap-service/target/classes/application.properties @@ -1 +0,0 @@ -server.port=8081 diff --git a/helpapp/soap-service/target/classes/insa/application/helpapp/soap/SoapApplication.class b/helpapp/soap-service/target/classes/insa/application/helpapp/soap/SoapApplication.class deleted file mode 100644 index e398bf1db77462971bae9f9dc32e52c8209b7a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729 zcmb7CxlRKy5Pc4T4Iy0NJ{r0Z3Ea^HAweXn2qc0+LFHY{V%XR#uNU|&Di8%9z(*m* z3sP1n4K8Lh*Bj59`TTnS0C0@$Ix3h5P;FomQw$6D;!*HK=$M~}_cC$}Q-?|`cf>H! z+8qR_G3+Uw2`>zO`Z~ zpNxIrp)rp43umd4TH0JQgstA_TirxtS?9Xs={pbB+3k%(j*NEl+3~K?w<^x92oqUq zL2e)JFjTwdMl#Izl$K}tFqHPv=Q1>VCKAa&Smo_sXVu-QjDb`3KdA6+hC~t1dKY=Ub+yi&Ilno`;EM5sr$stm=T7K&>pF3;KUoqsMNIpE zO2y7O-9f_MLBS<+wbqKra0^W~4ic>qJ{|N~r01*7mot?+=Xe!NUS#j2MG-_(VnqhMPC(p`rmdC zsO47VQ_~f&FFUJCPDsT+NPlv1yQ@ZBMZvbe%l!^7k^Ho!#^EgWcc1pE({dy-!+`VCuBI-?T(>Ti#LrgWL;?|EcbsIy3o2T|m^% z;~Kk7L3KXiHNRS-C>^;Ao++h^&>DNjD1>X_uusVA1wBOxvLt9H+!?6!#;E!TUk zE~(2s8uQQOTi^0y7IwS`!&J9!F-^4c5li;v3JiU`IxOW?&D|dsk;~>tzJ0RyvGC&c zp>fd@#Wr0{`sC9uX(jwQ)+k5K>-71rHdDXNKA$R~q9%OQC*tW}wHt-ztCAj^te<;m z`%G?E?YI2Xa}AW^Zp>*ZpLT)gr(G~;Lfwt~qve$yt#O8;f5=J+C(XwIUX zBm8Z?u)zVoo274()@#~vCpqK`^wuT+Eee!xPczia*%?4(tg+k^Q2h?~A&j+pNUg9}r ziR_gT+5+Q2_0Y!9RFj;BfNM|MnFH*Niw zzB4Clrui@XVR%~h#RWD&jkzn|dQbFzYZ(@$%F2H!V-s_#VcM2tnd}|hMW><1^!wSL@p?t%@U*|uaM2am?Eg^UQ)2B*cEHwbJGbOQwD9LzFcyk?A5Ma2lce%s~t3{Xi zSvG0pdhC9|{)ly1+9fVW*WL@auRpCm>(Qr_HtXTvW^1vcH5a81w(@u|e!8G}^=*HF zoQcN5GM?mZ+_P$C|9)b)r88+`+YR+!x>vU7DIOOH%QlF9|6}^KfU{gjL+*O(-FjJA z<$Ha3T77^wBa;X-?ivv2Js=QZc147AdNnT5UDgPFFau@h((l4p=AL4>!k*LestE)aAN)*29D0cK2rid+Z~VEF%k z6R`M#$2F_~hWQXvGpGngXuglB8Bc+X+f-1Ij4)M|1;a@=O+_o9VOC%-qG6V7X{;dE s3TT0i2wzA9q8Bd+o7C9I^bE)*L}3%)%?dP#fq@qYzW_s>fgQvH06b}si2wiq From 7a9150ed33bdc42144fa6eb17107533d829cb9d8 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Tue, 10 Dec 2024 17:34:46 +0100 Subject: [PATCH 3/9] Cleaning target folder --- .../target/classes/application.properties | 1 - .../helpapp/rest/RestApplication.class | Bin 996 -> 0 bytes .../target/maven-archiver/pom.properties | 3 --- .../compile/default-compile/createdFiles.lst | 1 - .../compile/default-compile/inputFiles.lst | 1 - .../target/rest-service-1.0-SNAPSHOT.jar | Bin 2963 -> 0 bytes .../target/classes/application.properties | 0 .../target/maven-archiver/pom.properties | 3 --- .../compile/default-compile/createdFiles.lst | 10 ---------- .../compile/default-compile/inputFiles.lst | 10 ---------- 10 files changed, 29 deletions(-) delete mode 100644 helpapp/rest-service/target/classes/application.properties delete mode 100644 helpapp/rest-service/target/classes/insa/application/helpapp/rest/RestApplication.class delete mode 100644 helpapp/rest-service/target/maven-archiver/pom.properties delete mode 100644 helpapp/rest-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 helpapp/rest-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 helpapp/rest-service/target/rest-service-1.0-SNAPSHOT.jar delete mode 100644 helpapp/soap-service/target/classes/application.properties delete mode 100644 helpapp/soap-service/target/maven-archiver/pom.properties delete mode 100644 helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst diff --git a/helpapp/rest-service/target/classes/application.properties b/helpapp/rest-service/target/classes/application.properties deleted file mode 100644 index 4c00e40..0000000 --- a/helpapp/rest-service/target/classes/application.properties +++ /dev/null @@ -1 +0,0 @@ -server.port=8080 diff --git a/helpapp/rest-service/target/classes/insa/application/helpapp/rest/RestApplication.class b/helpapp/rest-service/target/classes/insa/application/helpapp/rest/RestApplication.class deleted file mode 100644 index fdfbad45dfbc148a35b760d95d94ab8fda6e0e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 zcmb7D%We}f6g_U94IwRQD3oUcERsmY8-$R8DwT-GB7l@s>7px7>ZC4?9eF%0p9L!r z3qF94LR^Q4j9@m5H1^!rIrcqwe*FCQ9l#+TRj`3v3Hd4tC^BrHiwnWEFf;x>I+qjA zP<*b8@&^pLc4u5dnPFdS7%xvn!TwYrDfk)PQK3Y0cl|<tpq`h~wT#$}{o-tk)T2Ay2IF@}uW{ zYo=*QlLeWKc+gbM-Q(U+i0qWZ5bNv&c9t@*c&Fs ztGOJjScS_QWBpP!0(_F$vr8HANSRYE{^au4(!V8zL!*iDLg<8=Pz=Hc>dMF_ZX#c) z(3-|y1MoPA$8eCzwNzdt-jYyDf#hlqUeHLSgd)~wnE+Xb4F?FyI;*vGJ+x4wF%M4; zbb1tNy+#(NozY(CegXST9~-FC8p5Ed-J!MmI{^(`Cu46)FcS|+=~7V<<`|Nw>w2!y0-bG$-U9EFx&TkGfxMKX^X_20nua2kh#nM$KI1%hj>`DY-N)ihSax#+>OEUBG@Fm$G3ImM-g|QeABRis?D8C@Js3bGBSldrm%Uk!7_6dEhjav;i7(8GC$0)=YP>fcK zbt$njF)%z~W?(P|8Uv0|B(wBk9s&ns5YRo2h`7{C&PgmTo*LwxFKj6A?~cvxCH$8H zG|sbFs7&nA=TKw~)e`J?X3$)D$=Uzj+Q~a|u1&mt`_twJERPQGKX6w(c3YJ5s$7EV z`8CgH=kJreZC_vepYee}zwMfZ0gfBngii6?PJa~hA;2a0-$DDyjj0;@114@_=V>iV zk8zxu81K6ALDEK!P=z&@1m~YDaIDTt$@w|q%tN6s4<1IbZk00IaPq>{v{R2;122{& z9f^s{_&o7_X|@}eqFKmoWlB|1Ytss`appE3x}5E z#3{Ga4=$R!az-Qnzt;^_E_1kDo8N8w{7gz%@5~gg_fHP+ES;G>d*Q`*PYzZeR@s!L zcU&th?}x@Ev#U#+{EN@Oar$*9{Gz6KebGmOr%~=l}1Fyxy=oa`EASS#nV;E*O``GoG<6 z*>pYg_(|hWOW%cW(EqZz&FW^6)Rzs;+sbA(u;opNKdzUT_9T7E+YMQJFa2%%`dIb8 z_fa#ClH#RqqT4sP&wFV0E}(7o#`&fJEAngiDaFSx6f^p{dyAQ7QUA5S!W$&`J1+ao zTq{y~iT|WMQynv+tYQGBs&bR?%j+2#803J3gbgrNp=B|gxdtV@7v$&aRpjO@4LR%g z*+5{=XOVw9Zs#>JJ1rFAP_bYTb-jPLbo)xhjk>orKX}-%>mR%3moaHu$NV{uZr=P_ zVdI%Lw~|Hjgm+{{{jU8S2j>;Ub*W~kt(m}`aO`PKP5I&e8x6eQ+^bpUpW$M+TH?x5 zl&)26E3NsKwd|IYr{I)}IgG7GOOHt(+vUDv!80c|7W+uu9N(Cx&lcGxDa=+oZKeI! zy^}M#x4=^{-}{u8ar2{k-;Ptp_YQvh#U=B@!FI>eNf)M0Tw%OnLHdHFO!p^!>klgW z_;1@PPTj_cU`wUDzojjLGK2V4zE7Xb?v%OuWAVM$Qg19e_ZjEUz4Y@=r_j9K>ZIW0 zLt^T`(>-%bjxMuHV3etCd&yT`8Slm2+3x#bOOWgCvtprr+wTT%{FE%C{UmMbqLdRV zTuRS1Ry=mf4iNv-EgZj7aI){^zT0naaNJdt-n2OG*0p=N!uu~z6yaO^Tx-1y+Y*MD zsbQi@3}JQ8eg4i|mcMP^lzgkncRYj)lUN>&2pA-OY*Reca>DWJ{ga9h|E)*J>`T!Gv9}qiJk`NF@ znzxSDNgrr=>i5{xWsR zGZBWLF{vwEk2>sIyKr7(-iGD8(AY*SITkm?cXZ&4BeXQdO*n$OFh`V5`LuX4C@B zz#j`(>vUubuodVC3of%@L=Dc+MF|IJ@s4a0wh{wj(;YSnY(fq@R-i!)47@=21=#B8 HWC!s8obk=5 diff --git a/helpapp/soap-service/target/classes/application.properties b/helpapp/soap-service/target/classes/application.properties deleted file mode 100644 index e69de29..0000000 diff --git a/helpapp/soap-service/target/maven-archiver/pom.properties b/helpapp/soap-service/target/maven-archiver/pom.properties deleted file mode 100644 index 32e12e4..0000000 --- a/helpapp/soap-service/target/maven-archiver/pom.properties +++ /dev/null @@ -1,3 +0,0 @@ -artifactId=producing-web-service-complete -groupId=com.example -version=0.0.1-SNAPSHOT diff --git a/helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index c7ccf0b..0000000 --- a/helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,10 +0,0 @@ -com/example/producingwebservice/ProducingWebServiceApplication.class -com/example/producingwebservice/WebServiceConfig.class -com/example/producingwebservice/CountryRepository.class -io/spring/guides/gs_producing_web_service/GetCountryResponse.class -io/spring/guides/gs_producing_web_service/package-info.class -com/example/producingwebservice/CountryEndpoint.class -io/spring/guides/gs_producing_web_service/GetCountryRequest.class -io/spring/guides/gs_producing_web_service/ObjectFactory.class -io/spring/guides/gs_producing_web_service/Currency.class -io/spring/guides/gs_producing_web_service/Country.class diff --git a/helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 0fcd3a3..0000000 --- a/helpapp/soap-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,10 +0,0 @@ -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/target/generated-sources/jaxb/io/spring/guides/gs_producing_web_service/Country.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/target/generated-sources/jaxb/io/spring/guides/gs_producing_web_service/Currency.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/target/generated-sources/jaxb/io/spring/guides/gs_producing_web_service/GetCountryRequest.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/target/generated-sources/jaxb/io/spring/guides/gs_producing_web_service/GetCountryResponse.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/target/generated-sources/jaxb/io/spring/guides/gs_producing_web_service/ObjectFactory.java -/home/yoboujon/Documents/GEI/service-architecture/helpapp/soap-service/target/generated-sources/jaxb/io/spring/guides/gs_producing_web_service/package-info.java From f17b60fbc41b2e4257cbf54b1a624be5f95fcc7d Mon Sep 17 00:00:00 2001 From: Lemonochrme Date: Tue, 10 Dec 2024 18:04:17 +0100 Subject: [PATCH 4/9] Added user-service service --- helpapp/pom.xml | 1 + helpapp/user-service/pom.xml | 40 +++++++++++++++++++ .../helpapp/rest/RestApplication.java | 20 ++++++++++ .../src/main/resources/application.properties | 1 + 4 files changed, 62 insertions(+) create mode 100644 helpapp/user-service/pom.xml create mode 100644 helpapp/user-service/src/main/java/insa/application/helpapp/rest/RestApplication.java create mode 100644 helpapp/user-service/src/main/resources/application.properties diff --git a/helpapp/pom.xml b/helpapp/pom.xml index 6ef8936..3698f71 100644 --- a/helpapp/pom.xml +++ b/helpapp/pom.xml @@ -9,6 +9,7 @@ rest-service soap-service + user-service diff --git a/helpapp/user-service/pom.xml b/helpapp/user-service/pom.xml new file mode 100644 index 0000000..49f044d --- /dev/null +++ b/helpapp/user-service/pom.xml @@ -0,0 +1,40 @@ + + + insa.application.helpapp + helpapp + 1.0-SNAPSHOT + + 4.0.0 + user-service + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 3.1.4 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 21 + 21 + + + + + + diff --git a/helpapp/user-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/user-service/src/main/java/insa/application/helpapp/rest/RestApplication.java new file mode 100644 index 0000000..2e82618 --- /dev/null +++ b/helpapp/user-service/src/main/java/insa/application/helpapp/rest/RestApplication.java @@ -0,0 +1,20 @@ +package insa.application.helpapp.rest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class RestApplication { + + public static void main(String[] args) { + SpringApplication.run(RestApplication.class, args); + } + + @GetMapping("/hello") + public String hello() { + return "Hello from REST!"; + } +} diff --git a/helpapp/user-service/src/main/resources/application.properties b/helpapp/user-service/src/main/resources/application.properties new file mode 100644 index 0000000..4c00e40 --- /dev/null +++ b/helpapp/user-service/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8080 From 99ecb2efb67d1c01ba60c209f28a1784ad66031e Mon Sep 17 00:00:00 2001 From: Lemonochrme Date: Fri, 13 Dec 2024 22:39:53 +0100 Subject: [PATCH 5/9] Refactor services: remove unused SOAP service, add new REST services with application properties --- helpapp/README.md | 76 +++++++++++++++++++ helpapp/administration-service/pom.xml | 40 ++++++++++ .../helpapp/rest/RestApplication.java | 0 .../src/main/resources/application.properties | 0 helpapp/feedback-service/pom.xml | 40 ++++++++++ .../helpapp/rest/RestApplication.java | 20 +++++ .../src/main/resources/application.properties | 1 + helpapp/pom.xml | 8 +- .../{rest-service => request-service}/pom.xml | 2 +- .../helpapp/rest/RestApplication.java | 20 +++++ .../src/main/resources/application.properties | 1 + helpapp/soap-service/pom.xml | 73 ------------------ helpapp/soap-service/src/main/java/.gitignore | 1 - .../producingwebservice/CountryEndpoint.java | 31 -------- .../CountryRepository.java | 47 ------------ .../ProducingWebServiceApplication.java | 12 --- .../producingwebservice/WebServiceConfig.java | 40 ---------- .../src/main/resources/application.properties | 0 .../src/main/resources/countries.xsd | 36 --------- ...WebServiceApplicationIntegrationTests.java | 56 -------------- helpapp/volunteer-service/pom.xml | 40 ++++++++++ .../helpapp/rest/RestApplication.java | 20 +++++ .../src/main/resources/application.properties | 1 + 23 files changed, 265 insertions(+), 300 deletions(-) create mode 100644 helpapp/administration-service/pom.xml rename helpapp/{rest-service => administration-service}/src/main/java/insa/application/helpapp/rest/RestApplication.java (100%) rename helpapp/{rest-service => administration-service}/src/main/resources/application.properties (100%) create mode 100644 helpapp/feedback-service/pom.xml create mode 100644 helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/RestApplication.java create mode 100644 helpapp/feedback-service/src/main/resources/application.properties rename helpapp/{rest-service => request-service}/pom.xml (96%) create mode 100644 helpapp/request-service/src/main/java/insa/application/helpapp/rest/RestApplication.java create mode 100644 helpapp/request-service/src/main/resources/application.properties delete mode 100644 helpapp/soap-service/pom.xml delete mode 100644 helpapp/soap-service/src/main/java/.gitignore delete mode 100644 helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java delete mode 100644 helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java delete mode 100644 helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java delete mode 100644 helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java delete mode 100644 helpapp/soap-service/src/main/resources/application.properties delete mode 100644 helpapp/soap-service/src/main/resources/countries.xsd delete mode 100644 helpapp/soap-service/src/test/java/com/example/producingwebservice/ProducingWebServiceApplicationIntegrationTests.java create mode 100644 helpapp/volunteer-service/pom.xml create mode 100644 helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/RestApplication.java create mode 100644 helpapp/volunteer-service/src/main/resources/application.properties diff --git a/helpapp/README.md b/helpapp/README.md index 57185fb..8a1bf77 100644 --- a/helpapp/README.md +++ b/helpapp/README.md @@ -22,3 +22,79 @@ mvn spring-boot:run -pl soap-service ``` Vérifier le bon fonctionnement en accédant à `localhost:8080/hello` pour REST et `localhost:8081/ws` pour SOAP. + + + +# Specifications + +### **1. Objectifs de l'application** +- **Aider les personnes en besoin** : Faciliter la publication de demandes d’aide par des personnes en situation de vulnérabilité. +- **Mobiliser des volontaires** : Permettre aux volontaires de répondre à des demandes d’aide ou de proposer une aide spontanée. +- **Gérer l’administration** : Faciliter l’administration et le suivi des demandes. + +### **2. REST Microservices** + +#### **2.1 User Service** +- **Features:** + - Account creation for requesters, volunteers, and administrators. + - User profile management (modification and deletion). + - Authentication and role management (requester, volunteer, administrator). +- **Main Endpoints:** + - `POST /users`: Create a user. + - `GET /users/{id}`: View a user's profile. + - `PUT /users/{id}`: Update a user. + - `DELETE /users/{id}`: Delete a user. + +#### **2.2 Request Service** +- **Features:** + - Creation, validation, and management of help requests. + - Management of request statuses: Pending, validated, rejected, completed. + - Viewing and filtering requests by status. +- **Main Endpoints:** + - `POST /requests`: Create a request. + - `GET /requests`: List of requests (with possible filters). + - `GET /requests/{id}`: View a specific request. + - `PUT /requests/{id}`: Update the status or details of a request. + - `DELETE /requests/{id}`: Delete a request. + +#### **2.3 Volunteer Service** +- **Features:** + - Viewing available requests. + - Offering help for a specific request. + - Posting spontaneous help offers. +- **Main Endpoints:** + - `GET /volunteers/requests`: List of available requests. + - `POST /volunteers/{id}/help`: Respond to a specific request. + - `POST /volunteers/spontaneous`: Post a spontaneous help offer. + +#### **2.4 Feedback Service** +- **Features:** + - Recording and managing feedback after a request is completed. + - Viewing feedback associated with a request or user. +- **Main Endpoints:** + - `POST /feedbacks`: Add feedback. + - `GET /feedbacks`: View feedback (with possible filters). + +#### **2.5 Administration Service** +- **Features:** + - Validation or rejection of help requests. + - Management of rejection reasons. + - Viewing global statistics (e.g., number of completed requests). +- **Main Endpoints:** + - `GET /admin/requests`: List of requests to be validated. + - `PUT /admin/requests/{id}/validate`: Validate a request. + - `PUT /admin/requests/{id}/reject`: Reject a request with justification. + +### **3. Architecture technique** +- **Communication :** Chaque microservice expose une API REST avec des endpoints bien définis. +- **Base de données :** Chaque microservice possède sa propre base de données pour favoriser la décentralisation (database-per-service). +- **Authentification :** Utilisation de JWT pour sécuriser les communications. +- **Load Balancing et Gateway :** Utilisation d’un API Gateway pour la gestion des requêtes et la sécurité. +- **Monitoring :** Intégration de services comme Prometheus et Grafana pour le suivi des performances. + + + +### **4. Avantages de cette architecture** +- **Scalabilité** : Les microservices peuvent être déployés et mis à l'échelle individuellement. +- **Flexibilité** : Possibilité d’utiliser différentes technologies pour chaque service. +- **Maintenance** : Une meilleure isolation des fonctionnalités simplifie le débogage et les mises à jour. diff --git a/helpapp/administration-service/pom.xml b/helpapp/administration-service/pom.xml new file mode 100644 index 0000000..963e9af --- /dev/null +++ b/helpapp/administration-service/pom.xml @@ -0,0 +1,40 @@ + + + insa.application.helpapp + helpapp + 1.0-SNAPSHOT + + 4.0.0 + administration-service + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 3.1.4 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 21 + 21 + + + + + + diff --git a/helpapp/rest-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/administration-service/src/main/java/insa/application/helpapp/rest/RestApplication.java similarity index 100% rename from helpapp/rest-service/src/main/java/insa/application/helpapp/rest/RestApplication.java rename to helpapp/administration-service/src/main/java/insa/application/helpapp/rest/RestApplication.java diff --git a/helpapp/rest-service/src/main/resources/application.properties b/helpapp/administration-service/src/main/resources/application.properties similarity index 100% rename from helpapp/rest-service/src/main/resources/application.properties rename to helpapp/administration-service/src/main/resources/application.properties diff --git a/helpapp/feedback-service/pom.xml b/helpapp/feedback-service/pom.xml new file mode 100644 index 0000000..9d440c1 --- /dev/null +++ b/helpapp/feedback-service/pom.xml @@ -0,0 +1,40 @@ + + + insa.application.helpapp + helpapp + 1.0-SNAPSHOT + + 4.0.0 + feedback-service + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 3.1.4 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 21 + 21 + + + + + + diff --git a/helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/RestApplication.java new file mode 100644 index 0000000..2e82618 --- /dev/null +++ b/helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/RestApplication.java @@ -0,0 +1,20 @@ +package insa.application.helpapp.rest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class RestApplication { + + public static void main(String[] args) { + SpringApplication.run(RestApplication.class, args); + } + + @GetMapping("/hello") + public String hello() { + return "Hello from REST!"; + } +} diff --git a/helpapp/feedback-service/src/main/resources/application.properties b/helpapp/feedback-service/src/main/resources/application.properties new file mode 100644 index 0000000..4c00e40 --- /dev/null +++ b/helpapp/feedback-service/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8080 diff --git a/helpapp/pom.xml b/helpapp/pom.xml index 3698f71..6bfa614 100644 --- a/helpapp/pom.xml +++ b/helpapp/pom.xml @@ -7,9 +7,11 @@ pom - rest-service - soap-service - user-service + user-service + request-service + volunteer-service + feedback-service + administration-service diff --git a/helpapp/rest-service/pom.xml b/helpapp/request-service/pom.xml similarity index 96% rename from helpapp/rest-service/pom.xml rename to helpapp/request-service/pom.xml index c85e368..6c195a1 100644 --- a/helpapp/rest-service/pom.xml +++ b/helpapp/request-service/pom.xml @@ -5,7 +5,7 @@ 1.0-SNAPSHOT 4.0.0 - rest-service + request-service diff --git a/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RestApplication.java new file mode 100644 index 0000000..2e82618 --- /dev/null +++ b/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RestApplication.java @@ -0,0 +1,20 @@ +package insa.application.helpapp.rest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class RestApplication { + + public static void main(String[] args) { + SpringApplication.run(RestApplication.class, args); + } + + @GetMapping("/hello") + public String hello() { + return "Hello from REST!"; + } +} diff --git a/helpapp/request-service/src/main/resources/application.properties b/helpapp/request-service/src/main/resources/application.properties new file mode 100644 index 0000000..4c00e40 --- /dev/null +++ b/helpapp/request-service/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8080 diff --git a/helpapp/soap-service/pom.xml b/helpapp/soap-service/pom.xml deleted file mode 100644 index d122e95..0000000 --- a/helpapp/soap-service/pom.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.3.0 - - - com.example - producing-web-service-complete - 0.0.1-SNAPSHOT - producing-web-service-complete - Demo project for Spring Boot - - - 17 - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-web-services - - - - wsdl4j - wsdl4j - - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - org.codehaus.mojo - jaxb2-maven-plugin - 3.1.0 - - - xjc - - xjc - - - - - - ${project.basedir}/src/main/resources/countries.xsd - - - - - - - - diff --git a/helpapp/soap-service/src/main/java/.gitignore b/helpapp/soap-service/src/main/java/.gitignore deleted file mode 100644 index 5de3989..0000000 --- a/helpapp/soap-service/src/main/java/.gitignore +++ /dev/null @@ -1 +0,0 @@ -io diff --git a/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java b/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java deleted file mode 100644 index f14655f..0000000 --- a/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryEndpoint.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.example.producingwebservice; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.ws.server.endpoint.annotation.Endpoint; -import org.springframework.ws.server.endpoint.annotation.PayloadRoot; -import org.springframework.ws.server.endpoint.annotation.RequestPayload; -import org.springframework.ws.server.endpoint.annotation.ResponsePayload; - -import io.spring.guides.gs_producing_web_service.GetCountryRequest; -import io.spring.guides.gs_producing_web_service.GetCountryResponse; - -@Endpoint -public class CountryEndpoint { - private static final String NAMESPACE_URI = "http://spring.io/guides/gs-producing-web-service"; - - private CountryRepository countryRepository; - - @Autowired - public CountryEndpoint(CountryRepository countryRepository) { - this.countryRepository = countryRepository; - } - - @PayloadRoot(namespace = NAMESPACE_URI, localPart = "getCountryRequest") - @ResponsePayload - public GetCountryResponse getCountry(@RequestPayload GetCountryRequest request) { - GetCountryResponse response = new GetCountryResponse(); - response.setCountry(countryRepository.findCountry(request.getName())); - - return response; - } -} diff --git a/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java b/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java deleted file mode 100644 index d9e5a89..0000000 --- a/helpapp/soap-service/src/main/java/com/example/producingwebservice/CountryRepository.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.example.producingwebservice; - -import jakarta.annotation.PostConstruct; -import java.util.HashMap; -import java.util.Map; - -import io.spring.guides.gs_producing_web_service.Country; -import io.spring.guides.gs_producing_web_service.Currency; -import org.springframework.stereotype.Component; -import org.springframework.util.Assert; - -@Component -public class CountryRepository { - private static final Map countries = new HashMap<>(); - - @PostConstruct - public void initData() { - Country spain = new Country(); - spain.setName("Spain"); - spain.setCapital("Madrid"); - spain.setCurrency(Currency.EUR); - spain.setPopulation(46704314); - - countries.put(spain.getName(), spain); - - Country poland = new Country(); - poland.setName("Poland"); - poland.setCapital("Warsaw"); - poland.setCurrency(Currency.PLN); - poland.setPopulation(38186860); - - countries.put(poland.getName(), poland); - - Country uk = new Country(); - uk.setName("United Kingdom"); - uk.setCapital("London"); - uk.setCurrency(Currency.GBP); - uk.setPopulation(63705000); - - countries.put(uk.getName(), uk); - } - - public Country findCountry(String name) { - Assert.notNull(name, "The country's name must not be null"); - return countries.get(name); - } -} diff --git a/helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java b/helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java deleted file mode 100644 index e9308b1..0000000 --- a/helpapp/soap-service/src/main/java/com/example/producingwebservice/ProducingWebServiceApplication.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.example.producingwebservice; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class ProducingWebServiceApplication { - - public static void main(String[] args) { - SpringApplication.run(ProducingWebServiceApplication.class, args); - } -} diff --git a/helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java b/helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java deleted file mode 100644 index 3379538..0000000 --- a/helpapp/soap-service/src/main/java/com/example/producingwebservice/WebServiceConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.example.producingwebservice; - -import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.ClassPathResource; -import org.springframework.ws.config.annotation.EnableWs; -import org.springframework.ws.config.annotation.WsConfigurerAdapter; -import org.springframework.ws.transport.http.MessageDispatcherServlet; -import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition; -import org.springframework.xml.xsd.SimpleXsdSchema; -import org.springframework.xml.xsd.XsdSchema; - -@EnableWs -@Configuration -public class WebServiceConfig extends WsConfigurerAdapter { - @Bean - public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) { - MessageDispatcherServlet servlet = new MessageDispatcherServlet(); - servlet.setApplicationContext(applicationContext); - servlet.setTransformWsdlLocations(true); - return new ServletRegistrationBean<>(servlet, "/ws/*"); - } - - @Bean(name = "countries") - public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) { - DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition(); - wsdl11Definition.setPortTypeName("CountriesPort"); - wsdl11Definition.setLocationUri("/ws"); - wsdl11Definition.setTargetNamespace("http://spring.io/guides/gs-producing-web-service"); - wsdl11Definition.setSchema(countriesSchema); - return wsdl11Definition; - } - - @Bean - public XsdSchema countriesSchema() { - return new SimpleXsdSchema(new ClassPathResource("countries.xsd")); - } -} diff --git a/helpapp/soap-service/src/main/resources/application.properties b/helpapp/soap-service/src/main/resources/application.properties deleted file mode 100644 index e69de29..0000000 diff --git a/helpapp/soap-service/src/main/resources/countries.xsd b/helpapp/soap-service/src/main/resources/countries.xsd deleted file mode 100644 index a893956..0000000 --- a/helpapp/soap-service/src/main/resources/countries.xsd +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/helpapp/soap-service/src/test/java/com/example/producingwebservice/ProducingWebServiceApplicationIntegrationTests.java b/helpapp/soap-service/src/test/java/com/example/producingwebservice/ProducingWebServiceApplicationIntegrationTests.java deleted file mode 100644 index cc030be..0000000 --- a/helpapp/soap-service/src/test/java/com/example/producingwebservice/ProducingWebServiceApplicationIntegrationTests.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014-2015 the original author or authors. - * - * 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 com.example.producingwebservice; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import io.spring.guides.gs_producing_web_service.GetCountryRequest; - -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.test.web.server.LocalServerPort; -import org.springframework.oxm.jaxb.Jaxb2Marshaller; -import org.springframework.util.ClassUtils; -import org.springframework.ws.client.core.WebServiceTemplate; - -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -public class ProducingWebServiceApplicationIntegrationTests { - - private Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); - - @LocalServerPort - private int port = 0; - - @BeforeEach - public void init() throws Exception { - marshaller.setPackagesToScan(ClassUtils.getPackageName(GetCountryRequest.class)); - marshaller.afterPropertiesSet(); - } - - @Test - public void testSendAndReceive() { - WebServiceTemplate ws = new WebServiceTemplate(marshaller); - GetCountryRequest request = new GetCountryRequest(); - request.setName("Spain"); - - assertThat(ws.marshalSendAndReceive("http://localhost:" - + port + "/ws", request) != null); - } -} diff --git a/helpapp/volunteer-service/pom.xml b/helpapp/volunteer-service/pom.xml new file mode 100644 index 0000000..298515b --- /dev/null +++ b/helpapp/volunteer-service/pom.xml @@ -0,0 +1,40 @@ + + + insa.application.helpapp + helpapp + 1.0-SNAPSHOT + + 4.0.0 + volunteer-service + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 3.1.4 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 21 + 21 + + + + + + diff --git a/helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/RestApplication.java new file mode 100644 index 0000000..2e82618 --- /dev/null +++ b/helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/RestApplication.java @@ -0,0 +1,20 @@ +package insa.application.helpapp.rest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class RestApplication { + + public static void main(String[] args) { + SpringApplication.run(RestApplication.class, args); + } + + @GetMapping("/hello") + public String hello() { + return "Hello from REST!"; + } +} diff --git a/helpapp/volunteer-service/src/main/resources/application.properties b/helpapp/volunteer-service/src/main/resources/application.properties new file mode 100644 index 0000000..4c00e40 --- /dev/null +++ b/helpapp/volunteer-service/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8080 From 3349a77450fca28c5fde923267518b7e8b443214 Mon Sep 17 00:00:00 2001 From: Lemonochrme Date: Sat, 14 Dec 2024 14:34:13 +0100 Subject: [PATCH 6/9] Update server ports for feedback, request, user, and volunteer services --- .../feedback-service/src/main/resources/application.properties | 2 +- .../request-service/src/main/resources/application.properties | 2 +- helpapp/user-service/src/main/resources/application.properties | 2 +- .../volunteer-service/src/main/resources/application.properties | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/helpapp/feedback-service/src/main/resources/application.properties b/helpapp/feedback-service/src/main/resources/application.properties index 4c00e40..4d360de 100644 --- a/helpapp/feedback-service/src/main/resources/application.properties +++ b/helpapp/feedback-service/src/main/resources/application.properties @@ -1 +1 @@ -server.port=8080 +server.port=8081 diff --git a/helpapp/request-service/src/main/resources/application.properties b/helpapp/request-service/src/main/resources/application.properties index 4c00e40..3cf12af 100644 --- a/helpapp/request-service/src/main/resources/application.properties +++ b/helpapp/request-service/src/main/resources/application.properties @@ -1 +1 @@ -server.port=8080 +server.port=8082 diff --git a/helpapp/user-service/src/main/resources/application.properties b/helpapp/user-service/src/main/resources/application.properties index 4c00e40..8f91ca7 100644 --- a/helpapp/user-service/src/main/resources/application.properties +++ b/helpapp/user-service/src/main/resources/application.properties @@ -1 +1 @@ -server.port=8080 +server.port=8083 diff --git a/helpapp/volunteer-service/src/main/resources/application.properties b/helpapp/volunteer-service/src/main/resources/application.properties index 4c00e40..5e3bb81 100644 --- a/helpapp/volunteer-service/src/main/resources/application.properties +++ b/helpapp/volunteer-service/src/main/resources/application.properties @@ -1 +1 @@ -server.port=8080 +server.port=8084 From aab5cf3f3dc6069e15cf301a815936e2ba54df04 Mon Sep 17 00:00:00 2001 From: Lemonochrme Date: Sat, 14 Dec 2024 16:21:28 +0100 Subject: [PATCH 7/9] Refactor services: remove old RestApplication classes and replace with specific service applications --- .../AdministrationServiceApplication.java | 20 +++++++++++++++++++ .../rest/FeedbackServiceApplication.java} | 6 +++--- .../rest/RequestServiceApplication.java} | 6 +++--- .../helpapp/rest/UserServiceApplication.java} | 6 +++--- .../helpapp/rest/RestApplication.java | 20 ------------------- .../rest/VolunteerServiceApplication.java} | 6 +++--- 6 files changed, 32 insertions(+), 32 deletions(-) create mode 100644 helpapp/administration-service/src/main/java/insa/application/helpapp/rest/AdministrationServiceApplication.java rename helpapp/{request-service/src/main/java/insa/application/helpapp/rest/RestApplication.java => feedback-service/src/main/java/insa/application/helpapp/rest/FeedbackServiceApplication.java} (73%) rename helpapp/{feedback-service/src/main/java/insa/application/helpapp/rest/RestApplication.java => request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java} (73%) rename helpapp/{administration-service/src/main/java/insa/application/helpapp/rest/RestApplication.java => user-service/src/main/java/insa/application/helpapp/rest/UserServiceApplication.java} (74%) delete mode 100644 helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/RestApplication.java rename helpapp/{user-service/src/main/java/insa/application/helpapp/rest/RestApplication.java => volunteer-service/src/main/java/insa/application/helpapp/rest/VolunteerServiceApplication.java} (72%) diff --git a/helpapp/administration-service/src/main/java/insa/application/helpapp/rest/AdministrationServiceApplication.java b/helpapp/administration-service/src/main/java/insa/application/helpapp/rest/AdministrationServiceApplication.java new file mode 100644 index 0000000..f07ef42 --- /dev/null +++ b/helpapp/administration-service/src/main/java/insa/application/helpapp/rest/AdministrationServiceApplication.java @@ -0,0 +1,20 @@ +package insa.application.helpapp.rest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class AdministrationServiceApplication { + + public static void main(String[] args) { + SpringApplication.run(AdministrationServiceApplication.class, args); + } + + @GetMapping("/hello") + public String hello() { + return "Hello from Administration Service!"; + } +} diff --git a/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/FeedbackServiceApplication.java similarity index 73% rename from helpapp/request-service/src/main/java/insa/application/helpapp/rest/RestApplication.java rename to helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/FeedbackServiceApplication.java index 2e82618..242a16e 100644 --- a/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RestApplication.java +++ b/helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/FeedbackServiceApplication.java @@ -7,14 +7,14 @@ import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController -public class RestApplication { +public class FeedbackServiceApplication { public static void main(String[] args) { - SpringApplication.run(RestApplication.class, args); + SpringApplication.run(FeedbackServiceApplication.class, args); } @GetMapping("/hello") public String hello() { - return "Hello from REST!"; + return "Hello from FeedBack Service!"; } } diff --git a/helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java similarity index 73% rename from helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/RestApplication.java rename to helpapp/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java index 2e82618..c88afd2 100644 --- a/helpapp/feedback-service/src/main/java/insa/application/helpapp/rest/RestApplication.java +++ b/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java @@ -7,14 +7,14 @@ import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController -public class RestApplication { +public class RequestServiceApplication { public static void main(String[] args) { - SpringApplication.run(RestApplication.class, args); + SpringApplication.run(RequestServiceApplication.class, args); } @GetMapping("/hello") public String hello() { - return "Hello from REST!"; + return "Hello from Request Service!"; } } diff --git a/helpapp/administration-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/user-service/src/main/java/insa/application/helpapp/rest/UserServiceApplication.java similarity index 74% rename from helpapp/administration-service/src/main/java/insa/application/helpapp/rest/RestApplication.java rename to helpapp/user-service/src/main/java/insa/application/helpapp/rest/UserServiceApplication.java index 2e82618..981d27c 100644 --- a/helpapp/administration-service/src/main/java/insa/application/helpapp/rest/RestApplication.java +++ b/helpapp/user-service/src/main/java/insa/application/helpapp/rest/UserServiceApplication.java @@ -7,14 +7,14 @@ import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController -public class RestApplication { +public class UserServiceApplication { public static void main(String[] args) { - SpringApplication.run(RestApplication.class, args); + SpringApplication.run(UserServiceApplication.class, args); } @GetMapping("/hello") public String hello() { - return "Hello from REST!"; + return "Hello from User Service!"; } } diff --git a/helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/RestApplication.java deleted file mode 100644 index 2e82618..0000000 --- a/helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/RestApplication.java +++ /dev/null @@ -1,20 +0,0 @@ -package insa.application.helpapp.rest; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@SpringBootApplication -@RestController -public class RestApplication { - - public static void main(String[] args) { - SpringApplication.run(RestApplication.class, args); - } - - @GetMapping("/hello") - public String hello() { - return "Hello from REST!"; - } -} diff --git a/helpapp/user-service/src/main/java/insa/application/helpapp/rest/RestApplication.java b/helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/VolunteerServiceApplication.java similarity index 72% rename from helpapp/user-service/src/main/java/insa/application/helpapp/rest/RestApplication.java rename to helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/VolunteerServiceApplication.java index 2e82618..41dfd4c 100644 --- a/helpapp/user-service/src/main/java/insa/application/helpapp/rest/RestApplication.java +++ b/helpapp/volunteer-service/src/main/java/insa/application/helpapp/rest/VolunteerServiceApplication.java @@ -7,14 +7,14 @@ import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController -public class RestApplication { +public class VolunteerServiceApplication { public static void main(String[] args) { - SpringApplication.run(RestApplication.class, args); + SpringApplication.run(VolunteerServiceApplication.class, args); } @GetMapping("/hello") public String hello() { - return "Hello from REST!"; + return "Hello from Volunteer Service!"; } } From a38b30b3c213817f90272fac5bc489d0a3f7b0c4 Mon Sep 17 00:00:00 2001 From: Lemonochrme Date: Sat, 14 Dec 2024 17:12:22 +0100 Subject: [PATCH 8/9] Implement user management endpoints using hashmap storage for now (we will have to implement database later): create, retrieve, update, and delete users --- .../helpapp/rest/UserServiceApplication.java | 88 +++++++++++++++++-- 1 file changed, 83 insertions(+), 5 deletions(-) diff --git a/helpapp/user-service/src/main/java/insa/application/helpapp/rest/UserServiceApplication.java b/helpapp/user-service/src/main/java/insa/application/helpapp/rest/UserServiceApplication.java index 981d27c..a2d7b66 100644 --- a/helpapp/user-service/src/main/java/insa/application/helpapp/rest/UserServiceApplication.java +++ b/helpapp/user-service/src/main/java/insa/application/helpapp/rest/UserServiceApplication.java @@ -2,19 +2,97 @@ package insa.application.helpapp.rest; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.*; +import java.util.concurrent.atomic.AtomicLong; @SpringBootApplication @RestController +@RequestMapping("/users") public class UserServiceApplication { + private final Map userDatabase = new HashMap<>(); + private final AtomicLong idGenerator = new AtomicLong(1); + public static void main(String[] args) { SpringApplication.run(UserServiceApplication.class, args); } - @GetMapping("/hello") - public String hello() { - return "Hello from User Service!"; + // Create a new user + @PostMapping + public User createUser(@RequestBody User user) { + long id = idGenerator.getAndIncrement(); + user.setId(id); + userDatabase.put(id, user); + return user; + } + + // Get a user by ID + @GetMapping("/{id}") + public User getUser(@PathVariable Long id) { + return Optional.ofNullable(userDatabase.get(id)) + .orElseThrow(() -> new RuntimeException("User not found")); + } + + // Update a user by ID + @PutMapping("/{id}") + public User updateUser(@PathVariable Long id, @RequestBody User updatedUser) { + if (!userDatabase.containsKey(id)) { + throw new RuntimeException("User not found"); + } + updatedUser.setId(id); + userDatabase.put(id, updatedUser); + return updatedUser; + } + + // Delete a user by ID + @DeleteMapping("/{id}") + public String deleteUser(@PathVariable Long id) { + if (userDatabase.remove(id) == null) { + throw new RuntimeException("User not found"); + } + return "User deleted successfully"; + } + + // User entity + static class User { + private Long id; + private String name; + private String email; + private String role; + + // Getters and setters + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } } } From 8f6d03291b7130877ced850ae1d8e5ea9cbd3b46 Mon Sep 17 00:00:00 2001 From: Lemonochrme Date: Sat, 14 Dec 2024 17:24:40 +0100 Subject: [PATCH 9/9] Added RequestServiceApplication enpoints --- .../rest/RequestServiceApplication.java | 100 +++++++++++++++++- 1 file changed, 95 insertions(+), 5 deletions(-) diff --git a/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java b/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java index c88afd2..f0e8f87 100644 --- a/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java +++ b/helpapp/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java @@ -2,19 +2,109 @@ package insa.application.helpapp.rest; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.*; +import java.util.concurrent.atomic.AtomicLong; @SpringBootApplication @RestController +@RequestMapping("/requests") public class RequestServiceApplication { + private final Map requestDatabase = new HashMap<>(); + private final AtomicLong idGenerator = new AtomicLong(1); + public static void main(String[] args) { SpringApplication.run(RequestServiceApplication.class, args); } - @GetMapping("/hello") - public String hello() { - return "Hello from Request Service!"; + // Create a new help request + @PostMapping + public HelpRequest createRequest(@RequestBody HelpRequest request) { + long id = idGenerator.getAndIncrement(); + request.setId(id); + request.setStatus("Pending"); + requestDatabase.put(id, request); + return request; + } + + // Get all requests (with optional status filter) + @GetMapping + public List getAllRequests(@RequestParam(required = false) String status) { + if (status == null) { + return new ArrayList<>(requestDatabase.values()); + } + List filteredRequests = new ArrayList<>(); + for (HelpRequest request : requestDatabase.values()) { + if (request.getStatus().equalsIgnoreCase(status)) { + filteredRequests.add(request); + } + } + return filteredRequests; + } + + // Get a specific request by ID + @GetMapping("/{id}") + public HelpRequest getRequest(@PathVariable Long id) { + return Optional.ofNullable(requestDatabase.get(id)) + .orElseThrow(() -> new RuntimeException("Request not found")); + } + + // Update a request (e.g., status or details) + @PutMapping("/{id}") + public HelpRequest updateRequest(@PathVariable Long id, @RequestBody HelpRequest updatedRequest) { + if (!requestDatabase.containsKey(id)) { + throw new RuntimeException("Request not found"); + } + HelpRequest existingRequest = requestDatabase.get(id); + if (updatedRequest.getDetails() != null) { + existingRequest.setDetails(updatedRequest.getDetails()); + } + if (updatedRequest.getStatus() != null) { + existingRequest.setStatus(updatedRequest.getStatus()); + } + return existingRequest; + } + + // Delete a request + @DeleteMapping("/{id}") + public String deleteRequest(@PathVariable Long id) { + if (requestDatabase.remove(id) == null) { + throw new RuntimeException("Request not found"); + } + return "Request deleted successfully"; + } + + // HelpRequest entity + static class HelpRequest { + private Long id; + private String details; + private String status; // e.g., Pending, Validated, Rejected, Completed + + // Getters and setters + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } } }