Commit 05a7d42bac3d229ce16d6634cb138b6eeb98cd95

Authored by PauloGladson
1 parent 1ff1e4c3

Ajustes para início

.gitignore 0 → 100644
... ... @@ -0,0 +1,4 @@
  1 +/persistence/target/
  2 +/core/target/
  3 +/ws/target/
  4 +/security/target/
0 5 \ No newline at end of file
... ...
core/pom.xml
... ... @@ -13,12 +13,6 @@
13 13 </properties>
14 14 <dependencies>
15 15 <dependency>
16   - <groupId>org.apache.commons</groupId>
17   - <artifactId>commons-configuration2</artifactId>
18   - <version>2.0</version>
19   - <type>jar</type>
20   - </dependency>
21   - <dependency>
22 16 <groupId>javax</groupId>
23 17 <artifactId>javaee-web-api</artifactId>
24 18 <version>7.0</version>
... ...
pom.xml
... ... @@ -23,6 +23,7 @@
23 23 <module>persistence</module>
24 24 <module>ws</module>
25 25 <!--<module>swagger</module>-->
  26 + <module>security</module>
26 27 </modules>
27 28  
28 29 <dependencyManagement>
... ...
security/pom.xml
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3 3 <modelVersion>4.0.0</modelVersion>
4   - <groupId>org.demoiselle.jee.security</groupId>
  4 + <groupId>org.demoiselle.jee</groupId>
5 5 <artifactId>security</artifactId>
6 6 <version>3.0.0-SNAPSHOT</version>
7 7 <packaging>jar</packaging>
... ...
security/src/main/java/org/demoiselle/jee/security/exception/DemoiselleSecurityException.java 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + *
  4 + * License: GNU Lesser General Public License (LGPL), version 3 or later.
  5 + * See the lgpl.txt file in the root directory or <https://www.gnu.org/licenses/lgpl.html>.
  6 + */
  7 +package org.demoiselle.jee.security.exception;
  8 +
  9 +import java.util.HashMap;
  10 +
  11 +import org.demoiselle.jee.core.exception.DemoiselleException;
  12 +
  13 +public class DemoiselleSecurityException extends DemoiselleException {
  14 +
  15 + private static final long serialVersionUID = 519965615171844237L;
  16 +
  17 + private HashMap<String, String> messages = new HashMap<String, String>();
  18 +
  19 + private int statusCode;
  20 +
  21 + public DemoiselleSecurityException(String string) {
  22 + super(string);
  23 + }
  24 +
  25 + public int getStatusCode() {
  26 + return statusCode;
  27 + }
  28 +
  29 + public void addMessage(String field, String msg) {
  30 + this.statusCode = 422;
  31 + messages.put(field, msg);
  32 + }
  33 +
  34 + public HashMap<String, String> getMessages() {
  35 + return messages;
  36 + }
  37 +}
... ...
security/src/main/java/org/demoiselle/jee/ws/JaxRsFilter.java
... ... @@ -1,59 +0,0 @@
1   -/*
2   - * To change this license header, choose License Headers in Project Properties.
3   - * To change this template file, choose Tools | Templates
4   - * and open the template in the editor.
5   - */
6   -package org.demoiselle.jee.ws;
7   -
8   -import java.util.logging.Logger;
9   -import javax.annotation.PostConstruct;
10   -import javax.inject.Inject;
11   -import javax.ws.rs.client.ClientRequestContext;
12   -import javax.ws.rs.client.ClientRequestFilter;
13   -import javax.ws.rs.client.ClientResponseContext;
14   -import javax.ws.rs.client.ClientResponseFilter;
15   -import javax.ws.rs.container.ContainerRequestContext;
16   -import javax.ws.rs.container.ContainerRequestFilter;
17   -import javax.ws.rs.container.ContainerResponseContext;
18   -import javax.ws.rs.container.ContainerResponseFilter;
19   -import javax.ws.rs.container.PreMatching;
20   -import javax.ws.rs.ext.Provider;
21   -
22   -/**
23   - *
24   - * @author 70744416353
25   - */
26   -@Provider
27   -@PreMatching
28   -public class JaxRsFilter implements ClientRequestFilter, ClientResponseFilter, ContainerRequestFilter, ContainerResponseFilter {
29   -
30   - @Inject
31   - private Logger LOG;
32   -
33   - @Override
34   - public void filter(ClientRequestContext requestContext) {
35   - }
36   -
37   - @Override
38   - public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) {
39   - }
40   -
41   - @Override
42   - public void filter(ContainerRequestContext requestContext) {
43   - }
44   -
45   - @Override
46   - public void filter(ContainerRequestContext requestContext, ContainerResponseContext response) {
47   -
48   - response.getHeaders().putSingle("Access-Control-Allow-Origin", "*");
49   - response.getHeaders().putSingle("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, DELETE");
50   - response.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type");
51   -
52   - }
53   -
54   - @PostConstruct
55   - public void init() {
56   - LOG.info("Demoiselle Module - Rest");
57   - }
58   -
59   -}
security/src/main/java/org/demoiselle/jee/ws/crud/package-info.java
... ... @@ -1,11 +0,0 @@
1   -/*
2   - * Demoiselle Framework
3   - *
4   - * License: GNU Lesser General Public License (LGPL), version 3 or later.
5   - * See the lgpl.txt file in the root directory or <https://www.gnu.org/licenses/lgpl.html>.
6   - */
7   -/**
8   - * Esta pacote tem o objetivo de conter as classes relacionadas aos
9   - * facilitadores de CRUD do framework Demoiselle.
10   - */
11   -package org.demoiselle.jee.ws.crud;
12 0 \ No newline at end of file
security/src/main/java/org/demoiselle/jee/ws/exception/DemoiselleRESTException.java
... ... @@ -1,37 +0,0 @@
1   -/*
2   - * Demoiselle Framework
3   - *
4   - * License: GNU Lesser General Public License (LGPL), version 3 or later.
5   - * See the lgpl.txt file in the root directory or <https://www.gnu.org/licenses/lgpl.html>.
6   - */
7   -package org.demoiselle.jee.ws.exception;
8   -
9   -import java.util.HashMap;
10   -
11   -import org.demoiselle.jee.core.exception.DemoiselleException;
12   -
13   -public class DemoiselleRESTException extends DemoiselleException {
14   -
15   - private static final long serialVersionUID = 519965615171844237L;
16   -
17   - private HashMap<String, String> messages = new HashMap<String, String>();
18   -
19   - private int statusCode;
20   -
21   - public DemoiselleRESTException(String string) {
22   - super(string);
23   - }
24   -
25   - public int getStatusCode() {
26   - return statusCode;
27   - }
28   -
29   - public void addMessage(String field, String msg) {
30   - this.statusCode = 422;
31   - messages.put(field, msg);
32   - }
33   -
34   - public HashMap<String, String> getMessages() {
35   - return messages;
36   - }
37   -}
security/src/main/java/org/demoiselle/jee/ws/exception/mapper/GenericExceptionMapper.java
... ... @@ -1,62 +0,0 @@
1   -package org.demoiselle.jee.ws.exception.mapper;
2   -
3   -import java.io.PrintWriter;
4   -import java.io.StringWriter;
5   -import java.util.HashMap;
6   -
7   -import javax.ws.rs.WebApplicationException;
8   -import javax.ws.rs.core.MediaType;
9   -import javax.ws.rs.core.Response;
10   -import javax.ws.rs.ext.ExceptionMapper;
11   -import javax.ws.rs.ext.Provider;
12   -
13   -import org.demoiselle.jee.ws.exception.DemoiselleRESTException;
14   -
15   -@Provider
16   -public class GenericExceptionMapper implements ExceptionMapper<Exception> {
17   -
18   - public Response toResponse(Exception ex) {
19   -
20   - StringWriter errorStackTrace = new StringWriter();
21   - ex.printStackTrace(new PrintWriter(errorStackTrace));
22   -
23   - // Verifica se a exception é de validação de PAYLOAD do REST
24   - if (ex.getCause() instanceof DemoiselleRESTException) {
25   - DemoiselleRESTException exDemoiselleREST = (DemoiselleRESTException) ex.getCause();
26   - if (!exDemoiselleREST.getMessages().isEmpty()) {
27   - return Response.status(exDemoiselleREST.getStatusCode()).entity(exDemoiselleREST.getMessages())
28   - .type(MediaType.APPLICATION_JSON).build();
29   - }
30   - }
31   -
32   - HashMap<String, String> entity = new HashMap<String, String>();
33   -
34   - // No caso de existir message ele mostra a MESSAGE da Exception
35   - if (ex.getMessage() != null) {
36   - entity.put("error", ex.getMessage());
37   -
38   - // Pega toda as mensagens da stacktrace
39   - int level = 1;
40   - while (ex.getCause() != null) {
41   - ex = (Exception) ex.getCause();
42   - if (!ex.getMessage().isEmpty()) {
43   - entity.put("inner_cause_" + level, ex.getMessage());
44   - }
45   - level += 1;
46   - }
47   -
48   - // Por padrão retorna SERVER ERROR, mas tenta encontrar o status do RESPONSE se for WebApplicationException
49   - // http://docs.oracle.com/javaee/7/api/javax/ws/rs/WebApplicationException.html
50   - int responseCode = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
51   - if (ex instanceof WebApplicationException) {
52   - responseCode = ((WebApplicationException)ex).getResponse().getStatus();
53   - }
54   -
55   - return Response.status(responseCode).entity(entity).type(MediaType.APPLICATION_JSON).build();
56   - }
57   -
58   - entity.put("error", "Erro interno desconhecido no servidor.");
59   - return Response.status(500).entity(entity).type(MediaType.APPLICATION_JSON).build();
60   - }
61   -
62   -}
security/src/main/java/org/demoiselle/jee/ws/interceptor/ValidatePayload.java
... ... @@ -1,25 +0,0 @@
1   -/*
2   - * Demoiselle Framework
3   - *
4   - * License: GNU Lesser General Public License (LGPL), version 3 or later.
5   - * See the lgpl.txt file in the root directory or <https://www.gnu.org/licenses/lgpl.html>.
6   - */
7   -package org.demoiselle.jee.ws.interceptor;
8   -
9   -import static java.lang.annotation.ElementType.METHOD;
10   -import static java.lang.annotation.ElementType.TYPE;
11   -import static java.lang.annotation.RetentionPolicy.RUNTIME;
12   -
13   -import java.lang.annotation.Inherited;
14   -import java.lang.annotation.Retention;
15   -import java.lang.annotation.Target;
16   -
17   -import javax.interceptor.InterceptorBinding;
18   -
19   -@Inherited
20   -@InterceptorBinding
21   -@Target({ METHOD, TYPE })
22   -@Retention(RUNTIME)
23   -public @interface ValidatePayload {
24   -
25   -}
26 0 \ No newline at end of file
security/src/main/java/org/demoiselle/jee/ws/interceptor/ValidatePayloadInterceptor.java
... ... @@ -1,62 +0,0 @@
1   -/*
2   - * Demoiselle Framework
3   - *
4   - * License: GNU Lesser General Public License (LGPL), version 3 or later.
5   - * See the lgpl.txt file in the root directory or <https://www.gnu.org/licenses/lgpl.html>.
6   - */
7   -package org.demoiselle.jee.ws.interceptor;
8   -
9   -import java.io.Serializable;
10   -import java.util.HashSet;
11   -import java.util.Set;
12   -
13   -import javax.interceptor.AroundInvoke;
14   -import javax.interceptor.Interceptor;
15   -import javax.interceptor.InvocationContext;
16   -import javax.validation.ConstraintViolation;
17   -import javax.validation.UnexpectedTypeException;
18   -import javax.validation.Validation;
19   -import javax.validation.Validator;
20   -import javax.validation.ValidatorFactory;
21   -
22   -import org.demoiselle.jee.ws.exception.DemoiselleRESTException;
23   -
24   -@Interceptor
25   -@ValidatePayload
26   -public class ValidatePayloadInterceptor implements Serializable {
27   -
28   - private static final long serialVersionUID = 1L;
29   -
30   - @AroundInvoke
31   - public Object manage(final InvocationContext ic) throws Exception {
32   - DemoiselleRESTException ex = new DemoiselleRESTException("Erro de validação de entidade.");
33   - Set<ConstraintViolation<?>> violations = new HashSet<ConstraintViolation<?>>();
34   - for (Object params : ic.getParameters()) {
35   - if (params != null) {
36   - ValidatorFactory dfv = Validation.buildDefaultValidatorFactory();
37   - Validator validator = dfv.getValidator();
38   - try {
39   - violations.addAll(validator.validate(params));
40   - for (ConstraintViolation<?> violation : violations) {
41   - String field = (violation.getRootBeanClass().getSimpleName() + "_"
42   - + violation.getPropertyPath()).toLowerCase();
43   - // GPMessage msg =
44   - // GPMessage.INVALID_FIELD_P1.setSufix(violation.getConstraintDescriptor()
45   - // .getAnnotation().annotationType().getSimpleName().toLowerCase());
46   -
47   - ex.addMessage(field, violation.getMessage());
48   - }
49   - } catch (UnexpectedTypeException cause) {
50   - // GPMessage msg = GPMessage.GENERAL_ERROR_P1;
51   - // msg.setParam(cause.getMessage());
52   - throw new DemoiselleRESTException("ERRO GENERICO -> ALTERAR");
53   - }
54   - }
55   - }
56   -
57   - if (!violations.isEmpty() && !ex.getMessages().isEmpty()) {
58   - throw ex;
59   - }
60   - return ic.proceed();
61   - }
62   -}
63 0 \ No newline at end of file