%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.commons.net.nntp.SimpleNNTPHeader |
|
|
1 | /* |
|
2 | * Copyright 2001-2005 The Apache Software Foundation |
|
3 | * |
|
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
|
5 | * you may not use this file except in compliance with the License. |
|
6 | * You may obtain a copy of the License at |
|
7 | * |
|
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
9 | * |
|
10 | * Unless required by applicable law or agreed to in writing, software |
|
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
13 | * See the License for the specific language governing permissions and |
|
14 | * limitations under the License. |
|
15 | */ |
|
16 | package org.apache.commons.net.nntp; |
|
17 | ||
18 | /*** |
|
19 | * This class is used to construct the bare minimum |
|
20 | * acceptable header for most news readers. To construct more |
|
21 | * complicated headers you should refer to RFC 822. When the |
|
22 | * Java Mail API is finalized, you will be |
|
23 | * able to use it to compose fully compliant Internet text messages. |
|
24 | * <p> |
|
25 | * The main purpose of the class is to faciliatate the article posting |
|
26 | * process, by relieving the programmer from having to explicitly format |
|
27 | * an article header. For example: |
|
28 | * <pre> |
|
29 | * writer = client.postArticle(); |
|
30 | * if(writer == null) // failure |
|
31 | * return false; |
|
32 | * header = new SimpleNNTPHeader("foobar@foo.com", "Just testing"); |
|
33 | * header.addNewsgroup("alt.test"); |
|
34 | * header.addHeaderField("Organization", "Foobar, Inc."); |
|
35 | * writer.write(header.toString()); |
|
36 | * writer.write("This is just a test"); |
|
37 | * writer.close(); |
|
38 | * if(!client.completePendingCommand()) // failure |
|
39 | * return false; |
|
40 | * </pre> |
|
41 | * <p> |
|
42 | * <p> |
|
43 | * @author Daniel F. Savarese |
|
44 | * @see NNTPClient |
|
45 | ***/ |
|
46 | ||
47 | public class SimpleNNTPHeader |
|
48 | { |
|
49 | private String __subject, __from; |
|
50 | private StringBuffer __newsgroups; |
|
51 | private StringBuffer __headerFields; |
|
52 | private int __newsgroupCount; |
|
53 | ||
54 | /*** |
|
55 | * Creates a new SimpleNNTPHeader instance initialized with the given |
|
56 | * from and subject header field values. |
|
57 | * <p> |
|
58 | * @param from The value of the <code>From:</code> header field. This |
|
59 | * should be the article poster's email address. |
|
60 | * @param subject The value of the <code>Subject:</code> header field. |
|
61 | * This should be the subject of the article. |
|
62 | ***/ |
|
63 | public SimpleNNTPHeader(String from, String subject) |
|
64 | 0 | { |
65 | 0 | __from = from; |
66 | 0 | __subject = subject; |
67 | 0 | __newsgroups = new StringBuffer(); |
68 | 0 | __headerFields = new StringBuffer(); |
69 | 0 | __newsgroupCount = 0; |
70 | 0 | } |
71 | ||
72 | /*** |
|
73 | * Adds a newsgroup to the article <code>Newsgroups:</code> field. |
|
74 | * <p> |
|
75 | * @param newsgroup The newsgroup to add to the article's newsgroup |
|
76 | * distribution list. |
|
77 | ***/ |
|
78 | public void addNewsgroup(String newsgroup) |
|
79 | { |
|
80 | 0 | if (__newsgroupCount++ > 0) |
81 | 0 | __newsgroups.append(','); |
82 | 0 | __newsgroups.append(newsgroup); |
83 | 0 | } |
84 | ||
85 | /*** |
|
86 | * Adds an arbitrary header field with the given value to the article |
|
87 | * header. These headers will be written after the From, Newsgroups, |
|
88 | * and Subject fields when the SimpleNNTPHeader is convertered to a string. |
|
89 | * An example use would be: |
|
90 | * <pre> |
|
91 | * header.addHeaderField("Organization", "Foobar, Inc."); |
|
92 | * </pre> |
|
93 | * <p> |
|
94 | * @param headerField The header field to add, not including the colon. |
|
95 | * @param value The value of the added header field. |
|
96 | ***/ |
|
97 | public void addHeaderField(String headerField, String value) |
|
98 | { |
|
99 | 0 | __headerFields.append(headerField); |
100 | 0 | __headerFields.append(": "); |
101 | 0 | __headerFields.append(value); |
102 | 0 | __headerFields.append('\n'); |
103 | 0 | } |
104 | ||
105 | ||
106 | /*** |
|
107 | * Returns the address used in the <code> From: </code> header field. |
|
108 | * <p> |
|
109 | * @return The from address. |
|
110 | ***/ |
|
111 | public String getFromAddress() |
|
112 | { |
|
113 | 0 | return __from; |
114 | } |
|
115 | ||
116 | /*** |
|
117 | * Returns the subject used in the <code> Subject: </code> header field. |
|
118 | * <p> |
|
119 | * @return The subject. |
|
120 | ***/ |
|
121 | public String getSubject() |
|
122 | { |
|
123 | 0 | return __subject; |
124 | } |
|
125 | ||
126 | /*** |
|
127 | * Returns the contents of the <code> Newsgroups: </code> header field. |
|
128 | * <p> |
|
129 | * @return The comma-separated list of newsgroups to which the article |
|
130 | * is being posted. |
|
131 | ***/ |
|
132 | public String getNewsgroups() |
|
133 | { |
|
134 | 0 | return __newsgroups.toString(); |
135 | } |
|
136 | ||
137 | /*** |
|
138 | * Converts the SimpleNNTPHeader to a properly formatted header in |
|
139 | * the form of a String, including the blank line used to separate |
|
140 | * the header from the article body. |
|
141 | * <p> |
|
142 | * @return The article header in the form of a String. |
|
143 | ***/ |
|
144 | public String toString() |
|
145 | { |
|
146 | 0 | StringBuffer header = new StringBuffer(); |
147 | ||
148 | 0 | header.append("From: "); |
149 | 0 | header.append(__from); |
150 | 0 | header.append("\nNewsgroups: "); |
151 | 0 | header.append(__newsgroups.toString()); |
152 | 0 | header.append("\nSubject: "); |
153 | 0 | header.append(__subject); |
154 | 0 | header.append('\n'); |
155 | 0 | if (__headerFields.length() > 0) |
156 | 0 | header.append(__headerFields.toString()); |
157 | 0 | header.append('\n'); |
158 | ||
159 | 0 | return header.toString(); |
160 | } |
|
161 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |