Compare commits

..

No commits in common. 'develop' and 'main' have entirely different histories.

  1. 4
      .gitignore
  2. 1
      .mvn/wrapper/.gitignore
  3. 142
      .mvn/wrapper/MavenWrapperDownloader.java
  4. 18
      .mvn/wrapper/maven-wrapper.properties
  5. 17
      .vscode/launch.json
  6. 3
      .vscode/settings.json
  7. 71
      .vscode/tasks.json
  8. 10
      Dockerfile
  9. 123
      Jenkinsfile
  10. 108
      README.md
  11. 14
      compose/dev/docker-compose.yml
  12. 14
      compose/prod/docker-compose.yml
  13. 316
      mvnw
  14. 188
      mvnw.cmd
  15. 137
      pom.xml
  16. 94
      src/main/docker/Dockerfile.jvm
  17. 90
      src/main/docker/Dockerfile.legacy-jar
  18. 27
      src/main/docker/Dockerfile.native
  19. 30
      src/main/docker/Dockerfile.native-micro
  20. 16
      src/main/java/api/menu/playa/GreetingResource.java
  21. 13
      src/main/java/api/menu/playa/annotation/Roles.java
  22. 132
      src/main/java/api/menu/playa/controller/LoginController.java
  23. 140
      src/main/java/api/menu/playa/controller/OrdenController.java
  24. 112
      src/main/java/api/menu/playa/controller/ProductoController.java
  25. 11
      src/main/java/api/menu/playa/dao/DetalleDAO.java
  26. 18
      src/main/java/api/menu/playa/dao/OrdenDAO.java
  27. 23
      src/main/java/api/menu/playa/dao/PrecioDAO.java
  28. 20
      src/main/java/api/menu/playa/dao/ProductoDAO.java
  29. 15
      src/main/java/api/menu/playa/dao/UsuarioDAO.java
  30. 7
      src/main/java/api/menu/playa/enums/CambioCantidadEnum.java
  31. 7
      src/main/java/api/menu/playa/enums/EstadoOrdenEnum.java
  32. 8
      src/main/java/api/menu/playa/enums/MedioPagoEnum.java
  33. 7
      src/main/java/api/menu/playa/enums/RolesEnum.java
  34. 21
      src/main/java/api/menu/playa/exceptions/NegocioException.java
  35. 136
      src/main/java/api/menu/playa/helper/LoginHelper.java
  36. 250
      src/main/java/api/menu/playa/helper/OrdenHelper.java
  37. 166
      src/main/java/api/menu/playa/helper/ProductoHelper.java
  38. 43
      src/main/java/api/menu/playa/helper/TokenService.java
  39. 48
      src/main/java/api/menu/playa/model/AbstractGeneral.java
  40. 100
      src/main/java/api/menu/playa/model/Detalle.java
  41. 84
      src/main/java/api/menu/playa/model/Orden.java
  42. 68
      src/main/java/api/menu/playa/model/Precio.java
  43. 124
      src/main/java/api/menu/playa/model/Producto.java
  44. 104
      src/main/java/api/menu/playa/model/Usuario.java
  45. 108
      src/main/java/api/menu/playa/util/TokenUtils.java
  46. 42
      src/main/java/api/menu/playa/vo/CambioCantidadVO.java
  47. 56
      src/main/java/api/menu/playa/vo/DetalleVO.java
  48. 79
      src/main/java/api/menu/playa/vo/OrdenVO.java
  49. 32
      src/main/java/api/menu/playa/vo/PagadoVO.java
  50. 29
      src/main/java/api/menu/playa/vo/ProductoIdVO.java
  51. 56
      src/main/java/api/menu/playa/vo/ProductoVO.java
  52. 36
      src/main/java/api/menu/playa/vo/RegistroVO.java
  53. 50
      src/main/java/api/menu/playa/vo/ResponseGlobal.java
  54. 22
      src/main/java/api/menu/playa/vo/UsuarioVO.java
  55. 286
      src/main/resources/META-INF/resources/index.html
  56. 43
      src/main/resources/application.properties
  57. 28
      src/main/resources/privatekey.pem
  58. 9
      src/main/resources/publickey.pem

4
.gitignore vendored

@ -24,7 +24,3 @@
hs_err_pid*
replay_pid*
target/
logs/
.vscode/

@ -1 +0,0 @@
maven-wrapper.jar

@ -1,142 +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.
*/
import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;
public class MavenWrapperDownloader
{
private static final String WRAPPER_VERSION = "3.1.1";
/**
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
*/
private static final String DEFAULT_DOWNLOAD_URL =
"https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/" + WRAPPER_VERSION
+ "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
/**
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to use instead of the
* default one.
*/
private static final String MAVEN_WRAPPER_PROPERTIES_PATH = ".mvn/wrapper/maven-wrapper.properties";
/**
* Path where the maven-wrapper.jar will be saved to.
*/
private static final String MAVEN_WRAPPER_JAR_PATH = ".mvn/wrapper/maven-wrapper.jar";
/**
* Name of the property which should be used to override the default download url for the wrapper.
*/
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
public static void main( String args[] )
{
System.out.println( "- Downloader started" );
File baseDirectory = new File( args[0] );
System.out.println( "- Using base directory: " + baseDirectory.getAbsolutePath() );
// If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter.
File mavenWrapperPropertyFile = new File( baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH );
String url = DEFAULT_DOWNLOAD_URL;
if ( mavenWrapperPropertyFile.exists() )
{
FileInputStream mavenWrapperPropertyFileInputStream = null;
try
{
mavenWrapperPropertyFileInputStream = new FileInputStream( mavenWrapperPropertyFile );
Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load( mavenWrapperPropertyFileInputStream );
url = mavenWrapperProperties.getProperty( PROPERTY_NAME_WRAPPER_URL, url );
}
catch ( IOException e )
{
System.out.println( "- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'" );
}
finally
{
try
{
if ( mavenWrapperPropertyFileInputStream != null )
{
mavenWrapperPropertyFileInputStream.close();
}
}
catch ( IOException e )
{
// Ignore ...
}
}
}
System.out.println( "- Downloading from: " + url );
File outputFile = new File( baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH );
if ( !outputFile.getParentFile().exists() )
{
if ( !outputFile.getParentFile().mkdirs() )
{
System.out.println( "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath()
+ "'" );
}
}
System.out.println( "- Downloading to: " + outputFile.getAbsolutePath() );
try
{
downloadFileFromURL( url, outputFile );
System.out.println( "Done" );
System.exit( 0 );
}
catch ( Throwable e )
{
System.out.println( "- Error downloading" );
e.printStackTrace();
System.exit( 1 );
}
}
private static void downloadFileFromURL( String urlString, File destination )
throws Exception
{
if ( System.getenv( "MVNW_USERNAME" ) != null && System.getenv( "MVNW_PASSWORD" ) != null )
{
String username = System.getenv( "MVNW_USERNAME" );
char[] password = System.getenv( "MVNW_PASSWORD" ).toCharArray();
Authenticator.setDefault( new Authenticator()
{
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication( username, password );
}
} );
}
URL website = new URL( urlString );
ReadableByteChannel rbc;
rbc = Channels.newChannel( website.openStream() );
FileOutputStream fos = new FileOutputStream( destination );
fos.getChannel().transferFrom( rbc, 0, Long.MAX_VALUE );
fos.close();
rbc.close();
}
}

@ -1,18 +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.
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar

@ -1,17 +0,0 @@
// A launch configuration that compiles the extension and then opens it inside a new window
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
{
"version": "0.2.0",
"configurations": [
{
"preLaunchTask": "quarkus:dev",
"type": "java",
"request": "attach",
"hostName": "localhost",
"name": "Debug Quarkus application",
"port": 5005
}
]
}

@ -1,3 +0,0 @@
{
"java.configuration.updateBuildConfiguration": "automatic"
}

71
.vscode/tasks.json vendored

@ -1,71 +0,0 @@
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"isBackground": true,
"problemMatcher": [
{
"owner": "quarkus",
"fileLocation": [
"relative",
"${workspaceFolder}/src/main/resources/templates"
],
"pattern": [
{
"regexp": "\\[(\\d+)\\]\\s(.*):(\\d+):(\\d+)\\s\\-\\s{(.*)}:\\s(.*)$",
"file": 2,
"line": 3,
"column": 4,
"message": 6
}
],
"background": {
"activeOnStart": true,
"beginsPattern": "^.*Scanning for projects...",
"endsPattern": "(^.*Quarkus .* started in .*\\.)|(^.* ERROR .* Failed to start)"
}
}
],
"group": "build",
"label": "quarkus:dev",
"command": "./mvnw quarkus:dev ",
"windows": {
"command": ".\\mvnw.cmd quarkus:dev "
}
},
{
"type": "shell",
"isBackground": true,
"problemMatcher": [
{
"owner": "quarkus",
"fileLocation": [
"relative",
"${workspaceFolder}/src/main/resources/templates"
],
"pattern": [
{
"regexp": "\\[(\\d+)\\]\\s(.*):(\\d+):(\\d+)\\s\\-\\s{(.*)}:\\s(.*)$",
"file": 2,
"line": 3,
"column": 4,
"message": 6
}
],
"background": {
"activeOnStart": true
}
}
],
"group": "build",
"label": "package -Pnative",
"command": "./mvnw package -Pnative ",
"windows": {
"command": ".\\mvnw.cmd package -Pnative "
}
}
]
}

