Skip to content

Package: ListMessagesTag

ListMessagesTag

nameinstructionbranchcomplexitylinemethod
ListMessagesTag()
M: 9 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
doAfterBody()
M: 35 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
doStartTag()
M: 52 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 14 C: 0
0%
M: 1 C: 0
0%
getFolder()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getMessage()
M: 25 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
getSession()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
setFolder(String)
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
setSession(String)
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*
2: * Copyright (c) 2001, 2023 Oracle and/or its affiliates. All rights reserved.
3: *
4: * This program and the accompanying materials are made available under the
5: * terms of the Eclipse Distribution License v. 1.0, which is available at
6: * http://www.eclipse.org/org/documents/edl-v10.php.
7: *
8: * SPDX-License-Identifier: BSD-3-Clause
9: */
10:
11: package demo;
12:
13: import jakarta.mail.Flags;
14: import jakarta.mail.Folder;
15: import jakarta.mail.Message;
16: import jakarta.mail.search.FlagTerm;
17: import jakarta.servlet.jsp.JspException;
18: import jakarta.servlet.jsp.JspTagException;
19: import jakarta.servlet.jsp.PageContext;
20: import jakarta.servlet.jsp.tagext.BodyContent;
21: import jakarta.servlet.jsp.tagext.BodyTag;
22: import jakarta.servlet.jsp.tagext.BodyTagSupport;
23:
24: import java.io.IOException;
25:
26: /**
27: * Custom tag for listing messages. The scripting variable is only
28: * within the body of the tag.
29: */
30: public class ListMessagesTag extends BodyTagSupport {
31: private String folder;
32: private String session;
33: private int msgNum = 0;
34: private int messageCount = 0;
35: private Message message;
36: private Message[] messages;
37: private MessageInfo messageinfo;
38:
39: /**
40: * folder attribute getter method.
41: */
42: public String getFolder() {
43: return folder;
44: }
45:
46: /**
47: * session attribute getter method.
48: */
49: public String getSession() {
50: return session;
51: }
52:
53: /**
54: * folder setter method.
55: */
56: public void setFolder(String folder) {
57: this.folder = folder;
58: }
59:
60: /**
61: * session attribute setter method.
62: */
63: public void setSession(String session) {
64: this.session = session;
65: }
66:
67: /**
68: * Method for processing the start of the tag.
69: */
70: public int doStartTag() throws JspException {
71: messageinfo = new MessageInfo();
72:
73: try {
74: Folder folder = (Folder) pageContext.getAttribute(
75: getFolder(), PageContext.SESSION_SCOPE);
76: FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.DELETED), false);
77: messages = folder.search(ft);
78: messageCount = messages.length;
79: msgNum = 0;
80: } catch (Exception ex) {
81: throw new JspException(ex.getMessage());
82: }
83:
84:• if (messageCount > 0) {
85: getMessage();
86: return BodyTag.EVAL_BODY_TAG;
87: } else
88: return BodyTag.SKIP_BODY;
89: }
90:
91: /**
92: * Method for processing the body content of the tag.
93: */
94: public int doAfterBody() throws JspException {
95:
96: BodyContent body = getBodyContent();
97: try {
98: body.writeOut(getPreviousOut());
99: } catch (IOException e) {
100: throw new JspTagException("IterationTag: " + e.getMessage());
101: }
102:
103: // clear up so the next time the body content is empty
104: body.clearBody();
105:
106:• if (msgNum < messageCount) {
107: getMessage();
108: return BodyTag.EVAL_BODY_TAG;
109: } else {
110: return BodyTag.SKIP_BODY;
111: }
112: }
113:
114: /**
115: * Helper method for retrieving messages.
116: */
117: private void getMessage() throws JspException {
118: message = messages[msgNum++];
119: messageinfo.setMessage(message);
120: pageContext.setAttribute(getId(), messageinfo);
121: }
122: }
123: