Commit 4a702641e3edd7f9015b2748756cc719e03d3acb
1 parent
8d68a1f4
Segurança e ajustes nos pacotes
Showing
64 changed files
with
1417 additions
and
1661 deletions
Show diff stats
demoiselle-core/src/main/java/org/demoiselle/jee/core/annotation/Strategy.java
... | ... | @@ -1,53 +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.core.annotation; | |
8 | -import static java.lang.annotation.ElementType.FIELD; | |
9 | -import static java.lang.annotation.ElementType.METHOD; | |
10 | -import static java.lang.annotation.ElementType.PARAMETER; | |
11 | -import static java.lang.annotation.ElementType.TYPE; | |
12 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
13 | - | |
14 | -import java.lang.annotation.Inherited; | |
15 | -import java.lang.annotation.Retention; | |
16 | -import java.lang.annotation.Target; | |
17 | - | |
18 | -import javax.inject.Qualifier; | |
19 | - | |
20 | -/** | |
21 | - * | |
22 | - * <p> | |
23 | - * This literal marks a bean to be selected at runtime based on a priority system. | |
24 | - * The user qualifies the injection point with this literal and then at runtime | |
25 | - * the CDI engine will circle through all candidate subtypes to be injected | |
26 | - * that are annotated with {@link Priority}. If there is only one subtype with the | |
27 | - * highest priority then this one will be selected to be injected. | |
28 | - * </p> | |
29 | - * | |
30 | - * <p> | |
31 | - * This allows users to plug in libraries with new candidates and have them be selected | |
32 | - * if their priority values are higher than the default values already present. One example | |
33 | - * is the {@link org.demoiselle.security.Authorizer} type, the framework has a {@link org.demoiselle.internal.implementation.DefaultAuthorizer} | |
34 | - * with {@link Priority#L1_PRIORITY the lowest priority} but the user can add libraries with new | |
35 | - * implementations of {@link org.demoiselle.security.Authorizer} annotated with higher priorities, the code will | |
36 | - * then automatically select these new implementations with no extra configuration. | |
37 | - * </p> | |
38 | - * | |
39 | - * <p> | |
40 | - * This annotation must be used with supported types. Usually this involves creating {@link javax.enterprise.inject.Produces} CDI | |
41 | - * producer methods that will select the correct strategy. To create your own producer | |
42 | - * methods that support strategy selection, use the utility {@linkplain org.demoiselle.internal.producer.StrategySelector}. | |
43 | - * </p> | |
44 | - * | |
45 | - * @author SERPRO | |
46 | - */ | |
47 | -@Qualifier | |
48 | -@Inherited | |
49 | -@Retention(RUNTIME) | |
50 | -@Target({ TYPE, FIELD, METHOD, PARAMETER }) | |
51 | -public @interface Strategy { | |
52 | - | |
53 | -} |
demoiselle-core/src/main/java/org/demoiselle/jee/core/annotation/Type.java
... | ... | @@ -1,60 +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.core.annotation; | |
8 | - | |
9 | -import static java.lang.annotation.ElementType.FIELD; | |
10 | -import static java.lang.annotation.ElementType.METHOD; | |
11 | -import static java.lang.annotation.ElementType.PARAMETER; | |
12 | -import static java.lang.annotation.ElementType.TYPE; | |
13 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
14 | - | |
15 | -import java.lang.annotation.Inherited; | |
16 | -import java.lang.annotation.Retention; | |
17 | -import java.lang.annotation.Target; | |
18 | - | |
19 | -import javax.enterprise.util.Nonbinding; | |
20 | -import javax.inject.Qualifier; | |
21 | - | |
22 | -/** | |
23 | - * <p> | |
24 | - * Type based non-binding qualifier. | |
25 | - * </p> | |
26 | - * | |
27 | - * <p> | |
28 | - * This annotation is used to qualify beans using a class type. | |
29 | - * {@link javax.enterprise.inject.Produces} methods can then read this type and | |
30 | - * use it to customize the bean creation process. | |
31 | - * </p> | |
32 | - * | |
33 | - * <p> | |
34 | - * The {@link #value()} attribute is non-binding, meaning multiple classes | |
35 | - * qualified with this annotation, even with different values, will be | |
36 | - * considered the same candidate for injection points. To avoid ambiguous | |
37 | - * resolutions and select which candidate to choose usually you'll need a | |
38 | - * producer method to read the type and select the best fitted candidate. | |
39 | - * </p> | |
40 | - * | |
41 | - * <p> | |
42 | - * The framework classes qualified with this annotation already have such | |
43 | - * producers and the accepted values for this annotation will be detailed in | |
44 | - * their respective documentations. | |
45 | - * </p> | |
46 | - * | |
47 | - * | |
48 | - * @author SERPRO | |
49 | - * | |
50 | - */ | |
51 | -@Qualifier | |
52 | -@Inherited | |
53 | -@Retention(RUNTIME) | |
54 | -@Target({ TYPE, FIELD, METHOD, PARAMETER }) | |
55 | -public @interface Type { | |
56 | - | |
57 | - @Nonbinding | |
58 | - Class<?> value() default Object.class; | |
59 | - | |
60 | -} |
demoiselle-core/src/main/java/org/demoiselle/jee/core/annotation/literal/StrategyQualifier.java
... | ... | @@ -1,23 +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.core.annotation.literal; | |
8 | - | |
9 | -import org.demoiselle.jee.core.annotation.Strategy; | |
10 | - | |
11 | -import javax.enterprise.util.AnnotationLiteral; | |
12 | - | |
13 | -/** | |
14 | - * Annotation litteral that allows to create instances of the {@link Strategy} literal. The created instance can then be | |
15 | - * used to call {@link javax.enterprise.inject.spi.CDI#select(Class subtype, java.lang.annotation.Annotation... qualifiers)}. | |
16 | - * | |
17 | - * @see javax.enterprise.inject.spi.CDI | |
18 | - * @author SERPRO | |
19 | - */ | |
20 | -@SuppressWarnings("all") | |
21 | -public class StrategyQualifier extends AnnotationLiteral<Strategy> implements Strategy { | |
22 | - | |
23 | -} |
demoiselle-core/src/main/java/org/demoiselle/jee/core/annotation/literal/TypeQualifier.java
... | ... | @@ -1,41 +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.core.annotation.literal; | |
8 | - | |
9 | -import org.demoiselle.jee.core.annotation.Type; | |
10 | - | |
11 | -import javax.enterprise.util.AnnotationLiteral; | |
12 | - | |
13 | -/** | |
14 | - * Annotation litteral that allows to create instances of the {@link Type} | |
15 | - * literal. The created instance can then be used to call | |
16 | - * {@link javax.enterprise.inject.spi.CDI#select(Class subtype, java.lang.annotation.Annotation... qualifiers)}. | |
17 | - * | |
18 | - * @see javax.enterprise.inject.spi.CDI | |
19 | - * @author SERPRO | |
20 | - */ | |
21 | -@SuppressWarnings("all") | |
22 | -public class TypeQualifier extends AnnotationLiteral<Type> implements Type { | |
23 | - | |
24 | - private static final long serialVersionUID = 1L; | |
25 | - | |
26 | - private final Class<?> value; | |
27 | - | |
28 | - /** | |
29 | - * Constructor with string value of name literal. | |
30 | - * | |
31 | - * @param value value of name literal. | |
32 | - */ | |
33 | - public TypeQualifier(Class<?> value) { | |
34 | - this.value = value; | |
35 | - } | |
36 | - | |
37 | - @Override | |
38 | - public Class<?> value() { | |
39 | - return this.value; | |
40 | - } | |
41 | -} |
demoiselle-core/src/main/java/org/demoiselle/jee/core/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.core.crud; | |
12 | 0 | \ No newline at end of file |
demoiselle-core/src/main/java/org/demoiselle/jee/core/interfaces/crud/package-info.java
0 → 100644
... | ... | @@ -0,0 +1,11 @@ |
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.core.interfaces.crud; | |
0 | 12 | \ No newline at end of file | ... | ... |
demoiselle-core/src/main/java/org/demoiselle/jee/core/interfaces/persistence/package-info.java
0 → 100644
... | ... | @@ -0,0 +1,11 @@ |
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.core.interfaces.persistence; | |
0 | 12 | \ No newline at end of file | ... | ... |
demoiselle-core/src/main/java/org/demoiselle/jee/core/interfaces/security/DemoisellePrincipal.java
0 → 100644
... | ... | @@ -0,0 +1,29 @@ |
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.core.interfaces.security; | |
7 | + | |
8 | +import java.security.Principal; | |
9 | +import java.util.List; | |
10 | +import java.util.Map; | |
11 | + | |
12 | +/** | |
13 | + * | |
14 | + * @author 70744416353 | |
15 | + */ | |
16 | +public interface DemoisellePrincipal extends Principal { | |
17 | + | |
18 | + public String getId(); | |
19 | + | |
20 | + public void setId(String id); | |
21 | + | |
22 | + public void setName(String name); | |
23 | + | |
24 | + public void setRoles(List<String> roles); | |
25 | + | |
26 | + public List<String> getRoles(); | |
27 | + | |
28 | + public Map<String, String> getPermissions(); | |
29 | +} | ... | ... |
demoiselle-core/src/main/java/org/demoiselle/jee/core/interfaces/security/SecurityContext.java
0 → 100644
... | ... | @@ -0,0 +1,73 @@ |
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.core.interfaces.security; | |
8 | + | |
9 | +import java.io.Serializable; | |
10 | +import java.security.Principal; | |
11 | +import java.util.List; | |
12 | +import java.util.Map; | |
13 | + | |
14 | +/** | |
15 | + * <p> | |
16 | + * Structure used to handle both authentication and authorizations mechanisms. | |
17 | + * </p> | |
18 | + * | |
19 | + * @author SERPRO | |
20 | + */ | |
21 | +public interface SecurityContext extends Serializable { | |
22 | + | |
23 | + /** | |
24 | + * Checks if a specific user is logged in. | |
25 | + * | |
26 | + * @return {@code true} if the user is logged in | |
27 | + */ | |
28 | + boolean isLoggedIn(); | |
29 | + | |
30 | + /** | |
31 | + * @throws NotLoggedInException if there is no user logged in a specific | |
32 | + * session | |
33 | + */ | |
34 | + void checkLoggedIn(); | |
35 | + | |
36 | + /** | |
37 | + * Checks if the logged user has permission to execute an specific operation | |
38 | + * on a specific resource. | |
39 | + * | |
40 | + * @param resource resource to be checked | |
41 | + * @param operation operation to be checked | |
42 | + * @return {@code true} if the user has the permission | |
43 | + * @throws AuthorizationException When the permission checking fails, this | |
44 | + * exception is thrown. | |
45 | + * @throws NotLoggedInException if there is no user logged in a specific | |
46 | + * session. | |
47 | + */ | |
48 | + boolean hasPermission(String resource, String operation); | |
49 | + | |
50 | + /** | |
51 | + * Checks if the logged user has an specific role | |
52 | + * | |
53 | + * @param role role to be checked | |
54 | + * @return {@code true} if the user has the role | |
55 | + * @throws AuthorizationException When the permission checking fails, this | |
56 | + * exception is thrown. | |
57 | + * @throws NotLoggedInException if there is no user logged in a specific | |
58 | + * session. | |
59 | + */ | |
60 | + boolean hasRole(String role); | |
61 | + | |
62 | + /** | |
63 | + * Return the user logged in the session. | |
64 | + * | |
65 | + * @param token | |
66 | + * @return the user logged in a specific authenticated session. If there is | |
67 | + * no active session {@code null} is returned. | |
68 | + */ | |
69 | + Principal getUser(); | |
70 | + | |
71 | + void setUser(Principal loggedUser); | |
72 | + | |
73 | +} | ... | ... |
demoiselle-core/src/main/java/org/demoiselle/jee/core/interfaces/security/Token.java
0 → 100644
... | ... | @@ -0,0 +1,21 @@ |
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.core.interfaces.security; | |
7 | + | |
8 | +/** | |
9 | + * | |
10 | + * @author 70744416353 | |
11 | + */ | |
12 | +public interface Token { | |
13 | + | |
14 | + public String getKey(); | |
15 | + | |
16 | + public void setKey(String key); | |
17 | + | |
18 | + public String getType(); | |
19 | + | |
20 | + public void setType(String type); | |
21 | +} | ... | ... |
demoiselle-core/src/main/java/org/demoiselle/jee/core/interfaces/security/TokensManager.java
0 → 100644
... | ... | @@ -0,0 +1,29 @@ |
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.core.interfaces.security; | |
8 | + | |
9 | +import java.io.Serializable; | |
10 | +import java.security.Principal; | |
11 | +import java.util.List; | |
12 | +import java.util.Map; | |
13 | + | |
14 | +/** | |
15 | + * <p> | |
16 | + * Structure used to handle both authentication and authorizations mechanisms. | |
17 | + * </p> | |
18 | + * | |
19 | + * @author SERPRO | |
20 | + */ | |
21 | +public interface TokensManager extends Serializable { | |
22 | + | |
23 | + public Principal getUser(); | |
24 | + | |
25 | + public void setUser(Principal user); | |
26 | + | |
27 | + public boolean validate(); | |
28 | + | |
29 | +} | ... | ... |
demoiselle-core/src/main/java/org/demoiselle/jee/core/interfaces/ws/package-info.java
0 → 100644
... | ... | @@ -0,0 +1,11 @@ |
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.core.interfaces.ws; | |
0 | 12 | \ No newline at end of file | ... | ... |
demoiselle-core/src/main/java/org/demoiselle/jee/core/message/DemoiselleMessages.java
0 → 100644
... | ... | @@ -0,0 +1,57 @@ |
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.core.message; | |
8 | + | |
9 | +import org.apache.deltaspike.core.api.message.MessageBundle; | |
10 | +import org.apache.deltaspike.core.api.message.MessageTemplate; | |
11 | + | |
12 | +@MessageBundle | |
13 | +public interface DemoiselleMessages { | |
14 | + | |
15 | + @MessageTemplate("{version}") | |
16 | + String version(); | |
17 | + | |
18 | + @MessageTemplate("{engine-on}") | |
19 | + String engineOn(); | |
20 | + | |
21 | + @MessageTemplate("{resource-not-found}") | |
22 | + String resourceNotFound(); | |
23 | + | |
24 | + @MessageTemplate("{key-not-found}") | |
25 | + String keyNotFound(String key); | |
26 | + | |
27 | + @MessageTemplate("{ambiguous-strategy-resolution}") | |
28 | + String ambiguousStrategyResolution(String interfaceString, String implementations); | |
29 | + | |
30 | + @MessageTemplate("{ambiguous-bean-resolution}") | |
31 | + String ambiguousBeanResolution(String implementation); | |
32 | + | |
33 | + @MessageTemplate("{bean-not-found}") | |
34 | + String beanNotFound(String bean); | |
35 | + | |
36 | + @MessageTemplate("{store-not-found}") | |
37 | + String storeNotFound(String object, String scope); | |
38 | + | |
39 | + @MessageTemplate("{more-than-one-exceptionhandler-defined-for-same-class}") | |
40 | + String moreThanOneExceptionhandlerDefinedForSameClass(String clazz, String ex); | |
41 | + | |
42 | + @MessageTemplate("{handling-exception}") | |
43 | + String handlingException(String ex); | |
44 | + | |
45 | + @MessageTemplate("{taking-off}") | |
46 | + String takingOff(); | |
47 | + | |
48 | + @MessageTemplate("{engine-off}") | |
49 | + String engineOff(String ex); | |
50 | + | |
51 | + @MessageTemplate("{setting-up-bean-manager}") | |
52 | + String settingUpBeanManagerException(String util); | |
53 | + | |
54 | + @MessageTemplate("{processing-fail}") | |
55 | + String processingFail(); | |
56 | + | |
57 | +} | |
0 | 58 | \ No newline at end of file | ... | ... |
demoiselle-core/src/main/java/org/demoiselle/jee/core/messages/DemoiselleMessages.java
... | ... | @@ -1,57 +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.core.messages; | |
8 | - | |
9 | -import org.apache.deltaspike.core.api.message.MessageBundle; | |
10 | -import org.apache.deltaspike.core.api.message.MessageTemplate; | |
11 | - | |
12 | -@MessageBundle | |
13 | -public interface DemoiselleMessages { | |
14 | - | |
15 | - @MessageTemplate("{version}") | |
16 | - String version(); | |
17 | - | |
18 | - @MessageTemplate("{engine-on}") | |
19 | - String engineOn(); | |
20 | - | |
21 | - @MessageTemplate("{resource-not-found}") | |
22 | - String resourceNotFound(); | |
23 | - | |
24 | - @MessageTemplate("{key-not-found}") | |
25 | - String keyNotFound(String key); | |
26 | - | |
27 | - @MessageTemplate("{ambiguous-strategy-resolution}") | |
28 | - String ambiguousStrategyResolution(String interfaceString, String implementations); | |
29 | - | |
30 | - @MessageTemplate("{ambiguous-bean-resolution}") | |
31 | - String ambiguousBeanResolution(String implementation); | |
32 | - | |
33 | - @MessageTemplate("{bean-not-found}") | |
34 | - String beanNotFound(String bean); | |
35 | - | |
36 | - @MessageTemplate("{store-not-found}") | |
37 | - String storeNotFound(String object, String scope); | |
38 | - | |
39 | - @MessageTemplate("{more-than-one-exceptionhandler-defined-for-same-class}") | |
40 | - String moreThanOneExceptionhandlerDefinedForSameClass(String clazz, String ex); | |
41 | - | |
42 | - @MessageTemplate("{handling-exception}") | |
43 | - String handlingException(String ex); | |
44 | - | |
45 | - @MessageTemplate("{taking-off}") | |
46 | - String takingOff(); | |
47 | - | |
48 | - @MessageTemplate("{engine-off}") | |
49 | - String engineOff(String ex); | |
50 | - | |
51 | - @MessageTemplate("{setting-up-bean-manager}") | |
52 | - String settingUpBeanManagerException(String util); | |
53 | - | |
54 | - @MessageTemplate("{processing-fail}") | |
55 | - String processingFail(); | |
56 | - | |
57 | -} | |
58 | 0 | \ No newline at end of file |
demoiselle-core/src/main/java/org/demoiselle/jee/stereotype/BusinessController.java
... | ... | @@ -1,36 +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.stereotype; | |
8 | - | |
9 | -import javax.enterprise.inject.Stereotype; | |
10 | -import java.lang.annotation.Inherited; | |
11 | -import java.lang.annotation.Retention; | |
12 | -import java.lang.annotation.Target; | |
13 | - | |
14 | -import static java.lang.annotation.ElementType.TYPE; | |
15 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
16 | - | |
17 | -/** | |
18 | - * Identifies a <b>business controller</b> class. Business controller objects typically implement the controller design | |
19 | - * pattern, i.e., they contain no data elements but methods that orchestrate interaction among business entities. | |
20 | - * <p> | |
21 | - * A <i>Business Controller</i> is: | |
22 | - * <ul> | |
23 | - * <li>defined when annotated with {@code @BusinessController}</li> | |
24 | - * <li>automatically injected whenever {@code @Inject} is used</li> | |
25 | - * </ul> | |
26 | - * | |
27 | - * @author SERPRO | |
28 | - * @see Controller | |
29 | - */ | |
30 | -@Controller | |
31 | -@Stereotype | |
32 | -@Inherited | |
33 | -@Target(TYPE) | |
34 | -@Retention(RUNTIME) | |
35 | -public @interface BusinessController { | |
36 | -} |
demoiselle-core/src/main/java/org/demoiselle/jee/stereotype/Controller.java
... | ... | @@ -1,28 +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.stereotype; | |
8 | - | |
9 | -import javax.interceptor.InterceptorBinding; | |
10 | -import java.lang.annotation.Inherited; | |
11 | -import java.lang.annotation.Retention; | |
12 | -import java.lang.annotation.Target; | |
13 | - | |
14 | -import static java.lang.annotation.ElementType.METHOD; | |
15 | -import static java.lang.annotation.ElementType.TYPE; | |
16 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
17 | - | |
18 | -/** | |
19 | - * Identifies a <b>controller</b> class or stereotype, the latter being most suitable for it. | |
20 | - * | |
21 | - * @author SERPRO | |
22 | - */ | |
23 | -@InterceptorBinding | |
24 | -@Inherited | |
25 | -@Target({ TYPE, METHOD }) | |
26 | -@Retention(RUNTIME) | |
27 | -public @interface Controller { | |
28 | -} |
demoiselle-core/src/main/java/org/demoiselle/jee/stereotype/PersistenceController.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.stereotype; | |
8 | - | |
9 | -import javax.enterprise.inject.Stereotype; | |
10 | -import java.lang.annotation.Inherited; | |
11 | -import java.lang.annotation.Retention; | |
12 | -import java.lang.annotation.Target; | |
13 | - | |
14 | -import static java.lang.annotation.ElementType.TYPE; | |
15 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
16 | - | |
17 | -/** | |
18 | - * Identifies a <b>persistence controller</b> class. A persistence controller is | |
19 | - * a layer which provides simplified access to data stored in persistent storage | |
20 | - * of some kind, such as an entity-relational database. | |
21 | - * <p> | |
22 | - * A <i>Persitence Controller</i> is: | |
23 | - * <ul> | |
24 | - * <li>defined when annotated with {@code @PersistenceController}</li> | |
25 | - * <li>automatically injected whenever {@code @Inject} is used</li> | |
26 | - * </ul> | |
27 | - * | |
28 | - * @author SERPRO | |
29 | - * @see Controller | |
30 | - */ | |
31 | -@Controller | |
32 | -@Stereotype | |
33 | -@Inherited | |
34 | -@Target(TYPE) | |
35 | -@Retention(RUNTIME) | |
36 | -public @interface PersistenceController { | |
37 | -} |
demoiselle-core/src/main/java/org/demoiselle/jee/stereotype/RestController.java
... | ... | @@ -1,36 +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.stereotype; | |
8 | - | |
9 | -import javax.enterprise.inject.Stereotype; | |
10 | -import java.lang.annotation.Inherited; | |
11 | -import java.lang.annotation.Retention; | |
12 | -import java.lang.annotation.Target; | |
13 | - | |
14 | -import static java.lang.annotation.ElementType.TYPE; | |
15 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
16 | - | |
17 | -/** | |
18 | - * Identifies a <b>facade</b> class. A facade is an object that provides a | |
19 | - * simplified interface to a larger body of code, such as a class library. | |
20 | - * <p> | |
21 | - * A <i>Facade</i> is: | |
22 | - * <ul> | |
23 | - * <li>defined when annotated with {@code @FacadeController}</li> | |
24 | - * <li>automatically injected whenever {@code @Inject} is used</li> | |
25 | - * </ul> | |
26 | - * | |
27 | - * @author SERPRO | |
28 | - * @see Controller | |
29 | - */ | |
30 | -@Controller | |
31 | -@Stereotype | |
32 | -@Inherited | |
33 | -@Target(TYPE) | |
34 | -@Retention(RUNTIME) | |
35 | -public @interface RestController { | |
36 | -} |
demoiselle-parent/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" |
3 | - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
4 | - | |
5 | - <artifactId>demoiselle-parent</artifactId> | |
6 | - <packaging>pom</packaging> | |
7 | - <modelVersion>4.0.0</modelVersion> | |
8 | - | |
9 | - <name>Demoiselle Parent POM</name> | |
10 | - | |
11 | - <parent> | |
12 | - <groupId>org.demoiselle.jee</groupId> | |
13 | - <artifactId>demoiselle-build</artifactId> | |
14 | - <version>3.0.0-BETA1-SNAPSHOT</version> | |
15 | - </parent> | |
16 | - | |
17 | - <properties> | |
18 | - <!-- General --> | |
19 | - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
20 | - | |
21 | - <!-- Dependencies versions --> | |
22 | - <javaee.version>7.0</javaee.version> | |
23 | - <cdi.version>1.2</cdi.version> | |
24 | - <validation.version>1.1.0.Final</validation.version> | |
25 | - <transaction.version>1.2</transaction.version> | |
26 | - <jstl.version>1.2</jstl.version> | |
27 | - <el.version>3.0.0</el.version> | |
28 | - <servlet.version>3.1.0</servlet.version> | |
29 | - <persistence.version>1.0.2</persistence.version> | |
30 | - <rest.version>2.0</rest.version> | |
31 | - <concurrent.version>1.0</concurrent.version> | |
32 | - <hibernate.version>5.1.0.Final</hibernate.version> | |
33 | - <hibernate.validator.version>5.2.4.Final</hibernate.validator.version> | |
34 | - <commons.configuration.version>2.0</commons.configuration.version> | |
35 | - <jaxrs.version>2.0.1</jaxrs.version> | |
36 | - <javaee.version>7.0</javaee.version> | |
37 | - <deltaspike.version>1.7.1</deltaspike.version> | |
38 | - <ejb.version>3.2</ejb.version> | |
39 | - <cache.version>1.0.0</cache.version> | |
40 | - | |
41 | - <!-- Maven plugin versions --> | |
42 | - <maven.compiler.plugin.version>3.5.1</maven.compiler.plugin.version> | |
43 | - <maven.war.plugin.version>2.6</maven.war.plugin.version> | |
44 | - <maven.compiler.source>1.8</maven.compiler.source> | |
45 | - <maven.compiler.target>1.8</maven.compiler.target> | |
46 | - | |
47 | - </properties> | |
48 | - | |
49 | - <dependencyManagement> | |
50 | - | |
51 | - <dependencies> | |
52 | - | |
53 | - <!-- jsr-299 api --> | |
54 | - <dependency> | |
55 | - <groupId>javax.enterprise</groupId> | |
56 | - <artifactId>cdi-api</artifactId> | |
57 | - <scope>provided</scope> | |
58 | - <version>${cdi.version}</version> | |
59 | - </dependency> | |
60 | - | |
61 | - <!-- jsr-349 api --> | |
62 | - <dependency> | |
63 | - <artifactId>validation-api</artifactId> | |
64 | - <groupId>javax.validation</groupId> | |
65 | - <scope>provided</scope> | |
66 | - <version>${validation.version}</version> | |
67 | - </dependency> | |
68 | - | |
69 | - <!-- jsr-341 api and impl --> | |
70 | - <dependency> | |
71 | - <groupId>org.glassfish</groupId> | |
72 | - <artifactId>javax.el</artifactId> | |
73 | - <scope>provided</scope> | |
74 | - <version>${el.version}</version> | |
75 | - </dependency> | |
76 | - | |
77 | - <!-- jsr-342 api --> | |
78 | - <dependency> | |
79 | - <groupId>javax</groupId> | |
80 | - <artifactId>javaee-api</artifactId> | |
81 | - <scope>provided</scope> | |
82 | - <version>${javaee.version}</version> | |
83 | - </dependency> | |
84 | - | |
85 | - <!-- jsr-340 api --> | |
86 | - <dependency> | |
87 | - <groupId>javax.servlet</groupId> | |
88 | - <artifactId>javax.servlet-api</artifactId> | |
89 | - <scope>provided</scope> | |
90 | - <version>${servlet.version}</version> | |
91 | - </dependency> | |
92 | - <dependency> | |
93 | - <groupId>javax.servlet</groupId> | |
94 | - <artifactId>jstl</artifactId> | |
95 | - <scope>provided</scope> | |
96 | - <version>${jstl.version}</version> | |
97 | - </dependency> | |
98 | - | |
99 | - <!-- jsr-338 api --> | |
100 | - <dependency> | |
101 | - <groupId>org.hibernate</groupId> | |
102 | - <artifactId>hibernate-entitymanager</artifactId> | |
103 | - <scope>provided</scope> | |
104 | - <version>${hibernate.version}</version> | |
105 | - </dependency> | |
106 | - | |
107 | - <!-- jsr-339 api --> | |
108 | - <dependency> | |
109 | - <groupId>javax.ws.rs</groupId> | |
110 | - <artifactId>javax.ws.rs-api</artifactId> | |
111 | - <scope>provided</scope> | |
112 | - <version>${jaxrs.version}</version> | |
113 | - </dependency> | |
114 | - | |
115 | - <!-- jsr-342 api --> | |
116 | - <dependency> | |
117 | - <groupId>javax</groupId> | |
118 | - <artifactId>javaee-web-api</artifactId> | |
119 | - <version>${javaee.version}</version> | |
120 | - </dependency> | |
121 | - | |
122 | - <!-- jsr-318 api --> | |
123 | - <dependency> | |
124 | - <groupId>javax.ejb</groupId> | |
125 | - <artifactId>javax.ejb-api</artifactId> | |
126 | - <version>${ejb.version}</version> | |
127 | - <scope>provided</scope> | |
128 | - </dependency> | |
129 | - | |
130 | - <!-- jsr-107 api --> | |
131 | - <dependency> | |
132 | - <groupId>javax.cache</groupId> | |
133 | - <artifactId>cache-api</artifactId> | |
134 | - <version>${cache.version}</version> | |
135 | - </dependency> | |
136 | - | |
137 | - <!-- jsr-107 api --> | |
138 | - <dependency> | |
139 | - <groupId>javax.persistence</groupId> | |
140 | - <artifactId>persistence-api</artifactId> | |
141 | - <version>${persistence.version}</version> | |
142 | - </dependency> | |
143 | - | |
144 | - <dependency> | |
145 | - <groupId>javax.transaction</groupId> | |
146 | - <artifactId>javax.transaction-api</artifactId> | |
147 | - <version>${transaction.version}</version> | |
148 | - </dependency> | |
149 | - | |
150 | - <dependency> | |
151 | - <groupId>javax.json</groupId> | |
152 | - <artifactId>javax.json-api</artifactId> | |
153 | - <version>1.0</version> | |
154 | - </dependency> | |
155 | - | |
156 | - <!-- configuration e messages --> | |
157 | - <dependency> | |
158 | - <groupId>org.apache.deltaspike.core</groupId> | |
159 | - <artifactId>deltaspike-core-api</artifactId> | |
160 | - <scope>compile</scope> | |
161 | - <version>${deltaspike.version}</version> | |
162 | - </dependency> | |
163 | - <dependency> | |
164 | - <groupId>org.apache.deltaspike.core</groupId> | |
165 | - <artifactId>deltaspike-core-impl</artifactId> | |
166 | - <scope>runtime</scope> | |
167 | - <version>${deltaspike.version}</version> | |
168 | - </dependency> | |
169 | - | |
170 | - <!-- demoiselle --> | |
171 | - <dependency> | |
172 | - <groupId>org.demoiselle.jee</groupId> | |
173 | - <artifactId>demoiselle-core</artifactId> | |
174 | - <version>${project.version}</version> | |
175 | - </dependency> | |
176 | - | |
177 | - </dependencies> | |
178 | - | |
179 | - </dependencyManagement> | |
3 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
4 | + | |
5 | + <artifactId>demoiselle-parent</artifactId> | |
6 | + <packaging>pom</packaging> | |
7 | + <modelVersion>4.0.0</modelVersion> | |
8 | + | |
9 | + <name>Demoiselle Parent POM</name> | |
10 | + | |
11 | + <parent> | |
12 | + <groupId>org.demoiselle.jee</groupId> | |
13 | + <artifactId>demoiselle-build</artifactId> | |
14 | + <version>3.0.0-BETA1-SNAPSHOT</version> | |
15 | + </parent> | |
16 | + | |
17 | + <properties> | |
18 | + <!-- General --> | |
19 | + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
20 | + | |
21 | + <!-- Dependencies versions --> | |
22 | + <javaee.version>7.0</javaee.version> | |
23 | + <cdi.version>1.2</cdi.version> | |
24 | + <validation.version>1.1.0.Final</validation.version> | |
25 | + <transaction.version>1.2</transaction.version> | |
26 | + <jstl.version>1.2</jstl.version> | |
27 | + <el.version>3.0.0</el.version> | |
28 | + <servlet.version>3.1.0</servlet.version> | |
29 | + <persistence.version>1.0.2</persistence.version> | |
30 | + <rest.version>2.0</rest.version> | |
31 | + <concurrent.version>1.0</concurrent.version> | |
32 | + <hibernate.version>5.1.0.Final</hibernate.version> | |
33 | + <hibernate.validator.version>5.2.4.Final</hibernate.validator.version> | |
34 | + <commons.configuration.version>2.0</commons.configuration.version> | |
35 | + <jaxrs.version>2.0.1</jaxrs.version> | |
36 | + <javaee.version>7.0</javaee.version> | |
37 | + <deltaspike.version>1.7.1</deltaspike.version> | |
38 | + <ejb.version>3.2</ejb.version> | |
39 | + <cache.version>1.0.0</cache.version> | |
40 | + | |
41 | + <!-- Maven plugin versions --> | |
42 | + <maven.compiler.plugin.version>3.5.1</maven.compiler.plugin.version> | |
43 | + <maven.war.plugin.version>2.6</maven.war.plugin.version> | |
44 | + <maven.compiler.source>1.8</maven.compiler.source> | |
45 | + <maven.compiler.target>1.8</maven.compiler.target> | |
46 | + | |
47 | + </properties> | |
48 | + | |
49 | + <dependencyManagement> | |
50 | + | |
51 | + <dependencies> | |
52 | + | |
53 | + <!-- jsr-299 api --> | |
54 | + <dependency> | |
55 | + <groupId>javax.enterprise</groupId> | |
56 | + <artifactId>cdi-api</artifactId> | |
57 | + <scope>provided</scope> | |
58 | + <version>${cdi.version}</version> | |
59 | + </dependency> | |
60 | + | |
61 | + <!-- jsr-349 api --> | |
62 | + <dependency> | |
63 | + <artifactId>validation-api</artifactId> | |
64 | + <groupId>javax.validation</groupId> | |
65 | + <scope>provided</scope> | |
66 | + <version>${validation.version}</version> | |
67 | + </dependency> | |
68 | + | |
69 | + <!-- jsr-341 api and impl --> | |
70 | + <dependency> | |
71 | + <groupId>org.glassfish</groupId> | |
72 | + <artifactId>javax.el</artifactId> | |
73 | + <scope>provided</scope> | |
74 | + <version>${el.version}</version> | |
75 | + </dependency> | |
76 | + | |
77 | + <!-- jsr-342 api --> | |
78 | + <dependency> | |
79 | + <groupId>javax</groupId> | |
80 | + <artifactId>javaee-api</artifactId> | |
81 | + <scope>provided</scope> | |
82 | + <version>${javaee.version}</version> | |
83 | + </dependency> | |
84 | + | |
85 | + <!-- jsr-340 api --> | |
86 | + <dependency> | |
87 | + <groupId>javax.servlet</groupId> | |
88 | + <artifactId>javax.servlet-api</artifactId> | |
89 | + <scope>provided</scope> | |
90 | + <version>${servlet.version}</version> | |
91 | + </dependency> | |
92 | + <dependency> | |
93 | + <groupId>javax.servlet</groupId> | |
94 | + <artifactId>jstl</artifactId> | |
95 | + <scope>provided</scope> | |
96 | + <version>${jstl.version}</version> | |
97 | + </dependency> | |
98 | + | |
99 | + <!-- jsr-338 api --> | |
100 | + <dependency> | |
101 | + <groupId>org.hibernate</groupId> | |
102 | + <artifactId>hibernate-entitymanager</artifactId> | |
103 | + <scope>provided</scope> | |
104 | + <version>${hibernate.version}</version> | |
105 | + </dependency> | |
106 | + | |
107 | + <!-- jsr-339 api --> | |
108 | + <dependency> | |
109 | + <groupId>javax.ws.rs</groupId> | |
110 | + <artifactId>javax.ws.rs-api</artifactId> | |
111 | + <scope>provided</scope> | |
112 | + <version>${jaxrs.version}</version> | |
113 | + </dependency> | |
114 | + | |
115 | + <!-- jsr-342 api --> | |
116 | + <dependency> | |
117 | + <groupId>javax</groupId> | |
118 | + <artifactId>javaee-web-api</artifactId> | |
119 | + <version>${javaee.version}</version> | |
120 | + </dependency> | |
121 | + | |
122 | + <!-- jsr-318 api --> | |
123 | + <dependency> | |
124 | + <groupId>javax.ejb</groupId> | |
125 | + <artifactId>javax.ejb-api</artifactId> | |
126 | + <version>${ejb.version}</version> | |
127 | + <scope>provided</scope> | |
128 | + </dependency> | |
129 | + | |
130 | + <!-- jsr-107 api --> | |
131 | + <dependency> | |
132 | + <groupId>javax.cache</groupId> | |
133 | + <artifactId>cache-api</artifactId> | |
134 | + <version>${cache.version}</version> | |
135 | + </dependency> | |
136 | + | |
137 | + <!-- jsr-107 api --> | |
138 | + <dependency> | |
139 | + <groupId>javax.persistence</groupId> | |
140 | + <artifactId>persistence-api</artifactId> | |
141 | + <version>${persistence.version}</version> | |
142 | + </dependency> | |
143 | + | |
144 | + <dependency> | |
145 | + <groupId>javax.transaction</groupId> | |
146 | + <artifactId>javax.transaction-api</artifactId> | |
147 | + <version>${transaction.version}</version> | |
148 | + </dependency> | |
149 | + | |
150 | + <dependency> | |
151 | + <groupId>javax.json</groupId> | |
152 | + <artifactId>javax.json-api</artifactId> | |
153 | + <version>1.0</version> | |
154 | + </dependency> | |
155 | + | |
156 | + <!-- configuration e messages --> | |
157 | + <dependency> | |
158 | + <groupId>org.apache.deltaspike.core</groupId> | |
159 | + <artifactId>deltaspike-core-api</artifactId> | |
160 | + <scope>compile</scope> | |
161 | + <version>${deltaspike.version}</version> | |
162 | + </dependency> | |
163 | + <dependency> | |
164 | + <groupId>org.apache.deltaspike.core</groupId> | |
165 | + <artifactId>deltaspike-core-impl</artifactId> | |
166 | + <scope>runtime</scope> | |
167 | + <version>${deltaspike.version}</version> | |
168 | + </dependency> | |
169 | + | |
170 | + <!-- demoiselle --> | |
171 | + <dependency> | |
172 | + <groupId>org.demoiselle.jee</groupId> | |
173 | + <artifactId>demoiselle-core</artifactId> | |
174 | + <version>${project.version}</version> | |
175 | + </dependency> | |
176 | + | |
177 | + <dependency> | |
178 | + <groupId>org.demoiselle.jee</groupId> | |
179 | + <artifactId>demoiselle-security</artifactId> | |
180 | + <version>${project.version}</version> | |
181 | + </dependency> | |
182 | + | |
183 | + </dependencies> | |
184 | + | |
185 | + </dependencyManagement> | |
180 | 186 | |
181 | 187 | </project> | ... | ... |
... | ... | @@ -0,0 +1,37 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
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 | + <modelVersion>4.0.0</modelVersion> | |
4 | + <artifactId>demoiselle-rest</artifactId> | |
5 | + <packaging>jar</packaging> | |
6 | + | |
7 | + <name>Demoiselle Rest</name> | |
8 | + <description> | |
9 | + Demoiselle Rest | |
10 | + </description> | |
11 | + | |
12 | + <parent> | |
13 | + <groupId>org.demoiselle.jee</groupId> | |
14 | + <artifactId>demoiselle-parent</artifactId> | |
15 | + <version>3.0.0-BETA1-SNAPSHOT</version> | |
16 | + <relativePath>../demoiselle-parent</relativePath> | |
17 | + </parent> | |
18 | + | |
19 | + <dependencies> | |
20 | + | |
21 | + <dependency> | |
22 | + <groupId>org.demoiselle.jee</groupId> | |
23 | + <artifactId>demoiselle-core</artifactId> | |
24 | + </dependency> | |
25 | + | |
26 | + <dependency> | |
27 | + <groupId>javax.ws.rs</groupId> | |
28 | + <artifactId>javax.ws.rs-api</artifactId> | |
29 | + </dependency> | |
30 | + | |
31 | + <dependency> | |
32 | + <groupId>javax.json</groupId> | |
33 | + <artifactId>javax.json-api</artifactId> | |
34 | + </dependency> | |
35 | + | |
36 | + </dependencies> | |
37 | +</project> | ... | ... |
demoiselle-rest/src/main/java/org/demoiselle/jee/ws/jaxrs/JaxRsFilter.java
0 → 100644
... | ... | @@ -0,0 +1,59 @@ |
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.jaxrs; | |
8 | + | |
9 | +import java.util.logging.Logger; | |
10 | +import javax.annotation.PostConstruct; | |
11 | +import javax.inject.Inject; | |
12 | +import javax.ws.rs.client.ClientRequestContext; | |
13 | +import javax.ws.rs.client.ClientRequestFilter; | |
14 | +import javax.ws.rs.client.ClientResponseContext; | |
15 | +import javax.ws.rs.client.ClientResponseFilter; | |
16 | +import javax.ws.rs.container.ContainerRequestContext; | |
17 | +import javax.ws.rs.container.ContainerRequestFilter; | |
18 | +import javax.ws.rs.container.ContainerResponseContext; | |
19 | +import javax.ws.rs.container.ContainerResponseFilter; | |
20 | +import javax.ws.rs.container.PreMatching; | |
21 | +import javax.ws.rs.ext.Provider; | |
22 | + | |
23 | +/** | |
24 | + * | |
25 | + * @author 70744416353 | |
26 | + */ | |
27 | +@Provider | |
28 | +@PreMatching | |
29 | +public class JaxRsFilter implements ClientRequestFilter, ClientResponseFilter, ContainerRequestFilter, ContainerResponseFilter { | |
30 | + | |
31 | + @Inject | |
32 | + private Logger LOG; | |
33 | + | |
34 | + @Override | |
35 | + public void filter(ClientRequestContext requestContext) { | |
36 | + } | |
37 | + | |
38 | + @Override | |
39 | + public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) { | |
40 | + } | |
41 | + | |
42 | + @Override | |
43 | + public void filter(ContainerRequestContext requestContext) { | |
44 | + } | |
45 | + | |
46 | + @Override | |
47 | + public void filter(ContainerRequestContext requestContext, ContainerResponseContext response) { | |
48 | + response.getHeaders().putSingle("Demoiselle", "3.0.0"); | |
49 | + response.getHeaders().putSingle("Access-Control-Allow-Origin", "*"); | |
50 | + response.getHeaders().putSingle("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, DELETE"); | |
51 | + response.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type"); | |
52 | + } | |
53 | + | |
54 | + @PostConstruct | |
55 | + public void init() { | |
56 | + LOG.info("Demoiselle Module - Rest"); | |
57 | + } | |
58 | + | |
59 | +} | ... | ... |
demoiselle-rest/src/main/java/org/demoiselle/jee/ws/jaxrs/crud/package-info.java
0 → 100644
... | ... | @@ -0,0 +1,11 @@ |
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.jaxrs.crud; | |
0 | 12 | \ No newline at end of file | ... | ... |
demoiselle-rest/src/main/java/org/demoiselle/jee/ws/jaxrs/exception/DemoiselleRESTException.java
0 → 100644
... | ... | @@ -0,0 +1,41 @@ |
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.jaxrs.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() { | |
22 | + | |
23 | + } | |
24 | + | |
25 | + public DemoiselleRESTException(String string) { | |
26 | + super(string); | |
27 | + } | |
28 | + | |
29 | + public int getStatusCode() { | |
30 | + return statusCode; | |
31 | + } | |
32 | + | |
33 | + public void addMessage(String field, String msg) { | |
34 | + this.statusCode = 422; | |
35 | + messages.put(field, msg); | |
36 | + } | |
37 | + | |
38 | + public HashMap<String, String> getMessages() { | |
39 | + return messages; | |
40 | + } | |
41 | +} | ... | ... |
demoiselle-rest/src/main/java/org/demoiselle/jee/ws/jaxrs/exception/mapper/GenericExceptionMapper.java
0 → 100644
... | ... | @@ -0,0 +1,68 @@ |
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.jaxrs.exception.mapper; | |
8 | + | |
9 | +import java.io.PrintWriter; | |
10 | +import java.io.StringWriter; | |
11 | +import java.util.HashMap; | |
12 | + | |
13 | +import javax.ws.rs.WebApplicationException; | |
14 | +import javax.ws.rs.core.MediaType; | |
15 | +import javax.ws.rs.core.Response; | |
16 | +import javax.ws.rs.ext.ExceptionMapper; | |
17 | +import javax.ws.rs.ext.Provider; | |
18 | + | |
19 | +import org.demoiselle.jee.ws.jaxrs.exception.DemoiselleRESTException; | |
20 | + | |
21 | +@Provider | |
22 | +public class GenericExceptionMapper implements ExceptionMapper<Exception> { | |
23 | + | |
24 | + public Response toResponse(Exception ex) { | |
25 | + | |
26 | + StringWriter errorStackTrace = new StringWriter(); | |
27 | + ex.printStackTrace(new PrintWriter(errorStackTrace)); | |
28 | + | |
29 | + // Verifica se a exception é de validação de PAYLOAD do REST | |
30 | + if (ex.getCause() instanceof DemoiselleRESTException) { | |
31 | + DemoiselleRESTException exDemoiselleREST = (DemoiselleRESTException) ex.getCause(); | |
32 | + if (!exDemoiselleREST.getMessages().isEmpty()) { | |
33 | + return Response.status(exDemoiselleREST.getStatusCode()).entity(exDemoiselleREST.getMessages()) | |
34 | + .type(MediaType.APPLICATION_JSON).build(); | |
35 | + } | |
36 | + } | |
37 | + | |
38 | + HashMap<String, String> entity = new HashMap<String, String>(); | |
39 | + | |
40 | + // No caso de existir message ele mostra a MESSAGE da Exception | |
41 | + if (ex.getMessage() != null) { | |
42 | + entity.put("error", ex.getMessage()); | |
43 | + | |
44 | + // Pega toda as mensagens da stacktrace | |
45 | + int level = 1; | |
46 | + while (ex.getCause() != null) { | |
47 | + ex = (Exception) ex.getCause(); | |
48 | + if (!ex.getMessage().isEmpty()) { | |
49 | + entity.put("inner_cause_" + level, ex.getMessage()); | |
50 | + } | |
51 | + level += 1; | |
52 | + } | |
53 | + | |
54 | + // Por padrão retorna SERVER ERROR, mas tenta encontrar o status do RESPONSE se for WebApplicationException | |
55 | + // http://docs.oracle.com/javaee/7/api/javax/ws/rs/WebApplicationException.html | |
56 | + int responseCode = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(); | |
57 | + if (ex instanceof WebApplicationException) { | |
58 | + responseCode = ((WebApplicationException)ex).getResponse().getStatus(); | |
59 | + } | |
60 | + | |
61 | + return Response.status(responseCode).entity(entity).type(MediaType.APPLICATION_JSON).build(); | |
62 | + } | |
63 | + | |
64 | + entity.put("error", "Erro interno desconhecido no servidor."); | |
65 | + return Response.status(500).entity(entity).type(MediaType.APPLICATION_JSON).build(); | |
66 | + } | |
67 | + | |
68 | +} | ... | ... |
demoiselle-rest/src/main/java/org/demoiselle/jee/ws/jaxrs/interceptor/ValidatePayload.java
0 → 100644
... | ... | @@ -0,0 +1,25 @@ |
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.jaxrs.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 | +} | |
0 | 26 | \ No newline at end of file | ... | ... |
demoiselle-rest/src/main/java/org/demoiselle/jee/ws/jaxrs/interceptor/ValidatePayloadInterceptor.java
0 → 100644
... | ... | @@ -0,0 +1,62 @@ |
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.jaxrs.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.jaxrs.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(); | |
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 | +} | |
0 | 63 | \ No newline at end of file | ... | ... |
demoiselle-security-basic/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</groupId> | |
5 | 4 | <artifactId>demoiselle-security-basic</artifactId> |
6 | - <version>3.0.0-SNAPSHOT</version> | |
7 | 5 | <packaging>jar</packaging> |
8 | - <properties> | |
9 | - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
10 | - <maven.compiler.source>1.8</maven.compiler.source> | |
11 | - <maven.compiler.target>1.8</maven.compiler.target> | |
12 | - </properties> | |
6 | + | |
7 | + <name>Demoiselle Security Basic</name> | |
8 | + <description> | |
9 | + Demoiselle Security Basic | |
10 | + </description> | |
11 | + | |
12 | + <parent> | |
13 | + <groupId>org.demoiselle.jee</groupId> | |
14 | + <artifactId>demoiselle-parent</artifactId> | |
15 | + <version>3.0.0-BETA1-SNAPSHOT</version> | |
16 | + <relativePath>../demoiselle-parent</relativePath> | |
17 | + </parent> | |
18 | + | |
13 | 19 | <dependencies> |
14 | 20 | |
15 | 21 | <dependency> |
16 | - <groupId>${project.groupId}</groupId> | |
17 | - <artifactId>demoiselle-core</artifactId> | |
18 | - <version>${project.version}</version> | |
19 | - </dependency> | |
20 | - | |
21 | - <dependency> | |
22 | - <groupId>${project.groupId}</groupId> | |
23 | - <artifactId>demoiselle-ws-jaxrs</artifactId> | |
24 | - <version>${project.version}</version> | |
25 | - </dependency> | |
26 | - | |
27 | - <dependency> | |
28 | - <groupId>${project.groupId}</groupId> | |
22 | + <groupId>org.demoiselle.jee</groupId> | |
29 | 23 | <artifactId>demoiselle-security</artifactId> |
30 | - <version>${project.version}</version> | |
31 | 24 | </dependency> |
32 | 25 | |
33 | 26 | </dependencies> | ... | ... |
demoiselle-security-basic/src/main/java/org/demoiselle/jee/security/basic/impl/TokensManagerImpl.java
... | ... | @@ -6,14 +6,17 @@ |
6 | 6 | package org.demoiselle.jee.security.basic.impl; |
7 | 7 | |
8 | 8 | import java.security.Principal; |
9 | +import java.util.List; | |
9 | 10 | import java.util.Map; |
10 | 11 | import java.util.UUID; |
11 | 12 | import java.util.concurrent.ConcurrentHashMap; |
12 | 13 | import java.util.logging.Logger; |
13 | 14 | import javax.enterprise.context.Dependent; |
15 | +import javax.enterprise.context.RequestScoped; | |
14 | 16 | import javax.inject.Inject; |
15 | -import org.demoiselle.jee.security.Token; | |
16 | -import org.demoiselle.jee.security.interfaces.TokensManager; | |
17 | +import org.demoiselle.jee.core.interfaces.security.DemoisellePrincipal; | |
18 | +import org.demoiselle.jee.core.interfaces.security.Token; | |
19 | +import org.demoiselle.jee.core.interfaces.security.TokensManager; | |
17 | 20 | |
18 | 21 | /** |
19 | 22 | * |
... | ... | @@ -27,25 +30,41 @@ public class TokensManagerImpl implements TokensManager { |
27 | 30 | @Inject |
28 | 31 | private Logger logger; |
29 | 32 | |
33 | + @Inject | |
34 | + @RequestScoped | |
35 | + private Token token; | |
36 | + | |
37 | + @Inject | |
38 | + @RequestScoped | |
39 | + private Principal loggedUser; | |
40 | + | |
30 | 41 | @Override |
31 | - public Principal getUser(Token token) { | |
32 | - return repo.get(token.getKey()); | |
42 | + public Principal getUser() { | |
43 | + if (loggedUser == null) { | |
44 | + if (token.getKey() != null && !token.getKey().isEmpty()) { | |
45 | + loggedUser = repo.get(token.getKey()); | |
46 | + return loggedUser; | |
47 | + } | |
48 | + } | |
49 | + return loggedUser; | |
33 | 50 | } |
34 | 51 | |
35 | 52 | @Override |
36 | - public Token getToken(Principal user) { | |
53 | + public void setUser(Principal user) { | |
37 | 54 | String value = null; |
38 | 55 | if (!repo.containsValue(user)) { |
39 | 56 | value = UUID.randomUUID().toString(); |
40 | 57 | repo.put(value, user); |
41 | - } else { | |
42 | - for (Map.Entry<String, Principal> entry : repo.entrySet()) { | |
43 | - if (entry.getValue().equals(user)) { | |
44 | - return entry.getKey(); | |
45 | - } | |
46 | - } | |
58 | + token.setKey(value); | |
59 | + token.setType("Basic"); | |
47 | 60 | } |
48 | - return value; | |
49 | 61 | } |
50 | 62 | |
63 | + @Override | |
64 | + public boolean validate() { | |
65 | + return true;//(getUser() != null && repo.get(token.getKey()).); | |
66 | + } | |
67 | + | |
68 | + | |
69 | + | |
51 | 70 | } | ... | ... |
demoiselle-security-jwt/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</groupId> | |
5 | 4 | <artifactId>demoiselle-security-jwt</artifactId> |
6 | - <version>3.0.0-SNAPSHOT</version> | |
7 | 5 | <packaging>jar</packaging> |
8 | - <properties> | |
9 | - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
10 | - <maven.compiler.source>1.8</maven.compiler.source> | |
11 | - <maven.compiler.target>1.8</maven.compiler.target> | |
12 | - </properties> | |
6 | + | |
7 | + <name>Demoiselle Security JWT</name> | |
8 | + <description> | |
9 | + Demoiselle Security JWT | |
10 | + </description> | |
11 | + | |
12 | + <parent> | |
13 | + <groupId>org.demoiselle.jee</groupId> | |
14 | + <artifactId>demoiselle-parent</artifactId> | |
15 | + <version>3.0.0-BETA1-SNAPSHOT</version> | |
16 | + <relativePath>../demoiselle-parent</relativePath> | |
17 | + </parent> | |
18 | + | |
13 | 19 | <dependencies> |
14 | 20 | |
15 | 21 | <dependency> |
16 | - <groupId>${project.groupId}</groupId> | |
17 | - <artifactId>demoiselle-core</artifactId> | |
18 | - <version>${project.version}</version> | |
19 | - </dependency> | |
20 | - | |
21 | - <dependency> | |
22 | - <groupId>${project.groupId}</groupId> | |
22 | + <groupId>org.demoiselle.jee</groupId> | |
23 | 23 | <artifactId>demoiselle-security</artifactId> |
24 | - <version>${project.version}</version> | |
25 | 24 | </dependency> |
26 | - | |
25 | + | |
27 | 26 | <dependency> |
28 | 27 | <groupId>org.bitbucket.b_c</groupId> |
29 | 28 | <artifactId>jose4j</artifactId> |
... | ... | @@ -36,6 +35,6 @@ |
36 | 35 | <version>2.2.2</version> |
37 | 36 | <scope>compile</scope> |
38 | 37 | </dependency> |
39 | - | |
38 | + | |
40 | 39 | </dependencies> |
41 | 40 | </project> | ... | ... |
demoiselle-security-jwt/src/main/java/org/demoiselle/jee/security/jwt/impl/TokensManagerImpl.java
... | ... | @@ -13,7 +13,8 @@ import java.util.logging.Logger; |
13 | 13 | import javax.enterprise.context.Dependent; |
14 | 14 | import javax.inject.Inject; |
15 | 15 | import javax.servlet.http.HttpServletRequest; |
16 | -import org.demoiselle.jee.security.interfaces.TokensManager; | |
16 | +import org.demoiselle.jee.core.security.LoggedUser; | |
17 | +import org.demoiselle.jee.core.security.TokensManager; | |
17 | 18 | import org.jose4j.jwk.RsaJsonWebKey; |
18 | 19 | import org.jose4j.jwk.RsaJwkGenerator; |
19 | 20 | import org.jose4j.jws.AlgorithmIdentifiers; |
... | ... | @@ -49,8 +50,8 @@ public class TokensManagerImpl implements TokensManager { |
49 | 50 | } |
50 | 51 | |
51 | 52 | @Override |
52 | - public Principal getUser(String jwt) { | |
53 | - Principal usuario = null; | |
53 | + public LoggedUser getUser(String jwt) { | |
54 | + LoggedUser usuario = null; | |
54 | 55 | if (jwt != null && !jwt.isEmpty()) { |
55 | 56 | JwtConsumer jwtConsumer = new JwtConsumerBuilder() |
56 | 57 | .setRequireExpirationTime() // the JWT must have an expiration time |
... | ... | @@ -62,7 +63,7 @@ public class TokensManagerImpl implements TokensManager { |
62 | 63 | |
63 | 64 | try { |
64 | 65 | JwtClaims jwtClaims = jwtConsumer.processToClaims(jwt); |
65 | - usuario = new Gson().fromJson((String) jwtClaims.getClaimValue("user"), Principal.class); | |
66 | + usuario = new Gson().fromJson((String) jwtClaims.getClaimValue("user"), LoggedUser.class); | |
66 | 67 | |
67 | 68 | String ip = httpRequest.getRemoteAddr(); |
68 | 69 | if (!ip.equalsIgnoreCase((String) jwtClaims.getClaimValue("ip"))) { |
... | ... | @@ -76,7 +77,7 @@ public class TokensManagerImpl implements TokensManager { |
76 | 77 | } |
77 | 78 | |
78 | 79 | @Override |
79 | - public String getToken(Principal user) { | |
80 | + public String setUser(LoggedUser user) { | |
80 | 81 | try { |
81 | 82 | JwtClaims claims = new JwtClaims(); |
82 | 83 | claims.setIssuer("demoiselle"); | ... | ... |
... | ... | @@ -0,0 +1,27 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
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 | + <modelVersion>4.0.0</modelVersion> | |
4 | + <artifactId>demoiselle-security-token</artifactId> | |
5 | + <packaging>jar</packaging> | |
6 | + | |
7 | + <name>Demoiselle Security Token</name> | |
8 | + <description> | |
9 | + Demoiselle Security Token | |
10 | + </description> | |
11 | + | |
12 | + <parent> | |
13 | + <groupId>org.demoiselle.jee</groupId> | |
14 | + <artifactId>demoiselle-parent</artifactId> | |
15 | + <version>3.0.0-BETA1-SNAPSHOT</version> | |
16 | + <relativePath>../demoiselle-parent</relativePath> | |
17 | + </parent> | |
18 | + | |
19 | + <dependencies> | |
20 | + | |
21 | + <dependency> | |
22 | + <groupId>org.demoiselle.jee</groupId> | |
23 | + <artifactId>demoiselle-security</artifactId> | |
24 | + </dependency> | |
25 | + | |
26 | + </dependencies> | |
27 | +</project> | ... | ... |
demoiselle-security-token/src/main/java/org/demoiselle/jee/security/basic/impl/TokensManagerImpl.java
0 → 100644
... | ... | @@ -0,0 +1,90 @@ |
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.security.basic.impl; | |
7 | + | |
8 | +import java.security.Principal; | |
9 | +import java.util.List; | |
10 | +import java.util.Map; | |
11 | +import java.util.UUID; | |
12 | +import java.util.concurrent.ConcurrentHashMap; | |
13 | +import java.util.logging.Logger; | |
14 | +import javax.enterprise.context.Dependent; | |
15 | +import javax.enterprise.context.RequestScoped; | |
16 | +import javax.inject.Inject; | |
17 | +import org.demoiselle.jee.core.interfaces.security.Token; | |
18 | +import org.demoiselle.jee.core.interfaces.security.TokensManager; | |
19 | + | |
20 | +/** | |
21 | + * | |
22 | + * @author 70744416353 | |
23 | + */ | |
24 | +@Dependent | |
25 | +public class TokensManagerImpl implements TokensManager { | |
26 | + | |
27 | + private static ConcurrentHashMap<String, Principal> repo = new ConcurrentHashMap<>(); | |
28 | + | |
29 | + @Inject | |
30 | + private Logger logger; | |
31 | + | |
32 | + @Inject | |
33 | + @RequestScoped | |
34 | + private Token token; | |
35 | + | |
36 | + @Inject | |
37 | + @RequestScoped | |
38 | + private Principal loggedUser; | |
39 | + | |
40 | + @Override | |
41 | + public Principal getUser() { | |
42 | + if (loggedUser == null) { | |
43 | + if (token.getKey() != null && !token.getKey().isEmpty()) { | |
44 | + loggedUser = repo.get(token.getKey()); | |
45 | + return loggedUser; | |
46 | + } | |
47 | + } | |
48 | + return loggedUser; | |
49 | + } | |
50 | + | |
51 | + @Override | |
52 | + public void setUser(Principal user) { | |
53 | + String value = null; | |
54 | + if (!repo.containsValue(user)) { | |
55 | + value = UUID.randomUUID().toString(); | |
56 | + repo.put(value, user); | |
57 | + token.setKey(value); | |
58 | + token.setType("Basic"); | |
59 | + } | |
60 | + } | |
61 | + | |
62 | + @Override | |
63 | + public boolean validate() { | |
64 | + return true;//(getUser() != null && repo.get(token.getKey()).); | |
65 | + } | |
66 | + | |
67 | + @Override | |
68 | + public Token getToken() { | |
69 | + return token; | |
70 | + } | |
71 | + | |
72 | + @Override | |
73 | + public void setToken(Token token) { | |
74 | + String key = null; | |
75 | + if (repo.containsKey(token.getKey())) { | |
76 | + loggedUser = repo.get(key); | |
77 | + } | |
78 | + } | |
79 | + | |
80 | + @Override | |
81 | + public void setRoles(List<String> roles) { | |
82 | + | |
83 | + } | |
84 | + | |
85 | + @Override | |
86 | + public void setPermissions(Map<String, String> permissions) { | |
87 | + | |
88 | + } | |
89 | + | |
90 | +} | ... | ... |
demoiselle-security-token/src/main/resources/demoiselle.properties
0 → 100644
demoiselle-security-token/src/main/resources/messages.properties
0 → 100644
demoiselle-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" |
3 | - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
4 | - <modelVersion>4.0.0</modelVersion> | |
5 | - <artifactId>demoiselle-security</artifactId> | |
6 | - <packaging>jar</packaging> | |
3 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
4 | + <modelVersion>4.0.0</modelVersion> | |
5 | + <artifactId>demoiselle-security</artifactId> | |
6 | + <packaging>jar</packaging> | |
7 | 7 | |
8 | - <name>Demoiselle Security</name> | |
9 | - <description> | |
10 | - Demoiselle Security | |
11 | - </description> | |
8 | + <name>Demoiselle Security</name> | |
9 | + <description> | |
10 | + Demoiselle Security | |
11 | + </description> | |
12 | 12 | |
13 | - <parent> | |
14 | - <groupId>org.demoiselle.jee</groupId> | |
15 | - <artifactId>demoiselle-parent</artifactId> | |
16 | - <version>3.0.0-BETA1-SNAPSHOT</version> | |
17 | - <relativePath>../demoiselle-parent</relativePath> | |
18 | - </parent> | |
13 | + <parent> | |
14 | + <groupId>org.demoiselle.jee</groupId> | |
15 | + <artifactId>demoiselle-parent</artifactId> | |
16 | + <version>3.0.0-BETA1-SNAPSHOT</version> | |
17 | + <relativePath>../demoiselle-parent</relativePath> | |
18 | + </parent> | |
19 | 19 | |
20 | - <dependencies> | |
20 | + <dependencies> | |
21 | 21 | |
22 | - <dependency> | |
23 | - <groupId>org.demoiselle.jee</groupId> | |
24 | - <artifactId>demoiselle-core</artifactId> | |
25 | - </dependency> | |
22 | + <dependency> | |
23 | + <groupId>org.demoiselle.jee</groupId> | |
24 | + <artifactId>demoiselle-core</artifactId> | |
25 | + </dependency> | |
26 | 26 | |
27 | - </dependencies> | |
27 | + </dependencies> | |
28 | 28 | </project> | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/JaxRsFilter.java
... | ... | @@ -1,76 +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.security; | |
8 | - | |
9 | -import java.io.IOException; | |
10 | -import org.demoiselle.jee.security.interfaces.SecurityContext; | |
11 | -import java.util.logging.Logger; | |
12 | -import javax.annotation.PostConstruct; | |
13 | -import javax.inject.Inject; | |
14 | -import javax.ws.rs.client.ClientRequestContext; | |
15 | -import javax.ws.rs.client.ClientRequestFilter; | |
16 | -import javax.ws.rs.client.ClientResponseContext; | |
17 | -import javax.ws.rs.client.ClientResponseFilter; | |
18 | -import javax.ws.rs.container.ContainerRequestContext; | |
19 | -import javax.ws.rs.container.ContainerRequestFilter; | |
20 | -import javax.ws.rs.container.ContainerResponseContext; | |
21 | -import javax.ws.rs.container.ContainerResponseFilter; | |
22 | -import javax.ws.rs.container.PreMatching; | |
23 | -import javax.ws.rs.ext.Provider; | |
24 | - | |
25 | -/** | |
26 | - * | |
27 | - * @author 70744416353 | |
28 | - */ | |
29 | -@Provider | |
30 | -@PreMatching | |
31 | -public class JaxRsFilter implements ClientRequestFilter, ClientResponseFilter, ContainerRequestFilter, ContainerResponseFilter { | |
32 | - | |
33 | - @Inject | |
34 | - private Logger LOG; | |
35 | - | |
36 | - @Inject | |
37 | - private SecurityContext securityContext; | |
38 | - | |
39 | - @PostConstruct | |
40 | - public void init() { | |
41 | - LOG.info("Demoiselle Module - Security"); | |
42 | - } | |
43 | - | |
44 | - @Override | |
45 | - public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { | |
46 | - responseContext.getHeaders().putSingle("Authorization", "enabled"); | |
47 | - responseContext.getHeaders().putSingle("x-content-type-options", "nosniff"); | |
48 | - responseContext.getHeaders().putSingle("x-frame-options", "SAMEORIGIN"); | |
49 | - responseContext.getHeaders().putSingle("x-xss-protection", "1; mode=block"); | |
50 | - } | |
51 | - | |
52 | - @Override | |
53 | - public void filter(ContainerRequestContext requestContext) throws IOException { | |
54 | - try { | |
55 | - if (requestContext.getHeaders().containsKey("Authorization")) { | |
56 | - String token = requestContext.getHeaders().get("Authorization").toString().replace("[", "").replace("]", ""); | |
57 | - if (!token.isEmpty()) { | |
58 | - securityContext.setToken(token); | |
59 | - } | |
60 | - } | |
61 | - } catch (Exception e) { | |
62 | - } | |
63 | - | |
64 | - } | |
65 | - | |
66 | - @Override | |
67 | - public void filter(ClientRequestContext requestContext) throws IOException { | |
68 | - | |
69 | - } | |
70 | - | |
71 | - @Override | |
72 | - public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { | |
73 | - | |
74 | - } | |
75 | - | |
76 | -} |
demoiselle-security/src/main/java/org/demoiselle/jee/security/LoggedUser.java
... | ... | @@ -1,67 +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.security; | |
8 | - | |
9 | -import java.util.List; | |
10 | -import java.util.Map; | |
11 | - | |
12 | -import javax.enterprise.context.RequestScoped; | |
13 | - | |
14 | -/** | |
15 | - * | |
16 | - * @author 70744416353 | |
17 | - */ | |
18 | -@RequestScoped | |
19 | -public class LoggedUser { | |
20 | - | |
21 | - private String id; | |
22 | - private String username; | |
23 | - private String email; | |
24 | - private Map<String, String> premissions; | |
25 | - private List<String> roles; | |
26 | - | |
27 | - public String getId() { | |
28 | - return id; | |
29 | - } | |
30 | - | |
31 | - public void setId(String id) { | |
32 | - this.id = id; | |
33 | - } | |
34 | - | |
35 | - public String getUsername() { | |
36 | - return username; | |
37 | - } | |
38 | - | |
39 | - public void setUsername(String username) { | |
40 | - this.username = username; | |
41 | - } | |
42 | - | |
43 | - public String getEmail() { | |
44 | - return email; | |
45 | - } | |
46 | - | |
47 | - public void setEmail(String email) { | |
48 | - this.email = email; | |
49 | - } | |
50 | - | |
51 | - public Map<String, String> getPremissions() { | |
52 | - return premissions; | |
53 | - } | |
54 | - | |
55 | - public void setPremissions(Map<String, String> premissions) { | |
56 | - this.premissions = premissions; | |
57 | - } | |
58 | - | |
59 | - public List<String> getRoles() { | |
60 | - return roles; | |
61 | - } | |
62 | - | |
63 | - public void setRoles(List<String> roles) { | |
64 | - this.roles = roles; | |
65 | - } | |
66 | - | |
67 | -} |
demoiselle-security/src/main/java/org/demoiselle/jee/security/Token.java
... | ... | @@ -1,28 +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.security; | |
8 | - | |
9 | -import javax.enterprise.context.RequestScoped; | |
10 | - | |
11 | -/** | |
12 | - * | |
13 | - * @author 70744416353 | |
14 | - */ | |
15 | -@RequestScoped | |
16 | -public class Token { | |
17 | - | |
18 | - private String key; | |
19 | - | |
20 | - public String getKey() { | |
21 | - return key; | |
22 | - } | |
23 | - | |
24 | - public void setKey(String key) { | |
25 | - this.key = key; | |
26 | - } | |
27 | - | |
28 | -} |
demoiselle-security/src/main/java/org/demoiselle/jee/security/annotation/LoggedIn.java
0 → 100644
... | ... | @@ -0,0 +1,31 @@ |
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.annotation; | |
8 | + | |
9 | +import javax.interceptor.InterceptorBinding; | |
10 | +import java.lang.annotation.Inherited; | |
11 | +import java.lang.annotation.Retention; | |
12 | +import java.lang.annotation.Target; | |
13 | + | |
14 | +import static java.lang.annotation.ElementType.METHOD; | |
15 | +import static java.lang.annotation.ElementType.TYPE; | |
16 | +import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
17 | + | |
18 | +/** | |
19 | + * <p> | |
20 | + * Indicates that a specific permission is required in order to invocate the annotated method or class. | |
21 | + * </p> | |
22 | + * | |
23 | + * @author SERPRO | |
24 | + */ | |
25 | + | |
26 | +@Inherited | |
27 | +@InterceptorBinding | |
28 | +@Target({ METHOD, TYPE }) | |
29 | +@Retention(RUNTIME) | |
30 | +public @interface LoggedIn { | |
31 | +} | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/annotation/RequiredPermission.java
0 → 100644
... | ... | @@ -0,0 +1,35 @@ |
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.annotation; | |
8 | + | |
9 | +import javax.enterprise.util.Nonbinding; | |
10 | +import javax.interceptor.InterceptorBinding; | |
11 | +import java.lang.annotation.Inherited; | |
12 | +import java.lang.annotation.Retention; | |
13 | +import java.lang.annotation.Target; | |
14 | + | |
15 | +import static java.lang.annotation.ElementType.METHOD; | |
16 | +import static java.lang.annotation.ElementType.TYPE; | |
17 | +import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
18 | + | |
19 | +/** | |
20 | + * Indicates that a specific permission is required in order to invocate the annotated method or class. | |
21 | + * | |
22 | + * @author SERPRO | |
23 | + */ | |
24 | +@Inherited | |
25 | +@InterceptorBinding | |
26 | +@Target({ METHOD, TYPE }) | |
27 | +@Retention(RUNTIME) | |
28 | +public @interface RequiredPermission { | |
29 | + | |
30 | + @Nonbinding | |
31 | + String resource() default ""; | |
32 | + | |
33 | + @Nonbinding | |
34 | + String operation() default ""; | |
35 | +} | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/annotation/RequiredRole.java
0 → 100644
... | ... | @@ -0,0 +1,35 @@ |
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.annotation; | |
8 | + | |
9 | +import javax.enterprise.util.Nonbinding; | |
10 | +import javax.interceptor.InterceptorBinding; | |
11 | +import java.lang.annotation.Inherited; | |
12 | +import java.lang.annotation.Retention; | |
13 | +import java.lang.annotation.Target; | |
14 | + | |
15 | +import static java.lang.annotation.ElementType.METHOD; | |
16 | +import static java.lang.annotation.ElementType.TYPE; | |
17 | +import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
18 | + | |
19 | +/** | |
20 | + * <p> | |
21 | + * Indicates that the annotated method or class requires the user to have one or more roles associated in order to be | |
22 | + * invocated. | |
23 | + * </p> | |
24 | + * | |
25 | + * @author SERPRO | |
26 | + */ | |
27 | +@Inherited | |
28 | +@InterceptorBinding | |
29 | +@Target({ METHOD, TYPE }) | |
30 | +@Retention(RUNTIME) | |
31 | +public @interface RequiredRole { | |
32 | + | |
33 | + @Nonbinding | |
34 | + String[] value(); | |
35 | +} | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/annotations/LoggedIn.java
... | ... | @@ -1,31 +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.security.annotations; | |
8 | - | |
9 | -import javax.interceptor.InterceptorBinding; | |
10 | -import java.lang.annotation.Inherited; | |
11 | -import java.lang.annotation.Retention; | |
12 | -import java.lang.annotation.Target; | |
13 | - | |
14 | -import static java.lang.annotation.ElementType.METHOD; | |
15 | -import static java.lang.annotation.ElementType.TYPE; | |
16 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
17 | - | |
18 | -/** | |
19 | - * <p> | |
20 | - * Indicates that a specific permission is required in order to invocate the annotated method or class. | |
21 | - * </p> | |
22 | - * | |
23 | - * @author SERPRO | |
24 | - */ | |
25 | - | |
26 | -@Inherited | |
27 | -@InterceptorBinding | |
28 | -@Target({ METHOD, TYPE }) | |
29 | -@Retention(RUNTIME) | |
30 | -public @interface LoggedIn { | |
31 | -} |
demoiselle-security/src/main/java/org/demoiselle/jee/security/annotations/RequiredPermission.java
... | ... | @@ -1,35 +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.security.annotations; | |
8 | - | |
9 | -import javax.enterprise.util.Nonbinding; | |
10 | -import javax.interceptor.InterceptorBinding; | |
11 | -import java.lang.annotation.Inherited; | |
12 | -import java.lang.annotation.Retention; | |
13 | -import java.lang.annotation.Target; | |
14 | - | |
15 | -import static java.lang.annotation.ElementType.METHOD; | |
16 | -import static java.lang.annotation.ElementType.TYPE; | |
17 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
18 | - | |
19 | -/** | |
20 | - * Indicates that a specific permission is required in order to invocate the annotated method or class. | |
21 | - * | |
22 | - * @author SERPRO | |
23 | - */ | |
24 | -@Inherited | |
25 | -@InterceptorBinding | |
26 | -@Target({ METHOD, TYPE }) | |
27 | -@Retention(RUNTIME) | |
28 | -public @interface RequiredPermission { | |
29 | - | |
30 | - @Nonbinding | |
31 | - String resource() default ""; | |
32 | - | |
33 | - @Nonbinding | |
34 | - String operation() default ""; | |
35 | -} |
demoiselle-security/src/main/java/org/demoiselle/jee/security/annotations/RequiredRole.java
... | ... | @@ -1,35 +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.security.annotations; | |
8 | - | |
9 | -import javax.enterprise.util.Nonbinding; | |
10 | -import javax.interceptor.InterceptorBinding; | |
11 | -import java.lang.annotation.Inherited; | |
12 | -import java.lang.annotation.Retention; | |
13 | -import java.lang.annotation.Target; | |
14 | - | |
15 | -import static java.lang.annotation.ElementType.METHOD; | |
16 | -import static java.lang.annotation.ElementType.TYPE; | |
17 | -import static java.lang.annotation.RetentionPolicy.RUNTIME; | |
18 | - | |
19 | -/** | |
20 | - * <p> | |
21 | - * Indicates that the annotated method or class requires the user to have one or more roles associated in order to be | |
22 | - * invocated. | |
23 | - * </p> | |
24 | - * | |
25 | - * @author SERPRO | |
26 | - */ | |
27 | -@Inherited | |
28 | -@InterceptorBinding | |
29 | -@Target({ METHOD, TYPE }) | |
30 | -@Retention(RUNTIME) | |
31 | -public @interface RequiredRole { | |
32 | - | |
33 | - @Nonbinding | |
34 | - String[] value(); | |
35 | -} |
demoiselle-security/src/main/java/org/demoiselle/jee/security/filter/JaxRsFilter.java
0 → 100644
... | ... | @@ -0,0 +1,79 @@ |
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.filter; | |
8 | + | |
9 | +import java.io.IOException; | |
10 | +import java.util.logging.Logger; | |
11 | +import javax.annotation.PostConstruct; | |
12 | +import javax.inject.Inject; | |
13 | +import javax.ws.rs.client.ClientRequestContext; | |
14 | +import javax.ws.rs.client.ClientRequestFilter; | |
15 | +import javax.ws.rs.client.ClientResponseContext; | |
16 | +import javax.ws.rs.client.ClientResponseFilter; | |
17 | +import javax.ws.rs.container.ContainerRequestContext; | |
18 | +import javax.ws.rs.container.ContainerRequestFilter; | |
19 | +import javax.ws.rs.container.ContainerResponseContext; | |
20 | +import javax.ws.rs.container.ContainerResponseFilter; | |
21 | +import javax.ws.rs.container.PreMatching; | |
22 | +import javax.ws.rs.ext.Provider; | |
23 | +import org.demoiselle.jee.core.interfaces.security.SecurityContext; | |
24 | +import org.demoiselle.jee.core.interfaces.security.Token; | |
25 | + | |
26 | +/** | |
27 | + * | |
28 | + * @author 70744416353 | |
29 | + */ | |
30 | +@Provider | |
31 | +@PreMatching | |
32 | +public class JaxRsFilter implements ClientRequestFilter, ClientResponseFilter, ContainerRequestFilter, ContainerResponseFilter { | |
33 | + | |
34 | + @Inject | |
35 | + private Logger LOG; | |
36 | + | |
37 | + @Inject | |
38 | + private Token token; | |
39 | + | |
40 | + @PostConstruct | |
41 | + public void init() { | |
42 | + LOG.info("Demoiselle Module - Security"); | |
43 | + } | |
44 | + | |
45 | + @Override | |
46 | + public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { | |
47 | + responseContext.getHeaders().putSingle("Authorization", "enabled"); | |
48 | + responseContext.getHeaders().putSingle("x-content-type-options", "nosniff"); | |
49 | + responseContext.getHeaders().putSingle("x-frame-options", "SAMEORIGIN"); | |
50 | + responseContext.getHeaders().putSingle("x-xss-protection", "1; mode=block"); | |
51 | + } | |
52 | + | |
53 | + @Override | |
54 | + public void filter(ContainerRequestContext requestContext) throws IOException { | |
55 | + try { | |
56 | + if (requestContext.getHeaders().containsKey("Authorization")) { | |
57 | + String chave = requestContext.getHeaders().get("Authorization").toString().replace("[", "").replace("]", ""); | |
58 | + if (!chave.isEmpty()) { | |
59 | + token.setType(chave.split(" ")[0]); | |
60 | + token.setKey(chave.split(" ")[1]); | |
61 | + } | |
62 | + } | |
63 | + } catch (Exception e) { | |
64 | + LOG.fine(e.getMessage()); | |
65 | + } | |
66 | + | |
67 | + } | |
68 | + | |
69 | + @Override | |
70 | + public void filter(ClientRequestContext requestContext) throws IOException { | |
71 | + | |
72 | + } | |
73 | + | |
74 | + @Override | |
75 | + public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException { | |
76 | + | |
77 | + } | |
78 | + | |
79 | +} | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/impl/SecurityContextImpl.java
... | ... | @@ -7,18 +7,17 @@ |
7 | 7 | package org.demoiselle.jee.security.impl; |
8 | 8 | |
9 | 9 | import java.security.Principal; |
10 | +import java.util.List; | |
10 | 11 | import java.util.Map; |
11 | -import java.util.Set; | |
12 | - | |
13 | 12 | import javax.enterprise.context.Dependent; |
14 | 13 | import javax.inject.Inject; |
15 | 14 | |
16 | 15 | import org.demoiselle.jee.core.util.ResourceBundle; |
17 | -import org.demoiselle.jee.security.LoggedUser; | |
18 | -import org.demoiselle.jee.security.Token; | |
16 | + | |
19 | 17 | import org.demoiselle.jee.security.exception.NotLoggedInException; |
20 | -import org.demoiselle.jee.security.interfaces.SecurityContext; | |
21 | -import org.demoiselle.jee.security.interfaces.TokensManager; | |
18 | +import org.demoiselle.jee.core.interfaces.security.SecurityContext; | |
19 | +import org.demoiselle.jee.core.interfaces.security.Token; | |
20 | +import org.demoiselle.jee.core.interfaces.security.TokensManager; | |
22 | 21 | |
23 | 22 | /** |
24 | 23 | * <p> |
... | ... | @@ -36,12 +35,6 @@ public class SecurityContextImpl implements SecurityContext { |
36 | 35 | private TokensManager tm; |
37 | 36 | |
38 | 37 | @Inject |
39 | - private Token token; | |
40 | - | |
41 | - @Inject | |
42 | - private LoggedUser loggedUser; | |
43 | - | |
44 | - @Inject | |
45 | 38 | private ResourceBundle bundle; |
46 | 39 | |
47 | 40 | /** |
... | ... | @@ -70,20 +63,10 @@ public class SecurityContextImpl implements SecurityContext { |
70 | 63 | */ |
71 | 64 | @Override |
72 | 65 | public boolean isLoggedIn() { |
73 | - return getUser() != null; | |
66 | + return tm.validate(); | |
74 | 67 | } |
75 | 68 | |
76 | - /** | |
77 | - * @see org.demoiselle.security.SecurityContext#getUser() | |
78 | - */ | |
79 | 69 | @Override |
80 | - public Principal getUser() { | |
81 | -// if (token.getKey() != null && !token.getKey().isEmpty()) { | |
82 | -// return tm.getUser(token.getKey()); | |
83 | -// } | |
84 | - return null;//token.getPrincipal(); | |
85 | - } | |
86 | - | |
87 | 70 | public void checkLoggedIn() throws NotLoggedInException { |
88 | 71 | if (!isLoggedIn()) { |
89 | 72 | throw new NotLoggedInException(bundle.getString("user-not-authenticated")); |
... | ... | @@ -91,46 +74,13 @@ public class SecurityContextImpl implements SecurityContext { |
91 | 74 | } |
92 | 75 | |
93 | 76 | @Override |
94 | - public void setRoles(Set<String> roles) { | |
95 | - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. | |
96 | - } | |
97 | - | |
98 | - @Override | |
99 | - public void setPermission(Map<String, String> permissions) { | |
100 | - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. | |
101 | - } | |
102 | - | |
103 | - @Override | |
104 | - public Set<String> getResources(String operation) { | |
105 | - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. | |
106 | - } | |
107 | - | |
108 | - @Override | |
109 | - public Set<String> getOperations(String resources) { | |
110 | - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. | |
111 | - } | |
112 | - | |
113 | - @Override | |
114 | - public void setUser(Principal principal) { | |
115 | -// token.setKey(tm.getToken(principal)); | |
116 | -// token.setPrincipal(principal); | |
117 | - } | |
118 | - | |
119 | - @Override | |
120 | - public String getToken() { | |
121 | -// if (token.getKey() != null && token.getKey().isEmpty()) { | |
122 | -// token.setKey(tm.getToken(token.getPrincipal())); | |
123 | -// } | |
124 | - return token.getKey(); | |
77 | + public Principal getUser() { | |
78 | + return tm.getUser(); | |
125 | 79 | } |
126 | 80 | |
127 | 81 | @Override |
128 | - public void setToken(String chave) { | |
129 | -// token.setPrincipal(tm.getUser(chave)); | |
130 | -// if (token.getPrincipal() == null) { | |
131 | -// throw new NotLoggedInException(bundle.getString("user-not-authenticated")); | |
132 | -// } | |
133 | - token.setKey(chave); | |
82 | + public void setUser(Principal loggedUser) { | |
83 | + tm.setUser(loggedUser); | |
134 | 84 | } |
135 | 85 | |
136 | 86 | } | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/impl/TokenImpl.java
0 → 100644
... | ... | @@ -0,0 +1,41 @@ |
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.security.impl; | |
7 | + | |
8 | +import javax.enterprise.context.Dependent; | |
9 | +import org.demoiselle.jee.core.interfaces.security.Token; | |
10 | + | |
11 | +/** | |
12 | + * | |
13 | + * @author 70744416353 | |
14 | + */ | |
15 | +@Dependent | |
16 | +public class TokenImpl implements Token { | |
17 | + | |
18 | + private String key; | |
19 | + private String type; | |
20 | + | |
21 | + @Override | |
22 | + public String getKey() { | |
23 | + return key; | |
24 | + } | |
25 | + | |
26 | + @Override | |
27 | + public void setKey(String key) { | |
28 | + this.key = key; | |
29 | + } | |
30 | + | |
31 | + @Override | |
32 | + public String getType() { | |
33 | + return type; | |
34 | + } | |
35 | + | |
36 | + @Override | |
37 | + public void setType(String type) { | |
38 | + this.type = type; | |
39 | + } | |
40 | + | |
41 | +} | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/LoggedInInterceptor.java
... | ... | @@ -12,8 +12,8 @@ import javax.interceptor.AroundInvoke; |
12 | 12 | import javax.interceptor.Interceptor; |
13 | 13 | import javax.interceptor.InvocationContext; |
14 | 14 | import java.io.Serializable; |
15 | -import org.demoiselle.jee.security.annotations.LoggedIn; | |
16 | -import org.demoiselle.jee.security.interfaces.SecurityContext; | |
15 | +import org.demoiselle.jee.security.annotation.LoggedIn; | |
16 | +import org.demoiselle.jee.core.interfaces.security.SecurityContext; | |
17 | 17 | |
18 | 18 | /** |
19 | 19 | * <p> | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredPermissionInterceptor.java
... | ... | @@ -9,19 +9,18 @@ package org.demoiselle.jee.security.interceptor; |
9 | 9 | import org.demoiselle.jee.security.exception.AuthorizationException; |
10 | 10 | |
11 | 11 | import javax.annotation.Priority; |
12 | -import javax.enterprise.inject.spi.CDI; | |
13 | 12 | import javax.interceptor.AroundInvoke; |
14 | 13 | import javax.interceptor.Interceptor; |
15 | 14 | import javax.interceptor.InvocationContext; |
16 | 15 | import java.io.Serializable; |
16 | +import java.security.Principal; | |
17 | 17 | import java.util.logging.Logger; |
18 | 18 | import javax.inject.Inject; |
19 | -import static javax.sql.rowset.spi.SyncFactory.getLogger; | |
20 | 19 | import org.demoiselle.jee.core.annotation.Name; |
21 | 20 | import org.demoiselle.jee.core.util.ResourceBundle; |
22 | 21 | import org.demoiselle.jee.core.util.Strings; |
23 | -import org.demoiselle.jee.security.annotations.RequiredPermission; | |
24 | -import org.demoiselle.jee.security.interfaces.SecurityContext; | |
22 | +import org.demoiselle.jee.security.annotation.RequiredPermission; | |
23 | +import org.demoiselle.jee.core.interfaces.security.SecurityContext; | |
25 | 24 | |
26 | 25 | /** |
27 | 26 | * <p> |
... | ... | @@ -38,6 +37,12 @@ public class RequiredPermissionInterceptor implements Serializable { |
38 | 37 | private static final long serialVersionUID = 1L; |
39 | 38 | |
40 | 39 | @Inject |
40 | + private SecurityContext securityContext; | |
41 | + | |
42 | + @Inject | |
43 | + private Principal loggedUser; | |
44 | + | |
45 | + @Inject | |
41 | 46 | private ResourceBundle bundle; |
42 | 47 | |
43 | 48 | @Inject |
... | ... | @@ -66,17 +71,17 @@ public class RequiredPermissionInterceptor implements Serializable { |
66 | 71 | String operation = getOperation(ic); |
67 | 72 | String username = null; |
68 | 73 | |
69 | - if (getSecurityContext().isLoggedIn()) { | |
70 | - username = getSecurityContext().getUser().getName(); | |
71 | - getLogger().finest(bundle.getString("access-checking", username, operation, resource)); | |
74 | + if (securityContext.isLoggedIn()) { | |
75 | + username = loggedUser.getName(); | |
76 | + logger.finest(bundle.getString("access-checking", username, operation, resource)); | |
72 | 77 | } |
73 | 78 | |
74 | - if (!getSecurityContext().hasPermission(resource, operation)) { | |
75 | - getLogger().severe(bundle.getString("access-denied", username, operation, resource)); | |
79 | + if (securityContext.hasPermission(resource, operation)) { | |
80 | + logger.severe(bundle.getString("access-denied", username, operation, resource)); | |
76 | 81 | throw new AuthorizationException(bundle.getString("access-denied-ui", resource, operation)); |
77 | 82 | } |
78 | 83 | |
79 | - getLogger().fine(bundle.getString("access-allowed", username, operation, resource)); | |
84 | + logger.fine(bundle.getString("access-allowed", username, operation, resource)); | |
80 | 85 | return ic.proceed(); |
81 | 86 | } |
82 | 87 | |
... | ... | @@ -144,7 +149,4 @@ public class RequiredPermissionInterceptor implements Serializable { |
144 | 149 | } |
145 | 150 | } |
146 | 151 | |
147 | - private SecurityContext getSecurityContext() { | |
148 | - return CDI.current().select(SecurityContext.class).get(); | |
149 | - } | |
150 | 152 | } | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/interceptor/RequiredRoleInterceptor.java
... | ... | @@ -9,11 +9,11 @@ package org.demoiselle.jee.security.interceptor; |
9 | 9 | import org.demoiselle.jee.security.exception.AuthorizationException; |
10 | 10 | |
11 | 11 | import javax.annotation.Priority; |
12 | -import javax.enterprise.inject.spi.CDI; | |
13 | 12 | import javax.interceptor.AroundInvoke; |
14 | 13 | import javax.interceptor.Interceptor; |
15 | 14 | import javax.interceptor.InvocationContext; |
16 | 15 | import java.io.Serializable; |
16 | +import java.security.Principal; | |
17 | 17 | import java.util.ArrayList; |
18 | 18 | import java.util.Arrays; |
19 | 19 | import java.util.List; |
... | ... | @@ -21,8 +21,8 @@ import java.util.List; |
21 | 21 | import java.util.logging.Logger; |
22 | 22 | import javax.inject.Inject; |
23 | 23 | import org.demoiselle.jee.core.util.ResourceBundle; |
24 | -import org.demoiselle.jee.security.annotations.RequiredRole; | |
25 | -import org.demoiselle.jee.security.interfaces.SecurityContext; | |
24 | +import org.demoiselle.jee.security.annotation.RequiredRole; | |
25 | +import org.demoiselle.jee.core.interfaces.security.SecurityContext; | |
26 | 26 | |
27 | 27 | /** |
28 | 28 | * <p> |
... | ... | @@ -39,6 +39,12 @@ public class RequiredRoleInterceptor implements Serializable { |
39 | 39 | private static final long serialVersionUID = 1L; |
40 | 40 | |
41 | 41 | @Inject |
42 | + private SecurityContext securityContext; | |
43 | + | |
44 | + @Inject | |
45 | + private Principal loggedUser; | |
46 | + | |
47 | + @Inject | |
42 | 48 | private ResourceBundle bundle; |
43 | 49 | |
44 | 50 | @Inject |
... | ... | @@ -64,27 +70,27 @@ public class RequiredRoleInterceptor implements Serializable { |
64 | 70 | public Object manage(final InvocationContext ic) throws Exception { |
65 | 71 | List<String> roles = getRoles(ic); |
66 | 72 | |
67 | - if (getSecurityContext().isLoggedIn()) { | |
73 | + if (securityContext.isLoggedIn()) { | |
68 | 74 | logger.info( |
69 | - bundle.getString("has-role-verification", getSecurityContext().getUser().getName(), roles)); | |
75 | + bundle.getString("has-role-verification", loggedUser.getName(), roles)); | |
70 | 76 | } |
71 | 77 | |
72 | 78 | List<String> userRoles = new ArrayList<String>(); |
73 | 79 | |
74 | 80 | for (String role : roles) { |
75 | - if (getSecurityContext().hasRole(role)) { | |
81 | + if (securityContext.hasRole(role)) { | |
76 | 82 | userRoles.add(role); |
77 | 83 | } |
78 | 84 | } |
79 | 85 | |
80 | 86 | if (userRoles.isEmpty()) { |
81 | 87 | logger.severe( |
82 | - bundle.getString("does-not-have-role", getSecurityContext().getUser().getName(), roles)); | |
88 | + bundle.getString("does-not-have-role", loggedUser.getName(), roles)); | |
83 | 89 | |
84 | 90 | throw new AuthorizationException(bundle.getString("does-not-have-role-ui", roles)); |
85 | 91 | } |
86 | 92 | |
87 | - logger.fine(bundle.getString("user-has-role", getSecurityContext().getUser().getName(), userRoles)); | |
93 | + logger.fine(bundle.getString("user-has-role", loggedUser.getName(), userRoles)); | |
88 | 94 | |
89 | 95 | return ic.proceed(); |
90 | 96 | } |
... | ... | @@ -110,8 +116,4 @@ public class RequiredRoleInterceptor implements Serializable { |
110 | 116 | return Arrays.asList(roles); |
111 | 117 | } |
112 | 118 | |
113 | - private SecurityContext getSecurityContext() { | |
114 | - return CDI.current().select(SecurityContext.class).get(); | |
115 | - } | |
116 | - | |
117 | 119 | } | ... | ... |
demoiselle-security/src/main/java/org/demoiselle/jee/security/interfaces/LoggedUser.java
... | ... | @@ -1,38 +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.security.interfaces; | |
8 | - | |
9 | -import java.io.Serializable; | |
10 | -import java.security.Principal; | |
11 | -import java.util.List; | |
12 | -import java.util.Map; | |
13 | - | |
14 | -import javax.enterprise.context.RequestScoped; | |
15 | - | |
16 | -/** | |
17 | - * <p> | |
18 | - * Structure used to handle both authentication and authorizations mechanisms. | |
19 | - * </p> | |
20 | - * | |
21 | - * @author SERPRO | |
22 | - */ | |
23 | -@RequestScoped | |
24 | -public interface LoggedUser extends Principal, Serializable { | |
25 | - | |
26 | - public String getId(); | |
27 | - | |
28 | - public void setId(String id); | |
29 | - | |
30 | - public Map<String, String> getPermissions(); | |
31 | - | |
32 | - public void setPermissions(Map<String, String> premissions); | |
33 | - | |
34 | - public List<String> getRoles(); | |
35 | - | |
36 | - public void setRoles(List<String> roles); | |
37 | - | |
38 | -} |
demoiselle-security/src/main/java/org/demoiselle/jee/security/interfaces/SecurityContext.java
... | ... | @@ -1,86 +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.security.interfaces; | |
8 | - | |
9 | -import java.io.Serializable; | |
10 | -import java.security.Principal; | |
11 | -import java.util.Map; | |
12 | -import java.util.Set; | |
13 | -import org.demoiselle.jee.security.exception.AuthorizationException; | |
14 | -import org.demoiselle.jee.security.exception.NotLoggedInException; | |
15 | - | |
16 | -/** | |
17 | - * <p> | |
18 | - * Structure used to handle both authentication and authorizations mechanisms. | |
19 | - * </p> | |
20 | - * | |
21 | - * @author SERPRO | |
22 | - */ | |
23 | -public interface SecurityContext extends Serializable { | |
24 | - | |
25 | - /** | |
26 | - * Checks if a specific user is logged in. | |
27 | - * | |
28 | - * @return {@code true} if the user is logged in | |
29 | - */ | |
30 | - boolean isLoggedIn(); | |
31 | - | |
32 | - /** | |
33 | - * @throws NotLoggedInException if there is no user logged in a specific | |
34 | - * session | |
35 | - */ | |
36 | - void checkLoggedIn(); | |
37 | - | |
38 | - /** | |
39 | - * Checks if the logged user has permission to execute an specific operation | |
40 | - * on a specific resource. | |
41 | - * | |
42 | - * @param resource resource to be checked | |
43 | - * @param operation operation to be checked | |
44 | - * @return {@code true} if the user has the permission | |
45 | - * @throws AuthorizationException When the permission checking fails, this | |
46 | - * exception is thrown. | |
47 | - * @throws NotLoggedInException if there is no user logged in a specific | |
48 | - * session. | |
49 | - */ | |
50 | - boolean hasPermission(String resource, String operation); | |
51 | - | |
52 | - /** | |
53 | - * Checks if the logged user has an specific role | |
54 | - * | |
55 | - * @param role role to be checked | |
56 | - * @return {@code true} if the user has the role | |
57 | - * @throws AuthorizationException When the permission checking fails, this | |
58 | - * exception is thrown. | |
59 | - * @throws NotLoggedInException if there is no user logged in a specific | |
60 | - * session. | |
61 | - */ | |
62 | - boolean hasRole(String role); | |
63 | - | |
64 | - /** | |
65 | - * Return the user logged in the session. | |
66 | - * | |
67 | - * @return the user logged in a specific authenticated session. If there is | |
68 | - * no active session {@code null} is returned. | |
69 | - */ | |
70 | - Principal getUser(); | |
71 | - | |
72 | - void setUser(Principal principal); | |
73 | - | |
74 | - String getToken(); | |
75 | - | |
76 | - void setToken(String token); | |
77 | - | |
78 | - void setRoles(Set<String> roles); | |
79 | - | |
80 | - void setPermission(Map<String, String> permissions); | |
81 | - | |
82 | - Set<String> getResources(String operation); | |
83 | - | |
84 | - Set<String> getOperations(String resources); | |
85 | - | |
86 | -} |
demoiselle-security/src/main/java/org/demoiselle/jee/security/interfaces/TokensManager.java
... | ... | @@ -1,27 +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.security.interfaces; | |
8 | - | |
9 | -import java.io.Serializable; | |
10 | - | |
11 | -import org.demoiselle.jee.security.LoggedUser; | |
12 | -import org.demoiselle.jee.security.Token; | |
13 | - | |
14 | -/** | |
15 | - * <p> | |
16 | - * Structure used to handle both authentication and authorizations mechanisms. | |
17 | - * </p> | |
18 | - * | |
19 | - * @author SERPRO | |
20 | - */ | |
21 | -public interface TokensManager extends Serializable { | |
22 | - | |
23 | - public LoggedUser getUser(Token token); | |
24 | - | |
25 | - public String create(LoggedUser user); | |
26 | - | |
27 | -} |
demoiselle-ws-jaxrs/.gitignore
demoiselle-ws-jaxrs/pom.xml
... | ... | @@ -1,37 +0,0 @@ |
1 | -<?xml version="1.0" encoding="UTF-8"?> | |
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 | - <modelVersion>4.0.0</modelVersion> | |
4 | - <artifactId>demoiselle-ws-jaxrs</artifactId> | |
5 | - <packaging>jar</packaging> | |
6 | - | |
7 | - <name>Demoiselle Web Service</name> | |
8 | - <description> | |
9 | - Demoiselle Web Service | |
10 | - </description> | |
11 | - | |
12 | - <parent> | |
13 | - <groupId>org.demoiselle.jee</groupId> | |
14 | - <artifactId>demoiselle-parent</artifactId> | |
15 | - <version>3.0.0-BETA1-SNAPSHOT</version> | |
16 | - <relativePath>../demoiselle-parent</relativePath> | |
17 | - </parent> | |
18 | - | |
19 | - <dependencies> | |
20 | - | |
21 | - <dependency> | |
22 | - <groupId>org.demoiselle.jee</groupId> | |
23 | - <artifactId>demoiselle-core</artifactId> | |
24 | - </dependency> | |
25 | - | |
26 | - <dependency> | |
27 | - <groupId>javax.ws.rs</groupId> | |
28 | - <artifactId>javax.ws.rs-api</artifactId> | |
29 | - </dependency> | |
30 | - | |
31 | - <dependency> | |
32 | - <groupId>javax.json</groupId> | |
33 | - <artifactId>javax.json-api</artifactId> | |
34 | - </dependency> | |
35 | - | |
36 | - </dependencies> | |
37 | -</project> |
demoiselle-ws-jaxrs/src/main/java/org/demoiselle/jee/ws/jaxrs/JaxRsFilter.java
... | ... | @@ -1,59 +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.jaxrs; | |
8 | - | |
9 | -import java.util.logging.Logger; | |
10 | -import javax.annotation.PostConstruct; | |
11 | -import javax.inject.Inject; | |
12 | -import javax.ws.rs.client.ClientRequestContext; | |
13 | -import javax.ws.rs.client.ClientRequestFilter; | |
14 | -import javax.ws.rs.client.ClientResponseContext; | |
15 | -import javax.ws.rs.client.ClientResponseFilter; | |
16 | -import javax.ws.rs.container.ContainerRequestContext; | |
17 | -import javax.ws.rs.container.ContainerRequestFilter; | |
18 | -import javax.ws.rs.container.ContainerResponseContext; | |
19 | -import javax.ws.rs.container.ContainerResponseFilter; | |
20 | -import javax.ws.rs.container.PreMatching; | |
21 | -import javax.ws.rs.ext.Provider; | |
22 | - | |
23 | -/** | |
24 | - * | |
25 | - * @author 70744416353 | |
26 | - */ | |
27 | -@Provider | |
28 | -@PreMatching | |
29 | -public class JaxRsFilter implements ClientRequestFilter, ClientResponseFilter, ContainerRequestFilter, ContainerResponseFilter { | |
30 | - | |
31 | - @Inject | |
32 | - private Logger LOG; | |
33 | - | |
34 | - @Override | |
35 | - public void filter(ClientRequestContext requestContext) { | |
36 | - } | |
37 | - | |
38 | - @Override | |
39 | - public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) { | |
40 | - } | |
41 | - | |
42 | - @Override | |
43 | - public void filter(ContainerRequestContext requestContext) { | |
44 | - } | |
45 | - | |
46 | - @Override | |
47 | - public void filter(ContainerRequestContext requestContext, ContainerResponseContext response) { | |
48 | - response.getHeaders().putSingle("Demoiselle", "3.0.0"); | |
49 | - response.getHeaders().putSingle("Access-Control-Allow-Origin", "*"); | |
50 | - response.getHeaders().putSingle("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, DELETE"); | |
51 | - response.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type"); | |
52 | - } | |
53 | - | |
54 | - @PostConstruct | |
55 | - public void init() { | |
56 | - LOG.info("Demoiselle Module - Rest"); | |
57 | - } | |
58 | - | |
59 | -} |
demoiselle-ws-jaxrs/src/main/java/org/demoiselle/jee/ws/jaxrs/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.jaxrs.crud; | |
12 | 0 | \ No newline at end of file |
demoiselle-ws-jaxrs/src/main/java/org/demoiselle/jee/ws/jaxrs/exception/DemoiselleRESTException.java
... | ... | @@ -1,41 +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.jaxrs.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() { | |
22 | - | |
23 | - } | |
24 | - | |
25 | - public DemoiselleRESTException(String string) { | |
26 | - super(string); | |
27 | - } | |
28 | - | |
29 | - public int getStatusCode() { | |
30 | - return statusCode; | |
31 | - } | |
32 | - | |
33 | - public void addMessage(String field, String msg) { | |
34 | - this.statusCode = 422; | |
35 | - messages.put(field, msg); | |
36 | - } | |
37 | - | |
38 | - public HashMap<String, String> getMessages() { | |
39 | - return messages; | |
40 | - } | |
41 | -} |
demoiselle-ws-jaxrs/src/main/java/org/demoiselle/jee/ws/jaxrs/exception/mapper/GenericExceptionMapper.java
... | ... | @@ -1,68 +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.jaxrs.exception.mapper; | |
8 | - | |
9 | -import java.io.PrintWriter; | |
10 | -import java.io.StringWriter; | |
11 | -import java.util.HashMap; | |
12 | - | |
13 | -import javax.ws.rs.WebApplicationException; | |
14 | -import javax.ws.rs.core.MediaType; | |
15 | -import javax.ws.rs.core.Response; | |
16 | -import javax.ws.rs.ext.ExceptionMapper; | |
17 | -import javax.ws.rs.ext.Provider; | |
18 | - | |
19 | -import org.demoiselle.jee.ws.jaxrs.exception.DemoiselleRESTException; | |
20 | - | |
21 | -@Provider | |
22 | -public class GenericExceptionMapper implements ExceptionMapper<Exception> { | |
23 | - | |
24 | - public Response toResponse(Exception ex) { | |
25 | - | |
26 | - StringWriter errorStackTrace = new StringWriter(); | |
27 | - ex.printStackTrace(new PrintWriter(errorStackTrace)); | |
28 | - | |
29 | - // Verifica se a exception é de validação de PAYLOAD do REST | |
30 | - if (ex.getCause() instanceof DemoiselleRESTException) { | |
31 | - DemoiselleRESTException exDemoiselleREST = (DemoiselleRESTException) ex.getCause(); | |
32 | - if (!exDemoiselleREST.getMessages().isEmpty()) { | |
33 | - return Response.status(exDemoiselleREST.getStatusCode()).entity(exDemoiselleREST.getMessages()) | |
34 | - .type(MediaType.APPLICATION_JSON).build(); | |
35 | - } | |
36 | - } | |
37 | - | |
38 | - HashMap<String, String> entity = new HashMap<String, String>(); | |
39 | - | |
40 | - // No caso de existir message ele mostra a MESSAGE da Exception | |
41 | - if (ex.getMessage() != null) { | |
42 | - entity.put("error", ex.getMessage()); | |
43 | - | |
44 | - // Pega toda as mensagens da stacktrace | |
45 | - int level = 1; | |
46 | - while (ex.getCause() != null) { | |
47 | - ex = (Exception) ex.getCause(); | |
48 | - if (!ex.getMessage().isEmpty()) { | |
49 | - entity.put("inner_cause_" + level, ex.getMessage()); | |
50 | - } | |
51 | - level += 1; | |
52 | - } | |
53 | - | |
54 | - // Por padrão retorna SERVER ERROR, mas tenta encontrar o status do RESPONSE se for WebApplicationException | |
55 | - // http://docs.oracle.com/javaee/7/api/javax/ws/rs/WebApplicationException.html | |
56 | - int responseCode = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(); | |
57 | - if (ex instanceof WebApplicationException) { | |
58 | - responseCode = ((WebApplicationException)ex).getResponse().getStatus(); | |
59 | - } | |
60 | - | |
61 | - return Response.status(responseCode).entity(entity).type(MediaType.APPLICATION_JSON).build(); | |
62 | - } | |
63 | - | |
64 | - entity.put("error", "Erro interno desconhecido no servidor."); | |
65 | - return Response.status(500).entity(entity).type(MediaType.APPLICATION_JSON).build(); | |
66 | - } | |
67 | - | |
68 | -} |
demoiselle-ws-jaxrs/src/main/java/org/demoiselle/jee/ws/jaxrs/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.jaxrs.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 |
demoiselle-ws-jaxrs/src/main/java/org/demoiselle/jee/ws/jaxrs/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.jaxrs.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.jaxrs.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(); | |
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 |
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" |
3 | - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
4 | - <modelVersion>4.0.0</modelVersion> | |
5 | - | |
6 | - <groupId>org.demoiselle.jee</groupId> | |
7 | - <artifactId>demoiselle-build</artifactId> | |
8 | - <packaging>pom</packaging> | |
9 | - <version>3.0.0-BETA1-SNAPSHOT</version> | |
10 | - | |
11 | - <name>Demoiselle Framework</name> | |
12 | - <description>Framework de integração para Java EE 7 baseado na especificação CDI 1.2 (JSR 346).</description> | |
13 | - <url>http://demoiselle.io</url> | |
14 | - | |
15 | - <licenses> | |
16 | - <license> | |
17 | - <name>GNU Lesser General Public License, Version 3</name> | |
18 | - <url>http://www.gnu.org/licenses/lgpl-3.0.txt</url> | |
19 | - </license> | |
20 | - </licenses> | |
21 | - | |
22 | - <organization> | |
23 | - <name>SERPRO - Serviço Federal de Processamento de Dados</name> | |
24 | - <url>http://www.serpro.gov.br</url> | |
25 | - </organization> | |
26 | - | |
27 | - <developers> | |
28 | - | |
29 | - <developer> | |
30 | - <name>Cassio Maes da Fonseca</name> | |
31 | - <email>cassiomaes@gmail.com</email> | |
32 | - <organization>SERPRO</organization> | |
33 | - <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
34 | - </developer> | |
35 | - | |
36 | - <developer> | |
37 | - <name>Clovis Lemes Ferreira Junior</name> | |
38 | - <email>clovisjunior2009@gmail.com</email> | |
39 | - <organization>SERPRO</organization> | |
40 | - <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
41 | - </developer> | |
42 | - | |
43 | - <developer> | |
44 | - <name>Julian Cesar dos Santos</name> | |
45 | - <email>juliancesar@gmail.com</email> | |
46 | - <organization>SERPRO</organization> | |
47 | - <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
48 | - </developer> | |
49 | - | |
50 | - <developer> | |
51 | - <name>Paulo Gladson Ximenes Pinheiro</name> | |
52 | - <email>paulopinheiro777@gmail.com</email> | |
53 | - <organization>SERPRO</organization> | |
54 | - <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
55 | - </developer> | |
56 | - | |
57 | - <developer> | |
58 | - <name>Vanderson Botelho da Silva</name> | |
59 | - <email>botelhojp@gmail.com</email> | |
60 | - <organization>SERPRO</organization> | |
61 | - <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
62 | - </developer> | |
63 | - | |
64 | - </developers> | |
3 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
4 | + <modelVersion>4.0.0</modelVersion> | |
5 | + | |
6 | + <groupId>org.demoiselle.jee</groupId> | |
7 | + <artifactId>demoiselle-build</artifactId> | |
8 | + <packaging>pom</packaging> | |
9 | + <version>3.0.0-BETA1-SNAPSHOT</version> | |
10 | + | |
11 | + <name>Demoiselle Framework</name> | |
12 | + <description>Framework de integração para Java EE 7 baseado na especificação CDI 1.2 (JSR 346).</description> | |
13 | + <url>http://demoiselle.io</url> | |
14 | + | |
15 | + <licenses> | |
16 | + <license> | |
17 | + <name>GNU Lesser General Public License, Version 3</name> | |
18 | + <url>http://www.gnu.org/licenses/lgpl-3.0.txt</url> | |
19 | + </license> | |
20 | + </licenses> | |
21 | + | |
22 | + <organization> | |
23 | + <name>SERPRO - Serviço Federal de Processamento de Dados</name> | |
24 | + <url>http://www.serpro.gov.br</url> | |
25 | + </organization> | |
26 | + | |
27 | + <developers> | |
28 | + | |
29 | + <developer> | |
30 | + <name>Cassio Maes da Fonseca</name> | |
31 | + <email>cassiomaes@gmail.com</email> | |
32 | + <organization>SERPRO</organization> | |
33 | + <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
34 | + </developer> | |
35 | + | |
36 | + <developer> | |
37 | + <name>Clovis Lemes Ferreira Junior</name> | |
38 | + <email>clovisjunior2009@gmail.com</email> | |
39 | + <organization>SERPRO</organization> | |
40 | + <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
41 | + </developer> | |
42 | + | |
43 | + <developer> | |
44 | + <name>Julian Cesar dos Santos</name> | |
45 | + <email>juliancesar@gmail.com</email> | |
46 | + <organization>SERPRO</organization> | |
47 | + <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
48 | + </developer> | |
49 | + | |
50 | + <developer> | |
51 | + <name>Paulo Gladson Ximenes Pinheiro</name> | |
52 | + <email>paulopinheiro777@gmail.com</email> | |
53 | + <organization>SERPRO</organization> | |
54 | + <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
55 | + </developer> | |
56 | + | |
57 | + <developer> | |
58 | + <name>Vanderson Botelho da Silva</name> | |
59 | + <email>botelhojp@gmail.com</email> | |
60 | + <organization>SERPRO</organization> | |
61 | + <organizationUrl>http://www.serpro.gov.br</organizationUrl> | |
62 | + </developer> | |
63 | + | |
64 | + </developers> | |
65 | 65 | |
66 | - <modules> | |
67 | - <module>demoiselle-parent</module> | |
68 | - <module>demoiselle-core</module> | |
69 | - <module>demoiselle-persistence-jpa</module> | |
70 | - <module>demoiselle-security</module> | |
71 | - <module>demoiselle-ws-jaxrs</module> | |
72 | - </modules> | |
73 | - | |
74 | - <properties> | |
75 | - <project.alias>framework</project.alias> | |
76 | - <java.version>1.8</java.version> | |
77 | - <maven.compiler.source>1.8</maven.compiler.source> | |
78 | - <maven.compiler.target>1.8</maven.compiler.target> | |
79 | - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
80 | - </properties> | |
66 | + <modules> | |
67 | + <module>demoiselle-parent</module> | |
68 | + <module>demoiselle-core</module> | |
69 | + <module>demoiselle-persistence-jpa</module> | |
70 | + <module>demoiselle-rest</module> | |
71 | + <module>demoiselle-security</module> | |
72 | + <module>demoiselle-security-basic</module> | |
73 | + <!--<module>demoiselle-security-jwt</module>--> | |
74 | + </modules> | |
75 | + | |
76 | + <properties> | |
77 | + <project.alias>framework</project.alias> | |
78 | + <java.version>1.8</java.version> | |
79 | + <maven.compiler.source>1.8</maven.compiler.source> | |
80 | + <maven.compiler.target>1.8</maven.compiler.target> | |
81 | + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
82 | + </properties> | |
81 | 83 | |
82 | - <build> | |
83 | - <plugins> | |
84 | - <plugin> | |
85 | - <groupId>org.apache.maven.plugins</groupId> | |
86 | - <artifactId>maven-assembly-plugin</artifactId> | |
87 | - <version>2.6</version> | |
88 | - </plugin> | |
89 | - | |
90 | - <plugin> | |
91 | - <groupId>org.apache.maven.plugins</groupId> | |
92 | - <artifactId>maven-deploy-plugin</artifactId> | |
93 | - <version>2.8.2</version> | |
94 | - </plugin> | |
84 | + <build> | |
85 | + <plugins> | |
86 | + <plugin> | |
87 | + <groupId>org.apache.maven.plugins</groupId> | |
88 | + <artifactId>maven-assembly-plugin</artifactId> | |
89 | + <version>2.6</version> | |
90 | + </plugin> | |
91 | + | |
92 | + <plugin> | |
93 | + <groupId>org.apache.maven.plugins</groupId> | |
94 | + <artifactId>maven-deploy-plugin</artifactId> | |
95 | + <version>2.8.2</version> | |
96 | + </plugin> | |
95 | 97 | |
96 | - <plugin> | |
97 | - <groupId>org.apache.maven.plugins</groupId> | |
98 | - <artifactId>maven-source-plugin</artifactId> | |
99 | - <version>2.2.1</version> | |
100 | - <executions> | |
101 | - <execution> | |
102 | - <id>attach-sources</id> | |
103 | - <goals> | |
104 | - <goal>jar-no-fork</goal> | |
105 | - </goals> | |
106 | - </execution> | |
107 | - </executions> | |
108 | - </plugin> | |
109 | -<!-- | |
110 | - <plugin> | |
111 | - <groupId>org.apache.maven.plugins</groupId> | |
112 | - <artifactId>maven-javadoc-plugin</artifactId> | |
113 | - <version>2.9.1</version> | |
114 | - <executions> | |
115 | - <execution> | |
116 | - <id>attach-javadocs</id> | |
117 | - <goals> | |
118 | - <goal>jar</goal> | |
119 | - </goals> | |
120 | - </execution> | |
121 | - </executions> | |
122 | - </plugin> | |
123 | - --> | |
124 | - <plugin> | |
125 | - <groupId>org.apache.maven.plugins</groupId> | |
126 | - <artifactId>maven-gpg-plugin</artifactId> | |
127 | - <version>1.5</version> | |
128 | - <executions> | |
129 | - <execution> | |
130 | - <id>sign-artifacts</id> | |
131 | - <phase>verify</phase> | |
132 | - <goals> | |
133 | - <goal>sign</goal> | |
134 | - </goals> | |
135 | - </execution> | |
136 | - </executions> | |
137 | - </plugin> | |
138 | - | |
139 | - <plugin> | |
140 | - <groupId>org.sonatype.plugins</groupId> | |
141 | - <artifactId>nexus-staging-maven-plugin</artifactId> | |
142 | - <version>1.6.3</version> | |
143 | - <extensions>true</extensions> | |
144 | - <configuration> | |
145 | - <serverId>sonatype-nexus-staging</serverId> | |
146 | - <nexusUrl>https://oss.sonatype.org/</nexusUrl> | |
147 | - <autoReleaseAfterClose>false</autoReleaseAfterClose> | |
148 | - </configuration> | |
149 | - </plugin> | |
150 | - | |
151 | - <plugin> | |
152 | - <groupId>org.apache.maven.plugins</groupId> | |
153 | - <artifactId>maven-release-plugin</artifactId> | |
154 | - <version>2.5</version> | |
155 | - <configuration> | |
156 | - <autoVersionSubmodules>true</autoVersionSubmodules> | |
157 | - <useReleaseProfile>false</useReleaseProfile> | |
158 | - <releaseProfiles>release</releaseProfiles> | |
159 | - <goals>deploy</goals> | |
160 | - </configuration> | |
161 | - </plugin> | |
162 | - </plugins> | |
163 | - | |
164 | - </build> | |
165 | - | |
166 | - <scm> | |
167 | - <connection>scm:git:git@github.com:demoiselle/${project.alias}.git</connection> | |
168 | - <developerConnection>scm:git:git@github.com:demoiselle/${project.alias}.git</developerConnection> | |
169 | - <url>http://github.com/demoiselle/${project.alias}</url> | |
170 | - <tag>HEAD</tag> | |
171 | - </scm> | |
172 | - | |
173 | - <distributionManagement> | |
174 | - <site> | |
175 | - <id>demoiselle.sourceforge.net</id> | |
176 | - <url>${site.url}</url> | |
177 | - </site> | |
178 | - | |
179 | - <snapshotRepository> | |
180 | - <id>sonatype-nexus-snapshots</id> | |
181 | - <url>https://oss.sonatype.org/content/repositories/snapshots</url> | |
182 | - </snapshotRepository> | |
183 | - | |
184 | - <repository> | |
185 | - <id>sonatype-nexus-staging</id> | |
186 | - <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> | |
187 | - </repository> | |
188 | - </distributionManagement> | |
189 | - | |
190 | - <repositories> | |
191 | - <repository> | |
192 | - <id>sonatype-nexus-snapshots</id> | |
193 | - <name>Sonatype Nexus Snapshots</name> | |
194 | - <url>https://oss.sonatype.org/content/repositories/snapshots</url> | |
195 | - <snapshots> | |
196 | - <enabled>true</enabled> | |
197 | - </snapshots> | |
198 | - <releases> | |
199 | - <enabled>false</enabled> | |
200 | - </releases> | |
201 | - </repository> | |
202 | - | |
203 | - <repository> | |
204 | - <id>sonatype-nexus-releases</id> | |
205 | - <name>Sonatype Nexus Releases</name> | |
206 | - <url>https://oss.sonatype.org/content/repositories/releases</url> | |
207 | - <snapshots> | |
208 | - <enabled>false</enabled> | |
209 | - </snapshots> | |
210 | - <releases> | |
211 | - <enabled>true</enabled> | |
212 | - </releases> | |
213 | - </repository> | |
214 | - </repositories> | |
98 | + <plugin> | |
99 | + <groupId>org.apache.maven.plugins</groupId> | |
100 | + <artifactId>maven-source-plugin</artifactId> | |
101 | + <version>2.2.1</version> | |
102 | + <executions> | |
103 | + <execution> | |
104 | + <id>attach-sources</id> | |
105 | + <goals> | |
106 | + <goal>jar-no-fork</goal> | |
107 | + </goals> | |
108 | + </execution> | |
109 | + </executions> | |
110 | + </plugin> | |
111 | + <!-- | |
112 | + <plugin> | |
113 | + <groupId>org.apache.maven.plugins</groupId> | |
114 | + <artifactId>maven-javadoc-plugin</artifactId> | |
115 | + <version>2.9.1</version> | |
116 | + <executions> | |
117 | + <execution> | |
118 | + <id>attach-javadocs</id> | |
119 | + <goals> | |
120 | + <goal>jar</goal> | |
121 | + </goals> | |
122 | + </execution> | |
123 | + </executions> | |
124 | + </plugin> | |
125 | + --> | |
126 | + <!-- <plugin> | |
127 | + <groupId>org.apache.maven.plugins</groupId> | |
128 | + <artifactId>maven-gpg-plugin</artifactId> | |
129 | + <version>1.5</version> | |
130 | + <executions> | |
131 | + <execution> | |
132 | + <id>sign-artifacts</id> | |
133 | + <phase>verify</phase> | |
134 | + <goals> | |
135 | + <goal>sign</goal> | |
136 | + </goals> | |
137 | + </execution> | |
138 | + </executions> | |
139 | + </plugin>--> | |
140 | + | |
141 | + <plugin> | |
142 | + <groupId>org.sonatype.plugins</groupId> | |
143 | + <artifactId>nexus-staging-maven-plugin</artifactId> | |
144 | + <version>1.6.3</version> | |
145 | + <extensions>true</extensions> | |
146 | + <configuration> | |
147 | + <serverId>sonatype-nexus-staging</serverId> | |
148 | + <nexusUrl>https://oss.sonatype.org/</nexusUrl> | |
149 | + <autoReleaseAfterClose>false</autoReleaseAfterClose> | |
150 | + </configuration> | |
151 | + </plugin> | |
152 | + | |
153 | + <plugin> | |
154 | + <groupId>org.apache.maven.plugins</groupId> | |
155 | + <artifactId>maven-release-plugin</artifactId> | |
156 | + <version>2.5</version> | |
157 | + <configuration> | |
158 | + <autoVersionSubmodules>true</autoVersionSubmodules> | |
159 | + <useReleaseProfile>false</useReleaseProfile> | |
160 | + <releaseProfiles>release</releaseProfiles> | |
161 | + <goals>deploy</goals> | |
162 | + </configuration> | |
163 | + </plugin> | |
164 | + </plugins> | |
165 | + | |
166 | + </build> | |
167 | + | |
168 | + <scm> | |
169 | + <connection>scm:git:git@github.com:demoiselle/${project.alias}.git</connection> | |
170 | + <developerConnection>scm:git:git@github.com:demoiselle/${project.alias}.git</developerConnection> | |
171 | + <url>http://github.com/demoiselle/${project.alias}</url> | |
172 | + <tag>HEAD</tag> | |
173 | + </scm> | |
174 | + | |
175 | + <distributionManagement> | |
176 | + <site> | |
177 | + <id>demoiselle.sourceforge.net</id> | |
178 | + <url>${site.url}</url> | |
179 | + </site> | |
180 | + | |
181 | + <snapshotRepository> | |
182 | + <id>sonatype-nexus-snapshots</id> | |
183 | + <url>https://oss.sonatype.org/content/repositories/snapshots</url> | |
184 | + </snapshotRepository> | |
185 | + | |
186 | + <repository> | |
187 | + <id>sonatype-nexus-staging</id> | |
188 | + <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> | |
189 | + </repository> | |
190 | + </distributionManagement> | |
191 | + | |
192 | + <repositories> | |
193 | + <repository> | |
194 | + <id>sonatype-nexus-snapshots</id> | |
195 | + <name>Sonatype Nexus Snapshots</name> | |
196 | + <url>https://oss.sonatype.org/content/repositories/snapshots</url> | |
197 | + <snapshots> | |
198 | + <enabled>true</enabled> | |
199 | + </snapshots> | |
200 | + <releases> | |
201 | + <enabled>false</enabled> | |
202 | + </releases> | |
203 | + </repository> | |
204 | + | |
205 | + <repository> | |
206 | + <id>sonatype-nexus-releases</id> | |
207 | + <name>Sonatype Nexus Releases</name> | |
208 | + <url>https://oss.sonatype.org/content/repositories/releases</url> | |
209 | + <snapshots> | |
210 | + <enabled>false</enabled> | |
211 | + </snapshots> | |
212 | + <releases> | |
213 | + <enabled>true</enabled> | |
214 | + </releases> | |
215 | + </repository> | |
216 | + </repositories> | |
215 | 217 | |
216 | 218 | </project> | ... | ... |