@ -1,10 +0,0 @@
FROM amazoncorretto:11-alpine-full
WORKDIR /work
COPY target/*-runner.jar /work/application.jar
ENV TZ="America/Santiago"
ENV MS_PORT=8080
EXPOSE 8080
CMD ["java","-jar","application.jar"]

123
Jenkinsfile vendored

@ -1,123 +0,0 @@
pipeline {
agent {
node {
label 'MachineSlave1'
}
}
environment {
SUCCESS = 'true'
STAGE = 'none'
IMAGE_DOCKER = 'registry.vodorod.cl/deal/tienda-playa-servicio:latest'
}
stages {
stage('Quarkus Compile') {
steps {
sh 'chmod +x mvnw && ./mvnw package -Dquarkus.package.type=uber-jar -Dquarkus.profile=prod'
}
post {
success {
script {
SUCCESS = 'true'
STAGE = 'Quarkus Compile'
}
}
failure {
script {
SUCCESS = 'false'
STAGE = 'Quarkus Compile'
}
}
aborted {
script {
SUCCESS = 'false'
STAGE = 'Quarkus Compile'
}
}
}
}
stage('Docker Build') {
when { equals expected: 'true', actual: SUCCESS }
steps {
sh 'docker build -t ${IMAGE_DOCKER} .'
}
post {
success {
script {
SUCCESS = 'true'
STAGE = 'Docker Build'
}
}
failure {
script {
SUCCESS = 'false'
STAGE = 'Docker Build'
}
}
aborted {
script {
SUCCESS = 'false'
STAGE = 'Docker Build'
}
}
}
}
stage('Docker Push') {
when { equals expected: 'true', actual: SUCCESS }
steps {
withCredentials([usernamePassword(credentialsId: 'vodorodRegistry', passwordVariable: 'vodorodRegistryPassword', usernameVariable: 'vodorodRegistryUser')]) {
sh "docker login registry.vodorod.cl -u ${env.vodorodRegistryUser} -p ${env.vodorodRegistryPassword}"
sh 'docker push ${IMAGE_DOCKER}'
}
}
post {
success {
script {
SUCCESS = 'true'
STAGE = 'Docker Push'
}
}
failure {
script {
SUCCESS = 'false'
STAGE = 'Docker Push'
}
}
aborted {
script {
SUCCESS = 'false'
STAGE = 'Docker Push'
}
}
}
}
}
post {
success {
script {
withCredentials([string(credentialsId: 'telegramToken', variable: 'TOKEN'), string(credentialsId: 'telegramChatId', variable: 'CHAT_ID')]) {
sh """
curl -s -X POST https://api.telegram.org/bot${TOKEN}/sendMessage -d chat_id=${CHAT_ID} -d parse_mode="HTML" -d text="<b>Project</b> : ${env.JOB_NAME} \n<b>Branch</b>: ${BRANCH_NAME} \n<b>Build </b> : Complete \n<b>Status</b> : Passed \n<b>Node</b> : ${env.NODE_NAME}"
"""
}
}
}
failure {
script {
withCredentials([string(credentialsId: 'telegramToken', variable: 'TOKEN'), string(credentialsId: 'telegramChatId', variable: 'CHAT_ID')]) {
sh """
curl -s -X POST https://api.telegram.org/bot${TOKEN}/sendMessage -d chat_id=${CHAT_ID} -d parse_mode="HTML" -d text="<b>Project</b> : ${env.JOB_NAME} \n<b>Branch</b>: ${BRANCH_NAME} \n<b>Build </b> : ${STAGE} \n<b>Status</b> : Failed \n<b>Node</b> : ${env.NODE_NAME}"
"""
}
}
}
aborted {
script {
withCredentials([string(credentialsId: 'telegramToken', variable: 'TOKEN'), string(credentialsId: 'telegramChatId', variable: 'CHAT_ID')]) {
sh """
curl -s -X POST https://api.telegram.org/bot${TOKEN}/sendMessage -d chat_id=${CHAT_ID} -d parse_mode="HTML" -d text="<b>Project</b> : ${env.JOB_NAME} \n<b>Branch</b>: ${BRANCH_NAME} \n<b>Build </b> : ${STAGE} \n<b>Status</b> : Aborted \n<b>Node</b> : ${env.NODE_NAME}"
"""
}
}
}
}
}

@ -1,108 +1,2 @@
# Funcionamiento
# api-menu-playa
```
compilar con ./mvnw package -Dquarkus.package.type=uber-jar
ejecutar con java
```
## Iniciar start.sh
```
#!/bin/bash
nohup java -Xmx384m -Xss1024k -Dlog4j.configurationFile=config/log4j2.xml -jar api-menu-playa-1.1.2-runner.jar > output.log 2>&1&
#nohup ./api-menu-playa-1.1.1-runner > output.log 2>&1&
echo $! > pid
```
## Detener stop.sh
```
#!/bin/bash
kill -9 `cat pid`
```
## Faltantes
eliminacion de una orden
## Environment
|variable|descripción|
|--------|--------|
|DATABASE_USER| usuario de base de datos|
|DATABASE_PASS| contraseña de base de datos|
|DATABASE_JDBC| conexion jdbc de la base de datos|
|CONFIG_PUBLIC_KEY| ruta del archivo public key|
|CONFIG_PRIVATE_KEY| ruta del archivo private key|
# api-menu-playa Project
This project uses Quarkus, the Supersonic Subatomic Java Framework.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
## Running the application in dev mode
You can run your application in dev mode that enables live coding using:
```shell script
./mvnw compile quarkus:dev
```
> **_NOTE:_** Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
## Packaging and running the application
The application can be packaged using:
```shell script
./mvnw package
```
It produces the `quarkus-run.jar` file in the `target/quarkus-app/` directory.
Be aware that it’s not an _über-jar_ as the dependencies are copied into the `target/quarkus-app/lib/` directory.
The application is now runnable using `java -jar target/quarkus-app/quarkus-run.jar`.
If you want to build an _über-jar_, execute the following command:
```shell script
./mvnw package -Dquarkus.package.type=uber-jar
```
The application, packaged as an _über-jar_, is now runnable using `java -jar target/*-runner.jar`.
## Creating a native executable
You can create a native executable using:
```shell script
./mvnw package -Pnative
```
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
```shell script
./mvnw package -Pnative -Dquarkus.native.container-build=true
```
You can then execute your native executable with: `./target/api-menu-playa-1.0.0-runner`
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.
## Related Guides
- RESTEasy Reactive ([guide](https://quarkus.io/guides/resteasy-reactive)): A JAX-RS implementation utilizing build time processing and Vert.x. This extension is not compatible with the quarkus-resteasy extension, or any of the extensions that depend on it.
- Quarkus Extension for Spring Data JPA API ([guide](https://quarkus.io/guides/spring-data-jpa)): Use Spring Data JPA annotations to create your data access layer
- JDBC Driver - PostgreSQL ([guide](https://quarkus.io/guides/datasource)): Connect to the PostgreSQL database via JDBC
## Provided Code
### RESTEasy Reactive
Easily start your Reactive RESTful Web Services
[Related guide section...](https://quarkus.io/guides/getting-started-reactive#reactive-jax-rs-resources)
./mvnw package -Pnative -Dquarkus.native.container-build=true -Dquarkus.profile=prod

@ -1,14 +0,0 @@
version: '3.9'
services:
servicio:
image: registry.vodorod.cl/deal/tienda-playa-servicio:latest
restart: always
ports:
- "8181:8080"
environment:
DATABASE_USER: 'postgres'
DATABASE_PASS: '13467982'
DATABASE_JDBC: 'jdbc:postgresql://192.168.1.4:5432/postgres?currentSchema=playa'
volumes:
- ./logs:/work/logs

@ -1,14 +0,0 @@
version: '3.9'
services:
servicio:
image: registry.vodorod.cl/deal/tienda-playa-servicio:latest
restart: always
ports:
- "8181:8080"
environment:
DATABASE_USER: 'playa_tienda'
DATABASE_PASS: 'ED8eqKY5ZyQAH9px'
DATABASE_JDBC: 'jdbc:postgresql://45.236.128.250:5432/postgres?currentSchema=playa'
volumes:
- ./logs:/work/logs

316
mvnw vendored

@ -1,316 +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
#
# https://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.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /usr/local/etc/mavenrc ] ; then
. /usr/local/etc/mavenrc
fi
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="`/usr/libexec/java_home`"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
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"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`\\unset -f command; \\command -v java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]
then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=`cd "$wdir/.."; pwd`
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
exit 1;
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
if [ -n "$MVNW_REPOURL" ]; then
jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
else
jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
fi
while IFS="=" read key value; do
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
esac
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
if [ "$MVNW_VERBOSE" = true ]; then
echo "Downloading from: $jarUrl"
fi
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
if $cygwin; then
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
fi
if command -v wget > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found wget ... using wget"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
else
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
fi
elif command -v curl > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found curl ... using curl"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
curl -o "$wrapperJarPath" "$jarUrl" -f
else
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Falling back to using Java to download"
fi
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
# For Cygwin, switch paths to Windows format before running javac
if $cygwin; then
javaClass=`cygpath --path --windows "$javaClass"`
fi
if [ -e "$javaClass" ]; then
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
("$JAVA_HOME/bin/javac" "$javaClass")
fi
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
# Running the downloader
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Running MavenWrapperDownloader.java ..."
fi
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
$MAVEN_DEBUG_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" \
"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

188
mvnw.cmd vendored

@ -1,188 +0,0 @@
@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 https://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 Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% ^
%JVM_CONFIG_MAVEN_PROPS% ^
%MAVEN_OPTS% ^
%MAVEN_DEBUG_OPTS% ^
-classpath %WRAPPER_JAR% ^
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
%WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%"=="on" pause
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
cmd /C exit /B %ERROR_CODE%

@ -1,137 +0,0 @@
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>api.menu.playa</groupId>
<artifactId>api-menu-playa</artifactId>
<version>1.1.4</version>
<properties>
<compiler-plugin.version>3.10.1</compiler-plugin.version>
<maven.compiler.release>11</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
<quarkus.platform.version>2.15.1.Final</quarkus.platform.version>
<skipITs>true</skipITs>
<surefire-plugin.version>3.0.0-M7</surefire-plugin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>${quarkus.platform.artifact-id}</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-jackson</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-spring-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-jwt</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.platform.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>build</goal>
<goal>generate-code</goal>
<goal>generate-code-tests</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<configuration>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<systemPropertyVariables>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home>
</systemPropertyVariables>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<properties>
<skipITs>false</skipITs>
<quarkus.package.type>native</quarkus.package.type>
</properties>
</profile>
</profiles>
</project>

@ -1,94 +0,0 @@
####
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
#
# Before building the container image run:
#
# ./mvnw package
#
# Then, build the image with:
#
# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/api-menu-playa-jvm .
#
# Then run the container using:
#
# docker run -i --rm -p 8080:8080 quarkus/api-menu-playa-jvm
#
# If you want to include the debug port into your docker image
# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005
#
# Then run the container using :
#
# docker run -i --rm -p 8080:8080 quarkus/api-menu-playa-jvm
#
# This image uses the `run-java.sh` script to run the application.
# This scripts computes the command line to execute your Java application, and
# includes memory/GC tuning.
# You can configure the behavior using the following environment properties:
# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class")
# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
# in JAVA_OPTS (example: "-Dsome.property=foo")
# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
# used to calculate a default maximal heap memory based on a containers restriction.
# If used in a container without any memory constraints for the container then this
# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
# of the container available memory as set here. The default is `50` which means 50%
# of the available memory is used as an upper boundary. You can skip this mechanism by
# setting this value to `0` in which case no `-Xmx` option is added.
# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
# is used to calculate a default initial heap memory based on the maximum heap memory.
# If used in a container without any memory constraints for the container then this
# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
# is used as the initial heap size. You can skip this mechanism by setting this value
# to `0` in which case no `-Xms` option is added (example: "25")
# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
# This is used to calculate the maximum value of the initial heap memory. If used in
# a container without any memory constraints for the container then this option has
# no effect. If there is a memory constraint then `-Xms` is limited to the value set
# here. The default is 4096MB which means the calculated value of `-Xms` never will
# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
# when things are happening. This option, if set to true, will set
# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
# true").
# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
# - CONTAINER_CORE_LIMIT: A calculated core limit as described in
# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
# (example: "20")
# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
# (example: "40")
# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
# (example: "4")
# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
# previous GC times. (example: "90")
# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
# contain the necessary JRE command-line options to specify the required GC, which
# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080")
# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080")
# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
# accessed directly. (example: "foo.example.com,bar.example.com")
#
###
FROM registry.access.redhat.com/ubi8/openjdk-11:1.14
ENV LANGUAGE='en_US:en'
# We make four distinct layers so if there are application changes the library layers can be re-used
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
COPY --chown=185 target/quarkus-app/*.jar /deployments/
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
EXPOSE 8080
USER 185
ENV AB_JOLOKIA_OFF=""
ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"

@ -1,90 +0,0 @@
####
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
#
# Before building the container image run:
#
# ./mvnw package -Dquarkus.package.type=legacy-jar
#
# Then, build the image with:
#
# docker build -f src/main/docker/Dockerfile.legacy-jar -t quarkus/api-menu-playa-legacy-jar .
#
# Then run the container using:
#
# docker run -i --rm -p 8080:8080 quarkus/api-menu-playa-legacy-jar
#
# If you want to include the debug port into your docker image
# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005
#
# Then run the container using :
#
# docker run -i --rm -p 8080:8080 quarkus/api-menu-playa-legacy-jar
#
# This image uses the `run-java.sh` script to run the application.
# This scripts computes the command line to execute your Java application, and
# includes memory/GC tuning.
# You can configure the behavior using the following environment properties:
# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class")
# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
# in JAVA_OPTS (example: "-Dsome.property=foo")
# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
# used to calculate a default maximal heap memory based on a containers restriction.
# If used in a container without any memory constraints for the container then this
# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
# of the container available memory as set here. The default is `50` which means 50%
# of the available memory is used as an upper boundary. You can skip this mechanism by
# setting this value to `0` in which case no `-Xmx` option is added.
# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
# is used to calculate a default initial heap memory based on the maximum heap memory.
# If used in a container without any memory constraints for the container then this
# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
# is used as the initial heap size. You can skip this mechanism by setting this value
# to `0` in which case no `-Xms` option is added (example: "25")
# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
# This is used to calculate the maximum value of the initial heap memory. If used in
# a container without any memory constraints for the container then this option has
# no effect. If there is a memory constraint then `-Xms` is limited to the value set
# here. The default is 4096MB which means the calculated value of `-Xms` never will
# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
# when things are happening. This option, if set to true, will set
# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
# true").
# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
# - CONTAINER_CORE_LIMIT: A calculated core limit as described in
# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
# (example: "20")
# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
# (example: "40")
# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
# (example: "4")
# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
# previous GC times. (example: "90")
# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
# contain the necessary JRE command-line options to specify the required GC, which
# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
# - HTTPS_PROXY: The location of the https proxy. (example: "myuser@127.0.0.1:8080")
# - HTTP_PROXY: The location of the http proxy. (example: "myuser@127.0.0.1:8080")
# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
# accessed directly. (example: "foo.example.com,bar.example.com")
#
###
FROM registry.access.redhat.com/ubi8/openjdk-11:1.14
ENV LANGUAGE='en_US:en'
COPY target/lib/* /deployments/lib/
COPY target/*-runner.jar /deployments/quarkus-run.jar
EXPOSE 8080
USER 185
ENV AB_JOLOKIA_OFF=""
ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"

@ -1,27 +0,0 @@
####
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
#
# Before building the container image run:
#
# ./mvnw package -Pnative
#
# Then, build the image with:
#
# docker build -f src/main/docker/Dockerfile.native -t quarkus/api-menu-playa .
#
# Then run the container using:
#
# docker run -i --rm -p 8080:8080 quarkus/api-menu-playa
#
###
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6
WORKDIR /work/
RUN chown 1001 /work \
&& chmod "g+rwX" /work \
&& chown 1001:root /work
COPY --chown=1001:root target/*-runner /work/application
EXPOSE 8080
USER 1001
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]

@ -1,30 +0,0 @@
####
# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode.
# It uses a micro base image, tuned for Quarkus native executables.
# It reduces the size of the resulting container image.
# Check https://quarkus.io/guides/quarkus-runtime-base-image for further information about this image.
#
# Before building the container image run:
#
# ./mvnw package -Pnative
#
# Then, build the image with:
#
# docker build -f src/main/docker/Dockerfile.native-micro -t quarkus/api-menu-playa .
#
# Then run the container using:
#
# docker run -i --rm -p 8080:8080 quarkus/api-menu-playa
#
###
FROM quay.io/quarkus/quarkus-micro-image:1.0
WORKDIR /work/
RUN chown 1001 /work \
&& chmod "g+rwX" /work \
&& chown 1001:root /work
COPY --chown=1001:root target/*-runner /work/application
EXPOSE 8080
USER 1001
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]

@ -1,16 +0,0 @@
package api.menu.playa;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from RESTEasy Reactive";
}
}

@ -1,13 +0,0 @@
package api.menu.playa.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Roles {
public String[] rols();
}

@ -1,132 +0,0 @@
package api.menu.playa.controller;
import java.util.Collections;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.eclipse.microprofile.jwt.JsonWebToken;
import org.jboss.logging.Logger;
import api.menu.playa.enums.RolesEnum;
import api.menu.playa.exceptions.NegocioException;
import api.menu.playa.helper.LoginHelper;
import api.menu.playa.vo.RegistroVO;
import api.menu.playa.vo.ResponseGlobal;
import api.menu.playa.vo.UsuarioVO;
@RequestScoped
@Path("/user")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class LoginController {
private static final String SUCCESS = "SUCCESS";
private static final String ERROR = "ERROR";
@Inject
Logger logger;
@Inject
JsonWebToken jwt;
@Inject
LoginHelper loginHelper;
@POST
@Path("login")
public Response login(UsuarioVO request) {
try {
String token = loginHelper.validarUsuario(request);
return Response.ok(new ResponseGlobal<>(0, SUCCESS, token)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
} catch (Exception e) {
logger.error(e);
return Response.ok(new ResponseGlobal<>(1, ERROR)).build();
}
}
@POST
@Path("register")
public Response register(RegistroVO request) {
try {
validacionPassword(request);
loginHelper.registrarUsuario(request);
return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
} catch (Exception e) {
return Response.ok(new ResponseGlobal<>(1, ERROR)).build();
}
}
@GET
@Path("token")
public Response token() {
try {
String token = loginHelper.tokenGenerator("darroyo", Collections.singleton(RolesEnum.USER), 3600L, "www.vodorod.cl");
return Response.ok(new ResponseGlobal<>(0, SUCCESS, token)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
} catch (Exception e) {
return Response.ok(new ResponseGlobal<>(1, ERROR)).build();
}
}
/* @GET
@Path("valida")
public Response validaToken(@RestHeader("Authorization") String token) {
try {
String user = loginHelper.validaToken(token);
return Response.ok(new ResponseGlobal<>(0, SUCCESS, user)).build();
} catch (Exception e) {
return Response.ok(new ResponseGlobal<>(1, ERROR)).build();
}
} */
private void validacionPassword(RegistroVO request) throws NegocioException {
if (request.getUser() == null || request.getUser().isEmpty()) {
throw new NegocioException("el campo usuario debe ser ingresado", 2);
}
if (request.getNombre() == null || request.getNombre().isEmpty()) {
throw new NegocioException("el campo nombre debe ser ingresado", 2);
}
if (request.getPass() == null || request.getPass().isEmpty()) {
throw new NegocioException("el campo contreseña debe ser ingresado", 2);
}
if (request.getPass2() == null || request.getPass2().isEmpty()) {
throw new NegocioException("el campo confirmar contraseña debe ser ingresado", 2);
}
if (!request.getPass().equals(request.getPass2())) {
throw new NegocioException("los campos de contraseña no son iguales", 2);
}
}
}

