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, 2021 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 java.io.*;
14: import java.util.*;
15: import jakarta.mail.*;
16: import jakarta.mail.internet.*;
17: import jakarta.mail.search.*;
18: import jakarta.servlet.jsp.*;
19: import jakarta.servlet.jsp.tagext.*;
20:
21: /**
22: * Custom tag for listing messages. The scripting variable is only
23: * within the body of the tag.
24: */
25: public class ListMessagesTag extends BodyTagSupport {
26: private String folder;
27: private String session;
28: private int msgNum = 0;
29: private int messageCount = 0;
30: private Message message;
31: private Message[] messages;
32: private MessageInfo messageinfo;
33:
34: /**
35: * folder attribute getter method.
36: */
37: public String getFolder() {
38:         return folder;
39: }
40:
41: /**
42: * session attribute getter method.
43: */
44: public String getSession() {
45:         return session;
46: }
47:
48: /**
49: * folder setter method.
50: */
51: public void setFolder(String folder) {
52:         this.folder = folder;
53: }
54:
55: /**
56: * session attribute setter method.
57: */
58: public void setSession(String session) {
59:         this.session = session;
60: }
61:
62: /**
63: * Method for processing the start of the tag.
64: */
65: public int doStartTag() throws JspException {
66:         messageinfo = new MessageInfo();
67:
68:         try {
69:          Folder folder = (Folder)pageContext.getAttribute(
70:                 getFolder(), PageContext.SESSION_SCOPE);
71:          FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.DELETED), false);
72:          messages = folder.search(ft);
73:          messageCount = messages.length;
74:          msgNum = 0;
75:         } catch (Exception ex) {
76:          throw new JspException(ex.getMessage());
77:         }
78:
79:•        if (messageCount > 0) {
80:          getMessage();
81:          return BodyTag.EVAL_BODY_TAG;
82:         } else
83:          return BodyTag.SKIP_BODY;
84: }
85:
86: /**
87: * Method for processing the body content of the tag.
88: */
89: public int doAfterBody() throws JspException {
90:         
91:         BodyContent body = getBodyContent();
92:         try {
93:          body.writeOut(getPreviousOut());
94:         } catch (IOException e) {
95:          throw new JspTagException("IterationTag: " + e.getMessage());
96:         }
97:         
98:         // clear up so the next time the body content is empty
99:         body.clearBody();
100:
101:•        if (msgNum < messageCount) {
102:          getMessage();
103:          return BodyTag.EVAL_BODY_TAG;
104:         } else {
105:          return BodyTag.SKIP_BODY;
106:         }
107: }
108:
109: /**
110: * Helper method for retrieving messages.
111: */
112: private void getMessage() throws JspException {
113:         message = messages[msgNum++];
114:         messageinfo.setMessage(message);
115:         pageContext.setAttribute(getId(), messageinfo);
116: }
117: }
118: