Skip to content

Commit e00641a

Browse files
committed
adding MessagesProducer
1 parent 753b2da commit e00641a

File tree

2 files changed

+40
-29
lines changed

2 files changed

+40
-29
lines changed

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

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,10 @@
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;
25+
import javax.enterprise.inject.Vetoed;
2826

2927
import org.slf4j.Logger;
3028

31-
import br.com.caelum.vraptor.Result;
32-
3329
/**
3430
* Managed class that stores all application messages like errors, warnings and info. This
3531
* class is useful to display messages categorized by severity in your view. To choose a severity
@@ -43,37 +39,14 @@
4339
* @since 4.1
4440
* @author Otávio S Garcia
4541
*/
46-
@RequestScoped
42+
@Vetoed
4743
public class Messages {
4844

49-
public static final String ATTRIBUTE_KEY = "vmessages";
50-
5145
private final static Logger log = getLogger(Messages.class);
5246

5347
private Map<Severity, List<Message>> messages = new HashMap<>();
5448
private boolean unhandledErrors = false;
5549

56-
private final Result result;
57-
58-
/**
59-
* @deprecated CDI eyes only
60-
*/
61-
protected Messages() {
62-
this(null);
63-
}
64-
65-
@Inject
66-
public Messages(Result result) {
67-
this.result = result;
68-
}
69-
70-
@PostConstruct
71-
protected void init() {
72-
if(!result.included().containsKey(ATTRIBUTE_KEY)){
73-
result.include(ATTRIBUTE_KEY, this);
74-
}
75-
}
76-
7750
public Messages add(Message message) {
7851
get(message.getSeverity()).add(message);
7952
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)