@ -1,140 +0,0 @@
package api.menu.playa.controller;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import api.menu.playa.exceptions.NegocioException;
import api.menu.playa.helper.OrdenHelper;
import api.menu.playa.vo.CambioCantidadVO;
import api.menu.playa.vo.OrdenVO;
import api.menu.playa.vo.PagadoVO;
import api.menu.playa.vo.ProductoIdVO;
import api.menu.playa.vo.ResponseGlobal;
import java.util.List;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@RequestScoped
@Path("/order")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class OrdenController {
private static final String SUCCESS = "SUCCESS";
//private static final String ERROR = "ERROR";
//@Inject
//JsonWebToken jwt;
@Inject
OrdenHelper ordenHelper;
/*
* Creacion de orden
*/
@RolesAllowed({"USER", "ADMIN"})
@GET
@Path("/create")
public Response create() {
Long id = ordenHelper.creacion();
return Response.ok(new ResponseGlobal<>(0, SUCCESS, id)).build();
}
@RolesAllowed({"USER", "ADMIN"})
@POST
@Path("/status")
public Response status(PagadoVO vo) {
try {
ordenHelper.actualizarOrden(vo);
return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
}
}
/*
* Agregar nuevo producto a la orden
*/
@RolesAllowed({"USER", "ADMIN"})
@POST
@Path("/add")
public Response add(ProductoIdVO vo) {
try {
ordenHelper.agregar(vo);
return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
}
}
@RolesAllowed({"USER", "ADMIN"})
@POST
@Path("/detail")
public Response detail( CambioCantidadVO vo) {
//Optional<String> userOptional = jwt.claim("preferred_username");
try {
ordenHelper.cambiar(vo);
return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
}
}
/*
* Obtener todas las ordenes
*/
@RolesAllowed({"USER", "ADMIN"})
@GET
@Path("/getall")
public Response getAll() {
List<OrdenVO> ordenes = ordenHelper.obtenerTodo();
return Response.ok(new ResponseGlobal<>(0, SUCCESS, ordenes)).build();
}
@RolesAllowed({"USER", "ADMIN"})
@GET
@Path("/get/{id}")
public Response get(@PathParam("id") Long id) {
OrdenVO orden = ordenHelper.obtener(id);
return Response.ok(new ResponseGlobal<>(0, SUCCESS, orden)).build();
}
@PermitAll
@GET
@Path("/getall/pedidos")
public Response getAllPrdidos() {
List<OrdenVO> ordenes = ordenHelper.obtenerPedidos();
return Response.ok(new ResponseGlobal<>(0, SUCCESS, ordenes)).build();
}
}

