Skip to content

Commit 824b9c6

Browse files
committed
Merge pull request #800 from caelum/fixingMessages
checking included before including
2 parents 1dd7e4e + e00641a commit 824b9c6

File tree

2 files changed

+40
-30
lines changed

2 files changed

+40
-30
lines changed

vraptor-core/src/main/java/br/com/caelum/vraptor/validator/Messages.java

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,7 @@
2222
import java.util.List;
2323
import java.util.Map;
2424

25-
import javax.annotation.PostConstruct;
26-
import javax.enterprise.context.RequestScoped;
27-
import javax.inject.Inject;
28-
import javax.servlet.http.HttpServletRequest;
25+
import javax.enterprise.inject.Vetoed;
2926

3027
import org.slf4j.Logger;
3128

@@ -42,39 +39,14 @@
4239
* @since 4.1
4340
* @author Otávio S Garcia
4441
*/
45-
@RequestScoped
42+
@Vetoed
4643
public class Messages {
4744

48-
public static final String ATTRIBUTE_KEY = "vmessages";
49-
5045
private final static Logger log = getLogger(Messages.class);
5146

5247
private Map<Severity, List<Message>> messages = new HashMap<>();
5348
private boolean unhandledErrors = false;
5449

55-
private final HttpServletRequest request;
56-
57-
/**
58-
* @deprecated CDI eyes only
59-
*/
60-
protected Messages() {
61-
this(null);
62-
}
63-
64-
@Inject
65-
public Messages(HttpServletRequest request) {
66-
this.request = request;
67-
}
68-
69-
/**
70-
* Put this instance into request attributes to allow this instance survive between requests using flash
71-
* scope.
72-
*/
73-
@PostConstruct
74-
public void init() {
75-
request.setAttribute(ATTRIBUTE_KEY, this);
76-
}
77-
7850
public Messages add(Message message) {
7951
get(message.getSeverity()).add(message);
8052
if(Severity.ERROR.equals(message.getSeverity())) {
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package br.com.caelum.vraptor.validator;
2+
3+
import static com.google.common.base.Objects.firstNonNull;
4+
5+
import javax.enterprise.context.RequestScoped;
6+
import javax.enterprise.inject.Produces;
7+
import javax.inject.Inject;
8+
9+
import br.com.caelum.vraptor.Result;
10+
11+
@RequestScoped
12+
public class MessagesProducer {
13+
14+
private static final String MESSAGES_KEY = "vmessages";
15+
16+
private final Result result;
17+
18+
/**
19+
* @deprecated CDI eyes only
20+
*/
21+
protected MessagesProducer() {
22+
this(null);
23+
}
24+
25+
@Inject
26+
public MessagesProducer(Result result) {
27+
this.result = result;
28+
}
29+
30+
@Produces @RequestScoped
31+
public Messages create() {
32+
Messages messages = (Messages) result.included().get(MESSAGES_KEY);
33+
messages = firstNonNull(messages, new Messages());
34+
result.include(MESSAGES_KEY, messages);
35+
return messages;
36+
}
37+
38+
}

0 commit comments

Comments
 (0)