@ -1,112 +0,0 @@
package api.menu.playa.controller;
import java.util.List;
import javax.annotation.security.PermitAll;
import javax.annotation.security.RolesAllowed;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import api.menu.playa.exceptions.NegocioException;
import api.menu.playa.helper.ProductoHelper;
import api.menu.playa.vo.ProductoVO;
import api.menu.playa.vo.ResponseGlobal;
@RequestScoped
@Path("/product")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class ProductoController {
private static final String SUCCESS = "SUCCESS";
private static final String ERROR = "ERROR";
@Inject
ProductoHelper productoHelper;
@RolesAllowed({"ADMIN"})
@POST
@Path("/create")
public Response crearProducto(ProductoVO productoVO) {
productoHelper.creacion(productoVO);
return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build();
}
@RolesAllowed({"ADMIN"})
@PUT
@Path("/update")
public Response actualizarProducto(ProductoVO productoVO) {
try {
productoHelper.actualizar(productoVO);
return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
} catch (Exception e) {
return Response.ok(new ResponseGlobal<>(1, ERROR)).build();
}
}
@RolesAllowed({"ADMIN"})
@GET
@Path("/get/{id}")
public Response getProducto(@PathParam("id") Long id) {
try {
ProductoVO productoVO = productoHelper.obtener(id);
return Response.ok(new ResponseGlobal<>(0, SUCCESS, productoVO)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
} catch (Exception e) {
return Response.ok(new ResponseGlobal<>(1, ERROR)).build();
}
}
@RolesAllowed({"ADMIN", "USER"})
@GET
@Path("/getall")
public Response getProducts() {
List<ProductoVO> productos = productoHelper.obtenerProductos();
return Response.ok(new ResponseGlobal<>(0, SUCCESS, productos)).build();
}
@PermitAll
@GET
@Path("/getallmenu")
public Response getProductsMenu() {
List<ProductoVO> productos = productoHelper.obtenerProductosMenu();
return Response.ok(new ResponseGlobal<>(0, SUCCESS, productos)).build();
}
@RolesAllowed({"ADMIN"})
@DELETE
@Path("/delete/{id}")
public Response delete(@PathParam("id") Long id) {
try {
productoHelper.delete(id);
return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build();
} catch (NegocioException e) {
return Response.ok(new ResponseGlobal<>(e.getCode(), e.getMessage())).build();
} catch (Exception e) {
return Response.ok(new ResponseGlobal<>(1, ERROR)).build();
}
}
}

@ -1,11 +0,0 @@
package api.menu.playa.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import api.menu.playa.model.Detalle;
@Repository
public interface DetalleDAO extends JpaRepository<Detalle, Long> {
}

@ -1,18 +0,0 @@
package api.menu.playa.dao;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import api.menu.playa.model.Orden;
public interface OrdenDAO extends JpaRepository<Orden, Long> {
@Query("select o from Orden o where o.eliminado = false order by o.fechaCreacion desc")
List<Orden> getAll();
@Query("select o from Orden o where o.eliminado = false and o.entregado = false order by o.fechaCreacion asc")
List<Orden> getAllPedidos();
}

@ -1,23 +0,0 @@
package api.menu.playa.dao;
import java.util.Collection;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import api.menu.playa.model.Precio;
@Repository
public interface PrecioDAO extends JpaRepository<Precio, Long> {
@Query("select p from Precio p where p.eliminado = false and p.producto.id = :id")
Page<Precio> getPrecio(@Param("id") Long producto, Pageable pageable);
@Query("select p from Precio p where p.eliminado = false and p.producto.id = :id order by p.fechaCreacion desc")
Collection<Precio> getPrecio(@Param("id") Long producto);
}

@ -1,20 +0,0 @@
package api.menu.playa.dao;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import api.menu.playa.model.Producto;
@Repository
public interface ProductoDAO extends JpaRepository<Producto, Long> {
@Query("select p from Producto p where p.eliminado = false")
List<Producto> getAll();
@Query("select p from Producto p where p.eliminado = false and p.menu = true")
List<Producto> getAllMenu();
}

@ -1,15 +0,0 @@
package api.menu.playa.dao;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import api.menu.playa.model.Usuario;
public interface UsuarioDAO extends JpaRepository<Usuario, Long> {
@Query("select u from Usuario u where u.user = :usuario")
Optional<Usuario> encontrarUsuario(@Param("usuario") String usuario);
}

@ -1,7 +0,0 @@
package api.menu.playa.enums;
public enum CambioCantidadEnum {
MINUS,
PLUS
}

@ -1,7 +0,0 @@
package api.menu.playa.enums;
public enum EstadoOrdenEnum {
CREADA,
PAGADO
}

@ -1,8 +0,0 @@
package api.menu.playa.enums;
public enum MedioPagoEnum {
EFECTIVO,
TRANSFERENCIA,
TARJETA
}

@ -1,7 +0,0 @@
package api.menu.playa.enums;
public enum RolesEnum {
ADMIN,
USER
}

@ -1,21 +0,0 @@
package api.menu.playa.exceptions;
public class NegocioException extends Exception {
private Integer code;
public NegocioException(String message, Integer code) {
super(message);
this.code = code;
}
public Integer getCode() {
return code;
}
@Override
public String getMessage() {
return super.getMessage();
}
}

@ -1,136 +0,0 @@
package api.menu.playa.helper;
import java.security.Key;
import java.util.Base64;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.jboss.logging.Logger;
import api.menu.playa.dao.UsuarioDAO;
import api.menu.playa.enums.RolesEnum;
import api.menu.playa.exceptions.NegocioException;
import api.menu.playa.model.Usuario;
import api.menu.playa.vo.RegistroVO;
import api.menu.playa.vo.UsuarioVO;
import io.smallrye.jwt.build.Jwt;
@ApplicationScoped
public class LoginHelper {
@Inject
Logger logger;
@Inject
UsuarioDAO usuarioDAO;
@Inject
TokenService tokenService;
public void registrarUsuario(RegistroVO request) throws Exception {
Optional<Usuario> user = usuarioDAO.encontrarUsuario(request.getUser());
if (user.isPresent()) {
throw new NegocioException("El usuario ya existe", 2);
}
Usuario usuario = new Usuario();
usuario.setActivo(false);
usuario.setUser(request.getUser());
usuario.setPass(encript(request.getPass()));
usuario.setRol(RolesEnum.USER);
usuario.setNombre(request.getUser());
usuarioDAO.save(usuario);
}
public String validarUsuario(UsuarioVO request) throws Exception {
Optional<Usuario> user = usuarioDAO.encontrarUsuario(request.getUser());
logger.info("Usuario");
logger.info(user);
if (user.isEmpty()) {
throw new NegocioException("Usuario no existe en el sistema", 2);
}
String password = encript(request.getPass());
logger.info("Password encriptado");
logger.info(password);
if (Boolean.FALSE.equals(user.get().getActivo())) {
throw new NegocioException("Usuario no se encuentra activo", 2);
}
if (!password.equals(user.get().getPass())) {
throw new NegocioException("Usuario o contraseña es incorrecto", 2);
}
return tokenService.generate(user.get().getNombre(), user.get().getUser(), user.get().getFecha(), user.get().getRol());
//return TokenUtils.generateToken(user.get().getUser(), Collections.singleton(user.get().getRol()), 36000L, "https://vodorod.cl");
//return tokenGenerator(user.get().getUser(), Collections.singleton(user.get().getRol()), 36000L, "https://vodorod.cl");
}
private static String ENCRYPT_KEY = "clave-compartida-no-reveloar-nun";
private String encript(String text) throws Exception {
Key aesKey = new SecretKeySpec(ENCRYPT_KEY.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, aesKey);
byte[] encrypted = cipher.doFinal(text.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
}
/* private static String decrypt(String encrypted) throws Exception {
byte[] encryptedBytes = Base64.getDecoder().decode(encrypted.replace("\n", ""));
Key aesKey = new SecretKeySpec(ENCRYPT_KEY.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, aesKey);
String decrypted = new String(cipher.doFinal(encryptedBytes));
return decrypted;
} */
public int currentTimeInSecs() {
long currentTimeMS = System.currentTimeMillis();
return (int) (currentTimeMS / 1000);
}
public String tokenGenerator(String username, Set<RolesEnum> roles, Long duration, String issuer) throws Exception {
Set<String> groups = new HashSet<>();
for (RolesEnum role : roles) groups.add(role.toString());
return Jwt.claims()
.issuer(issuer)
.issuedAt(currentTimeInSecs())
.expiresAt(currentTimeInSecs() + duration)
.groups(groups)
.claim("nombre", username).jws()
.signWithSecret("issuer11111111111111111111111111");
}
}

@ -1,250 +0,0 @@
package api.menu.playa.helper;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import api.menu.playa.dao.DetalleDAO;
import api.menu.playa.dao.OrdenDAO;
import api.menu.playa.dao.PrecioDAO;
import api.menu.playa.dao.ProductoDAO;
import api.menu.playa.enums.EstadoOrdenEnum;
import api.menu.playa.exceptions.NegocioException;
import api.menu.playa.model.Detalle;
import api.menu.playa.model.Orden;
import api.menu.playa.model.Precio;
import api.menu.playa.model.Producto;
import api.menu.playa.vo.CambioCantidadVO;
import api.menu.playa.vo.DetalleVO;
import api.menu.playa.vo.OrdenVO;
import api.menu.playa.vo.PagadoVO;
import api.menu.playa.vo.ProductoIdVO;
@ApplicationScoped
public class OrdenHelper {
@Inject
OrdenDAO ordenDAO;
@Inject
ProductoDAO productoDAO;
@Inject
PrecioDAO precioDAO;
@Inject
DetalleDAO detalleDAO;
public Long creacion() {
Orden orden = new Orden();
orden.setEstado(EstadoOrdenEnum.CREADA);
orden = ordenDAO.save(orden);
return orden.getId();
}
public List<OrdenVO> obtenerTodo() {
List<Orden> ordenes = ordenDAO.getAll();
//List<OrdenVO> ordenVOs = mapperOrden(ordenes);
return mapperOrden(ordenes);
}
public OrdenVO obtener(Long id) {
Optional<Orden> orden = ordenDAO.findById(id);
if (orden.isEmpty()) {
}
return mapper(orden.get());
}
public void agregar(ProductoIdVO vo) throws NegocioException {
Optional<Orden> orden = ordenDAO.findById(vo.getOrden());
if (orden.isPresent()) {
if (EstadoOrdenEnum.PAGADO.equals(orden.get().getEstado())) {
throw new NegocioException("No se puede agregar productos a una orden pagada", 2);
}
}
if (orden.isEmpty()) {
throw new NegocioException("Orden no encontrada", 2);
}
Optional<Producto> producto = productoDAO.findById(vo.getProducto());
if (producto.isEmpty()) {
throw new NegocioException("Producto no encontrado", 2);
}
Collection<Precio> precios = precioDAO.getPrecio(vo.getProducto());
Precio precio = precios.stream().findFirst().get();
Detalle detalle = new Detalle();
detalle.setCantidad(vo.getCantidad());
detalle.setOrden(orden.get());
detalle.setProducto(producto.get());
detalle.setPrecio(precio);
detalleDAO.save(detalle);
}
public void cambiar(CambioCantidadVO vo) throws NegocioException {
Optional<Detalle> detalle = detalleDAO.findById(vo.getDetalle());
if (detalle.isEmpty()) {
throw new NegocioException("Detalle no encopntrado", 2);
}
if (vo.getDato() > 0) {
detalle.get().setCantidad(vo.getDato());
} else {
detalle.get().setEliminado(true);
}
detalle.get().setDescuento(vo.getDescuento());
detalle.get().setEntregado(vo.getEntregado());
detalleDAO.save(detalle.get());
evaluarProductosEntregados(detalle.get().getOrden().getId());
}
private void evaluarProductosEntregados(Long idOrden) throws NegocioException {
Optional<Orden> orden = ordenDAO.findById(idOrden);
if (orden.isEmpty()) {
throw new NegocioException("Orden no encontrada", 2);
}
boolean detallesPagados = true;
for (Detalle detalle: orden.get().getDetalle()) {
if (Boolean.FALSE.equals(detalle.getEntregado())) {
detallesPagados = false;
}
}
if (detallesPagados) {
orden.get().setEntregado(Boolean.TRUE);
ordenDAO.save(orden.get());
}
}
private List<OrdenVO> mapperOrden(List<Orden> ordenes) {
List<OrdenVO> ordenVOs = new ArrayList<>();
for (Orden orden: ordenes) {
ordenVOs.add(mapper(orden));
}
return ordenVOs;
}
private OrdenVO mapper(Orden orden) {
OrdenVO ordenVO = new OrdenVO();
ordenVO.setNum(orden.getId());
ordenVO.setFecha(orden.getFechaCreacion());
ordenVO.setEstado(orden.getEstado());
ordenVO.setMedio(orden.getMedioPago());
ordenVO.setEntregado(orden.getEntregado());
Integer total = 0;
if (!orden.getDetalle().isEmpty()) {
ordenVO.setDetalles(mapperDetalleVO(orden.getDetalle()));
for (Detalle detalle: orden.getDetalle()) {
if (!detalle.isEliminado()) {
total = total + ((detalle.getPrecio().getPrecio()-detalle.getDescuento()) * detalle.getCantidad());
}
}
}
ordenVO.setTotal(total);
return ordenVO;
}
private List<DetalleVO> mapperDetalleVO(List<Detalle> detalles) {
List<DetalleVO> detalleVOs = new ArrayList<>();
for (Detalle detalle: detalles) {
if (!detalle.isEliminado()) {
detalleVOs.add(mapper(detalle));
}
}
return detalleVOs;
}
private DetalleVO mapper(Detalle detalle) {
DetalleVO detalleVO = new DetalleVO();
detalleVO.setCantidad(detalle.getCantidad());
detalleVO.setNombre(detalle.getProducto().getNombre());
detalleVO.setId(detalle.getId());
detalleVO.setPrecio(detalle.getPrecio().getPrecio());
detalleVO.setDescuento(detalle.getDescuento());
detalleVO.setEntregado(detalle.getEntregado());
return detalleVO;
}
public void actualizarOrden(PagadoVO vo) throws NegocioException {
Optional<Orden> orden = ordenDAO.findById(vo.getOrden());
if (orden.isEmpty()) {
throw new NegocioException("Orden no existe", 2);
}
orden.get().setEstado(vo.getEstado());
orden.get().setMedioPago(vo.getMedio());
if (EstadoOrdenEnum.PAGADO.equals(vo.getEstado())) {
ordenDAO.save(orden.get());
} else {
throw new NegocioException("Seleccione estado PAGADO para realizar el cambio", 2);
}
}
public List<OrdenVO> obtenerPedidos() {
List<Orden> ordenes = ordenDAO.getAllPedidos();
return mapperOrden(ordenes);
}
}

@ -1,166 +0,0 @@
package api.menu.playa.helper;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import api.menu.playa.dao.PrecioDAO;
import api.menu.playa.dao.ProductoDAO;
import api.menu.playa.exceptions.NegocioException;
import api.menu.playa.model.Precio;
import api.menu.playa.model.Producto;
import api.menu.playa.vo.ProductoVO;
@ApplicationScoped
public class ProductoHelper {
@Inject
ProductoDAO productoDAO;
@Inject
PrecioDAO precioDAO;
public void creacion(ProductoVO productoVO) {
Producto producto = new Producto();
producto.setNombre(productoVO.getNombre());
producto.setDescripcion(productoVO.getDescripcion());
producto.setPosicion(1);
producto.setMostrar(productoVO.getMostrar());
producto = productoDAO.save(producto);
Precio precio = new Precio();
precio.setPrecio(productoVO.getPrecio());
precio.setProducto(producto);
precioDAO.save(precio);
}
public void actualizar(ProductoVO productoVO) throws NegocioException {
Optional<Producto> optional = productoDAO.findById(productoVO.getId());
if (optional.isEmpty()) {
throw new NegocioException("No existe producto", 2);
}
if (!"".equals(productoVO.getNombre())) {
optional.get().setNombre(productoVO.getNombre());
}
if (!"".equals(productoVO.getDescripcion())) {
optional.get().setDescripcion(productoVO.getDescripcion());
}
optional.get().setPosicion(productoVO.getPosicion());
optional.get().setMenu(productoVO.getMenu());
Producto producto = productoDAO.save(optional.get());
Collection<Precio> precios = precioDAO.getPrecio(optional.get().getId());
Integer valor = precios.stream().findFirst().get().getPrecio();
if (productoVO.getPrecio() != null && valor != productoVO.getPrecio()) {
Precio precio = new Precio();
precio.setPrecio(productoVO.getPrecio());
precio.setProducto(producto);
precioDAO.save(precio);
}
}
public ProductoVO obtener(Long id) throws NegocioException {
Optional<Producto> producto = productoDAO.findById(id);
if (producto.isEmpty()) {
throw new NegocioException("No existe producto", 2);
}
return mapper(producto.get());
}
public List<ProductoVO> obtenerProductos() {
List<Producto> productos = productoDAO.getAll();
List<ProductoVO> productoVOs = mapper(productos);
productoVOs.sort(Comparator.comparing(ProductoVO::getPosicion));
return productoVOs;
}
private List<ProductoVO> mapper(List<Producto> productos) {
List<ProductoVO> productoVOs = new ArrayList<>();
for (Producto producto: productos) {
productoVOs.add(mapper(producto));
}
return productoVOs;
}
private ProductoVO mapper(Producto producto) {
ProductoVO productoVO = new ProductoVO();
productoVO.setId(producto.getId());
productoVO.setNombre(producto.getNombre());
productoVO.setDescripcion(producto.getDescripcion());
productoVO.setPosicion(producto.getPosicion());
productoVO.setMostrar(producto.getMostrar());
productoVO.setMenu(producto.getMenu());
Collection<Precio> precios = precioDAO.getPrecio(producto.getId());
Integer valor = precios.stream().findFirst().get().getPrecio();
productoVO.setPrecio(valor);
return productoVO;
}
public void delete(Long id) throws NegocioException {
Optional<Producto> producto = productoDAO.findById(id);
if (producto.isEmpty()) {
throw new NegocioException("No existe producto", 2);
}
producto.get().setEliminado(true);
productoDAO.save(producto.get());
}
public List<ProductoVO> obtenerProductosMenu() {
List<Producto> productos = productoDAO.getAllMenu();
List<ProductoVO> productoVOs = mapper(productos);
productoVOs.sort(Comparator.comparing(ProductoVO::getPosicion));
return productoVOs;
}
}

@ -1,43 +0,0 @@
package api.menu.playa.helper;
import java.time.LocalDateTime;
import java.util.Arrays;
import javax.enterprise.context.RequestScoped;
import org.eclipse.microprofile.jwt.Claims;
import org.jose4j.jwt.JwtClaims;
import api.menu.playa.enums.RolesEnum;
import api.menu.playa.util.TokenUtils;
@RequestScoped
public class TokenService {
public String generate(String nombre, String username, LocalDateTime birthdate, RolesEnum rol) {
try {
System.out.println("creating account");
JwtClaims jwtClaims = new JwtClaims();
jwtClaims.setIssuer("https://vodorod.cl");
jwtClaims.setJwtId("a-123");
jwtClaims.setSubject(nombre);
jwtClaims.setClaim(Claims.upn.name(), nombre);
jwtClaims.setClaim(Claims.preferred_username.name(), username);
jwtClaims.setClaim(Claims.birthdate.name(), birthdate);
jwtClaims.setClaim(Claims.groups.name(), Arrays.asList(rol));
jwtClaims.setAudience("using-jwt");
jwtClaims.setExpirationTimeMinutesInTheFuture(720);
String token = TokenUtils.generateTokenString(jwtClaims);
System.out.println(token);
return token;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Oops!");
}
}
}

@ -1,48 +0,0 @@
package api.menu.playa.model;
import java.time.LocalDate;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public abstract class AbstractGeneral {
@Column(name = "fecha_creacion", nullable = false)
private LocalDateTime fechaCreacion = LocalDateTime.now();
@Column(name = "eliminado", nullable = false)
private boolean eliminado = false;
@Column(name = "fecha_actualizacion")
private LocalDate fechaActualizacion;
abstract Long getId();
public LocalDateTime getFechaCreacion() {
return fechaCreacion;
}
public void setFechaCreacion(LocalDateTime fechaCreacion) {
this.fechaCreacion = fechaCreacion;
}
public boolean isEliminado() {
return eliminado;
}
public void setEliminado(boolean eliminado) {
this.eliminado = eliminado;
}
public LocalDate getFechaActualizacion() {
return fechaActualizacion;
}
public void setFechaActualizacion(LocalDate fechaActualizacion) {
this.fechaActualizacion = fechaActualizacion;
}
}

@ -1,100 +0,0 @@
package api.menu.playa.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "neg_detalle")
public class Detalle extends AbstractGeneral{
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "detalle_id_gen")
@SequenceGenerator(name = "detalle_id_gen", sequenceName = "detalle_seq", allocationSize = 1)
@Column(name = "id")
private Long id;
@Column(name = "cantidad")
private Integer cantidad;
@ManyToOne
@JoinColumn(name = "orden_id", nullable = false)
private Orden orden;
@ManyToOne
@JoinColumn(name = "producto_id", nullable = false)
private Producto producto;
@ManyToOne
@JoinColumn(name = "precio_id", nullable = false)
private Precio precio;
@Column(name = "descuento")
private Integer descuento = 0;
@Column(name = "entregado")
private Boolean entregado = false;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getCantidad() {
return cantidad;
}
public void setCantidad(Integer cantidad) {
this.cantidad = cantidad;
}
public Orden getOrden() {
return orden;
}
public void setOrden(Orden orden) {
this.orden = orden;
}
public Producto getProducto() {
return producto;
}
public void setProducto(Producto producto) {
this.producto = producto;
}
public Precio getPrecio() {
return precio;
}
public void setPrecio(Precio precio) {
this.precio = precio;
}
public Integer getDescuento() {
return descuento;
}
public void setDescuento(Integer descuento) {
this.descuento = descuento;
}
public Boolean getEntregado() {
return entregado;
}
public void setEntregado(Boolean entregado) {
this.entregado = entregado;
}
}

@ -1,84 +0,0 @@
package api.menu.playa.model;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import api.menu.playa.enums.EstadoOrdenEnum;
import api.menu.playa.enums.MedioPagoEnum;
@Entity
@Table(name = "neg_orden")
public class Orden extends AbstractGeneral{
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "orden_id_gen")
@SequenceGenerator(name = "orden_id_gen", sequenceName = "orden_seq", allocationSize = 1)
@Column(name = "id")
private Long id;
@Enumerated(EnumType.STRING)
@Column(name = "estado")
private EstadoOrdenEnum estado;
@Enumerated(EnumType.STRING)
@Column(name = "medio_pago")
private MedioPagoEnum medioPago;
@OneToMany(mappedBy = "orden")
private List<Detalle> detalle;
@Column(name = "entregado")
private Boolean entregado = false;
@Override
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public EstadoOrdenEnum getEstado() {
return estado;
}
public void setEstado(EstadoOrdenEnum estado) {
this.estado = estado;
}
public MedioPagoEnum getMedioPago() {
return medioPago;
}
public void setMedioPago(MedioPagoEnum medioPago) {
this.medioPago = medioPago;
}
public List<Detalle> getDetalle() {
return detalle;
}
public void setDetalle(List<Detalle> detalle) {
this.detalle = detalle;
}
public Boolean getEntregado() {
return entregado;
}
public void setEntregado(Boolean entregado) {
this.entregado = entregado;
}
}

@ -1,68 +0,0 @@
package api.menu.playa.model;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "neg_precio")
public class Precio extends AbstractGeneral {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "precio_id_gen")
@SequenceGenerator(name = "precio_id_gen", sequenceName = "precio_seq", allocationSize = 1)
@Column(name = "id")
private Long id;
@Column(name = "precio")
private Integer precio;
@OneToMany(mappedBy = "precio")
private List<Detalle> detalle;
@ManyToOne
@JoinColumn(name = "producto_id", nullable = false)
private Producto producto;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getPrecio() {
return precio;
}
public void setPrecio(Integer precio) {
this.precio = precio;
}
public List<Detalle> getDetalle() {
return detalle;
}
public void setDetalle(List<Detalle> detalle) {
this.detalle = detalle;
}
public Producto getProducto() {
return producto;
}
public void setProducto(Producto producto) {
this.producto = producto;
}
}

@ -1,124 +0,0 @@
package api.menu.playa.model;
import java.util.Collection;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "dom_producto")
public class Producto extends AbstractGeneral {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "producto_id_gen")
@SequenceGenerator(name = "producto_id_gen", sequenceName = "producto_seq", allocationSize = 1)
@Column(name = "id")
private Long id;
@Column(name = "agotado")
private Boolean agotado = false;
@Column(name = "nombre")
private String nombre;
@Column(name = "descripcion")
private String descripcion;
@OneToMany(mappedBy = "producto")
private List<Detalle> detalles;
@OneToMany(mappedBy = "producto")
private Collection<Precio> precios;
@Column(name = "posicion")
private Integer posicion;
@Column(name = "mostrar_descripcion")
private Boolean mostrar = false;
@Column(name = "mostrar_menu")
private Boolean menu = false;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Boolean getAgotado() {
return agotado;
}
public void setAgotado(Boolean agotado) {
this.agotado = agotado;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public List<Detalle> getDetalles() {
return detalles;
}
public void setDetalles(List<Detalle> detalles) {
this.detalles = detalles;
}
public Collection<Precio> getPrecios() {
return precios;
}
public void setPrecios(Collection<Precio> precios) {
this.precios = precios;
}
public Integer getPosicion() {
return posicion;
}
public void setPosicion(Integer posicion) {
this.posicion = posicion;
}
public Boolean getMostrar() {
return mostrar;
}
public void setMostrar(Boolean mostrar) {
this.mostrar = mostrar;
}
public Boolean getMenu() {
return menu;
}
public void setMenu(Boolean menu) {
this.menu = menu;
}
}

@ -1,104 +0,0 @@
package api.menu.playa.model;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import api.menu.playa.enums.RolesEnum;
@Entity
@Table(name = "neg_usuario")
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "usuario_id_gen")
@SequenceGenerator(name = "usuario_id_gen", sequenceName = "usuario_seq", allocationSize = 1)
@Column(name = "id")
private Long id;
@Column(name = "usuario", unique = true)
private String user;
@Column(name = "pass")
private String pass;
@Enumerated(EnumType.STRING)
@Column(name = "rol")
private RolesEnum rol;
@Column(name = "activo")
private Boolean activo;
@Column(name = "fecha_creacion")
private LocalDateTime fecha = LocalDateTime.now();
@Column(name = "nombre")
private String nombre;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public RolesEnum getRol() {
return rol;
}
public void setRol(RolesEnum rol) {
this.rol = rol;
}
public Boolean getActivo() {
return activo;
}
public void setActivo(Boolean activo) {
this.activo = activo;
}
public LocalDateTime getFecha() {
return fecha;
}
public void setFecha(LocalDateTime fecha) {
this.fecha = fecha;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}

@ -1,108 +0,0 @@
package api.menu.playa.util;
import java.io.InputStream;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Base64;
import java.util.Map;
import javax.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.config.ConfigProvider;
import org.eclipse.microprofile.jwt.Claims;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.NumericDate;
@ApplicationScoped
public class TokenUtils {
//@ConfigProperty(name = "config.private.key")
private static String privateKey = ConfigProvider.getConfig().getValue("config.private.key",String.class);;
private TokenUtils() {
}
public static String generateTokenString(JwtClaims claims) throws Exception {
// Use the private key associated with the public key for a valid signature
PrivateKey pk = readPrivateKey(privateKey);
return generateTokenString(pk, privateKey, claims);
}
private static String generateTokenString(PrivateKey privateKey, String kid, JwtClaims claims) throws Exception {
long currentTimeInSecs = currentTimeInSecs();
claims.setIssuedAt(NumericDate.fromSeconds(currentTimeInSecs));
claims.setClaim(Claims.auth_time.name(), NumericDate.fromSeconds(currentTimeInSecs));
for (Map.Entry<String, Object> entry : claims.getClaimsMap().entrySet()) {
System.out.printf("\tAdded claim: %s, value: %s\n", entry.getKey(), entry.getValue());
}
JsonWebSignature jws = new JsonWebSignature();
jws.setPayload(claims.toJson());
jws.setKey(privateKey);
jws.setKeyIdHeaderValue(kid);
jws.setHeader("typ", "JWT");
jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256);
return jws.getCompactSerialization();
}
/**
* Read a PEM encoded private key from the classpath
*
* @param pemResName - key file resource name
* @return PrivateKey
* @throws Exception on decode failure
*/
public static PrivateKey readPrivateKey(final String pemResName) throws Exception {
InputStream contentIS = TokenUtils.class.getResourceAsStream(pemResName);
byte[] tmp = new byte[4096];
int length = contentIS.read(tmp);
return decodePrivateKey(new String(tmp, 0, length, "UTF-8"));
}
/**
* Decode a PEM encoded private key string to an RSA PrivateKey
*
* @param pemEncoded - PEM string for private key
* @return PrivateKey
* @throws Exception on decode failure
*/
public static PrivateKey decodePrivateKey(final String pemEncoded) throws Exception {
byte[] encodedBytes = toEncodedBytes(pemEncoded);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encodedBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(keySpec);
}
private static byte[] toEncodedBytes(final String pemEncoded) {
final String normalizedPem = removeBeginEnd(pemEncoded);
return Base64.getDecoder().decode(normalizedPem);
}
private static String removeBeginEnd(String pem) {
pem = pem.replaceAll("-----BEGIN (.*)-----", "");
pem = pem.replaceAll("-----END (.*)----", "");
pem = pem.replaceAll("\r\n", "");
pem = pem.replaceAll("\n", "");
return pem.trim();
}
/**
* @return the current time in seconds since epoch
*/
public static int currentTimeInSecs() {
long currentTimeMS = System.currentTimeMillis();
return (int) (currentTimeMS / 1000);
}
}

@ -1,42 +0,0 @@
package api.menu.playa.vo;
public class CambioCantidadVO {
private Long detalle;
private Integer dato;
private Integer descuento;
private Boolean entregado;
public Long getDetalle() {
return detalle;
}
public void setDetalle(Long detalle) {
this.detalle = detalle;
}
public Integer getDato() {
return dato;
}
public void setDato(Integer dato) {
this.dato = dato;
}
public Integer getDescuento() {
return descuento;
}
public void setDescuento(Integer descuento) {
this.descuento = descuento;
}
public Boolean getEntregado() {
return entregado;
}
public void setEntregado(Boolean entregado) {
this.entregado = entregado;
}
}

@ -1,56 +0,0 @@
package api.menu.playa.vo;
public class DetalleVO {
private Long id;
private String nombre;
private String descripcion;
private Integer cantidad;
private Integer precio;
private Integer descuento;
private Boolean entregado;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public Integer getCantidad() {
return cantidad;
}
public void setCantidad(Integer cantidad) {
this.cantidad = cantidad;
}
public Integer getPrecio() {
return precio;
}
public void setPrecio(Integer precio) {
this.precio = precio;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getDescuento() {
return descuento;
}
public void setDescuento(Integer descuento) {
this.descuento = descuento;
}
public Boolean getEntregado() {
return entregado;
}
public void setEntregado(Boolean entregado) {
this.entregado = entregado;
}
}

@ -1,79 +0,0 @@
package api.menu.playa.vo;
import java.time.LocalDateTime;
import java.util.List;
import api.menu.playa.enums.EstadoOrdenEnum;
import api.menu.playa.enums.MedioPagoEnum;
public class OrdenVO {
private Long num;
private Integer total;
private LocalDateTime fecha;
private EstadoOrdenEnum estado;
private MedioPagoEnum medio;
private Boolean entregado;
private List<DetalleVO> detalles;
public Long getNum() {
return num;
}
public void setNum(Long num) {
this.num = num;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public List<DetalleVO> getDetalles() {
return detalles;
}
public void setDetalles(List<DetalleVO> detalles) {
this.detalles = detalles;
}
public LocalDateTime getFecha() {
return fecha;
}
public void setFecha(LocalDateTime fecha) {
this.fecha = fecha;
}
public EstadoOrdenEnum getEstado() {
return estado;
}
public void setEstado(EstadoOrdenEnum estado) {
this.estado = estado;
}
public MedioPagoEnum getMedio() {
return medio;
}
public void setMedio(MedioPagoEnum medio) {
this.medio = medio;
}
public Boolean getEntregado() {
return entregado;
}
public void setEntregado(Boolean entregado) {
this.entregado = entregado;
}
}

@ -1,32 +0,0 @@
package api.menu.playa.vo;
import api.menu.playa.enums.EstadoOrdenEnum;
import api.menu.playa.enums.MedioPagoEnum;
public class PagadoVO {
private Long orden;
private EstadoOrdenEnum estado;
private MedioPagoEnum medio;
public Long getOrden() {
return orden;
}
public void setOrden(Long orden) {
this.orden = orden;
}
public EstadoOrdenEnum getEstado() {
return estado;
}
public void setEstado(EstadoOrdenEnum estado) {
this.estado = estado;
}
public MedioPagoEnum getMedio() {
return medio;
}
public void setMedio(MedioPagoEnum medio) {
this.medio = medio;
}
}

@ -1,29 +0,0 @@
package api.menu.playa.vo;
public class ProductoIdVO {
private Long orden;
private Long producto;
private Integer cantidad;
public Long getOrden() {
return orden;
}
public void setOrden(Long orden) {
this.orden = orden;
}
public Long getProducto() {
return producto;
}
public void setProducto(Long producto) {
this.producto = producto;
}
public Integer getCantidad() {
return cantidad;
}
public void setCantidad(Integer cantidad) {
this.cantidad = cantidad;
}
}

@ -1,56 +0,0 @@
package api.menu.playa.vo;
public class ProductoVO {
private Long id;
private String nombre;
private String descripcion;
private Integer precio;
private Integer posicion;
private Boolean mostrar;
private Boolean menu;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public Integer getPrecio() {
return precio;
}
public void setPrecio(Integer precio) {
this.precio = precio;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getPosicion() {
return posicion;
}
public void setPosicion(Integer posicion) {
this.posicion = posicion;
}
public Boolean getMostrar() {
return mostrar;
}
public void setMostrar(Boolean mostrar) {
this.mostrar = mostrar;
}
public Boolean getMenu() {
return menu;
}
public void setMenu(Boolean menu) {
this.menu = menu;
}
}

@ -1,36 +0,0 @@
package api.menu.playa.vo;
public class RegistroVO {
private String user;
private String pass;
private String pass2;
private String nombre;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getPass2() {
return pass2;
}
public void setPass2(String pass2) {
this.pass2 = pass2;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}

@ -1,50 +0,0 @@
package api.menu.playa.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.quarkus.runtime.annotations.RegisterForReflection;
@RegisterForReflection
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResponseGlobal<T> {
private Integer code;
private String message;
private T result;
public ResponseGlobal(Integer code, String message, T result) {
this.code = code;
this.message = message;
this.result = result;
}
public ResponseGlobal(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getResult() {
return result;
}
public void setResult(T result) {
this.result = result;
}
}

@ -1,22 +0,0 @@
package api.menu.playa.vo;
public class UsuarioVO {
private String user;
private String pass;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}

File diff suppressed because one or more lines are too long

@ -1,43 +0,0 @@
quarkus.http.port=${MS_PORT:8181}
quarkus.http.root-path=/beach
quarkus.http.cors=true
#quarkus.http.cors.origins=http://localhost:4200
quarkus.http.host=0.0.0.0
quarkus.datasource.username=postgres
quarkus.datasource.password=13467982
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/postgres?currentSchema=playa
#quarkus.datasource.jdbc.url=jdbc:postgresql://192.168.1.17:5432/postgres?currentSchema=playa
quarkus.datasource.users.jdbc.max-size=11
quarkus.datasource.jdbc.idle-removal-interval= 10
quarkus.datasource.inventory.jdbc.max-size=12
quarkus.hibernate-orm.database.generation=update
config.private.key=/privatekey.pem
mp.jwt.verify.publickey.location=publickey.pem
mp.jwt.verify.issuer=https://vodorod.cl
quarkus.smallrye-jwt.enabled=true
quarkus.log.file.enable=true
quarkus.log.file.path=logs/quarkus.log
quarkus.log.file.level=DEBUG
quarkus.log.file.format=%d{HH:mm:ss} %-5p [%c{2.}]] (%t) %s%e%n
quarkus.log.file.rotation.max-file-size=20M
quarkus.log.file.rotation.max-backup-index=30
# ED8eqKY5ZyQAH9px
%prod.quarkus.http.cors.origins=https://tienda.vodorod.cl,https://menu.vodorod.cl
%prod.quarkus.datasource.username=${DATABASE_USER:playa_tienda}
%prod.quarkus.datasource.password=${DATABASE_PASS:ED8eqKY5ZyQAH9px}
%prod.quarkus.datasource.jdbc.url=${DATABASE_JDBC:jdbc:postgresql://localhost:5432/postgres?currentSchema=playa}
# %prod.config.private.key=file://${CONFIG_PRIVATE_KEY:/api/tienda-playa/privateKey.pem}
# %prod.mp.jwt.verify.publickey.location=file://${CONFIG_PUBLIC_KEY:publicKey.pem}
# %prod.mp.jwt.verify.issuer=https://vodorod.cl

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDXw6ZTo4zdwnzx
zcVaL7Jsfjlw2JOe2vyQecNfeMG4/Wp32sjrQKtC/jclmhtDN8qY7J6Js0LhHsnQ
se6aIKx2mSnurOSUTVsZ/szMK5Vfzncl3UbFVjrh6b5STRByJqsU8y2TT0kVguPS
Bs0vj88DeZl8cqdYy1feHmR/BKIKKT3Co8GEYXWLdfYCSHDn0CorziYO3CMBPXrU
cXlOxJf/5Sn75MWw63Mu1vfO0A0P7Zg8UDGOIEgPybXSzGoQZoSsydckFp5AybAN
HBnA/b3AVNoVYXVuunYJX5+qX5TlxbTN6EXPNiUqdn1LzgA0c38DKTYTmG951nJQ
up4RQ/jdAgMBAAECggEAODBYYVGnPp0GgsYOjgT71ysr9EpCb00iFtHO4k8FTBKa
pmnQhwtJTmH7pIw0a1XdKeP9CWkoko29Ct87fuHhZ+VNOT3HLSPUBLoJRWZYOSIA
f1jXtE5XeTuw96fgD4ooZYVKqiEsrDBw+eIRj0BJLeN96B3HnOUfldWeYEGpnTFT
gCUct0BcoP39Gh4OTXbmFkG+Tyq2FyAGGcTwndM70Y0PT7wigfEZluVhTT0wCEsb
4r1jrVIF/B6AKDTRfK2lpJfN1IWrfLZkOd5CIG/IgjMI1xcB1Ibgw170ip6XSHgr
hQJrYvvjH2tLhbOHI0SrpiyYPGeYnaPhOXZGBMUktQKBgQD98ddGLYJA9TO1X2iA
1vNVX5TSp11kGm2hZ4l34Opeo8vb9loeigGWYVClzugJn2Sa8+hT3s9xwraP2Yg6
IfmOqz1uW+T5GNZLbDIu0Omrx2lRGE1W2M5pQ0jthHspA3UUo8wp2+FCOsk2c6hE
QIKy1WmpGYT8hI0zHKGPNxAWSwKBgQDZgrN6uAnw/jKPto1QJWyYXJGTWXCoOXk8
1OI1vJK5zjQU0NsfayNZMgnGV9PGVqxqf3sDqx7O+qTldt/QVK03AtybPHL71WjA
cBjxH0x/+v8y+niPB8oKjNLxiwxd+nkBSO9jnPG08UpicZ+neznRQD09+TGJxOeV
+MBnDMtUdwKBgCk3cHZeeo6qfasJgj+vI62OpuwN6BWQSIzy7hf79G5J7ZOVB4l/
YsSSpPFUhMrTCRQxVFsQheDz9oegigDNdODYIE9iMObRRi7Vr8tzcwnDgu97n0ni
RJZHKnYKk6bTfdRMxZ1hp80FF5Vz7jKtucjm5JBiqPgHV5edJQfGqyDDAoGAenXt
2u/3GOnlSah8E12esIGdrJo0pWIGckthOOP8sAP6qqWUWTIW6scTXcpg/1AZLrSr
a7tSUzIm2NJ+3GpwQ4Km9feovUS//2idglQe3AdS2z7N1amLBTmYIkopIlg8/I41
yZ25MCiRuq9CNidYvAkw8c11KJ3lzTgKC3rWl60CgYEAwjaiYuPlv9cUBOjpZzQ6
JlmV5PIDYeTMu3p3j3sFBPXTt/CT59Z0VvF1txfH9qUTl85zMzZlsmkCbInnPtFE
pHPL/kD0L4t2XqxiriLNGh0DqTMJcx4gTqUT6jPit8BNDqxLFhj9qtWwQXBGA0My
gs4AsuhRpozo+xSAOVuO+Mg=
-----END PRIVATE KEY-----

@ -1,9 +0,0 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA18OmU6OM3cJ88c3FWi+y
bH45cNiTntr8kHnDX3jBuP1qd9rI60CrQv43JZobQzfKmOyeibNC4R7J0LHumiCs
dpkp7qzklE1bGf7MzCuVX853Jd1GxVY64em+Uk0QciarFPMtk09JFYLj0gbNL4/P
A3mZfHKnWMtX3h5kfwSiCik9wqPBhGF1i3X2Akhw59AqK84mDtwjAT161HF5TsSX
/+Up++TFsOtzLtb3ztAND+2YPFAxjiBID8m10sxqEGaErMnXJBaeQMmwDRwZwP29
wFTaFWF1brp2CV+fql+U5cW0zehFzzYlKnZ9S84ANHN/Ayk2E5hvedZyULqeEUP4
3QIDAQAB
-----END PUBLIC KEY-----
Loading…
Cancel
Save

Powered by TurnKey Linux.