View Javadoc
1 package org.apache.commons.net.nntp; 2 3 /* ==================================================================== 4 * The Apache Software License, Version 1.1 5 * 6 * Copyright (c) 2001 The Apache Software Foundation. All rights 7 * reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in 18 * the documentation and/or other materials provided with the 19 * distribution. 20 * 21 * 3. The end-user documentation included with the redistribution, 22 * if any, must include the following acknowledgment: 23 * "This product includes software developed by the 24 * Apache Software Foundation (http://www.apache.org/)." 25 * Alternately, this acknowledgment may appear in the software itself, 26 * if and wherever such third-party acknowledgments normally appear. 27 * 28 * 4. The names "Apache" and "Apache Software Foundation" and 29 * "Apache Commons" must not be used to endorse or promote products 30 * derived from this software without prior written permission. For 31 * written permission, please contact apache@apache.org. 32 * 33 * 5. Products derived from this software may not be called "Apache", 34 * nor may "Apache" appear in their name, without 35 * prior written permission of the Apache Software Foundation. 36 * 37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 40 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 48 * SUCH DAMAGE. 49 * ==================================================================== 50 * 51 * This software consists of voluntary contributions made by many 52 * individuals on behalf of the Apache Software Foundation. For more 53 * information on the Apache Software Foundation, please see 54 * <http://www.apache.org/>;. 55 */ 56 57 /**** 58 * This class is used to construct the bare minimum 59 * acceptable header for most news readers. To construct more 60 * complicated headers you should refer to RFC 822. When the 61 * Java Mail API is finalized, you will be 62 * able to use it to compose fully compliant Internet text messages. 63 * <p> 64 * The main purpose of the class is to faciliatate the article posting 65 * process, by relieving the programmer from having to explicitly format 66 * an article header. For example: 67 * <pre> 68 * writer = client.postArticle(); 69 * if(writer == null) // failure 70 * return false; 71 * header = new SimpleNNTPHeader("foobar@foo.com", "Just testing"); 72 * header.addNewsgroup("alt.test"); 73 * header.addHeaderField("Organization", "Foobar, Inc."); 74 * writer.write(header.toString()); 75 * writer.write("This is just a test"); 76 * writer.close(); 77 * if(!client.completePendingCommand()) // failure 78 * return false; 79 * </pre> 80 * <p> 81 * <p> 82 * @author Daniel F. Savarese 83 * @see NNTPClient 84 ***/ 85 86 public class SimpleNNTPHeader 87 { 88 private String __subject, __from; 89 private StringBuffer __newsgroups; 90 private StringBuffer __headerFields; 91 private int __newsgroupCount; 92 93 /**** 94 * Creates a new SimpleNNTPHeader instance initialized with the given 95 * from and subject header field values. 96 * <p> 97 * @param from The value of the <code>From:</code> header field. This 98 * should be the article poster's email address. 99 * @param subject The value of the <code>Subject:</code> header field. 100 * This should be the subject of the article. 101 ***/ 102 public SimpleNNTPHeader(String from, String subject) 103 { 104 __from = from; 105 __subject = subject; 106 __newsgroups = new StringBuffer(); 107 __headerFields = new StringBuffer(); 108 __newsgroupCount = 0; 109 } 110 111 /**** 112 * Adds a newsgroup to the article <code>Newsgroups:</code> field. 113 * <p> 114 * @param newsgroup The newsgroup to add to the article's newsgroup 115 * distribution list. 116 ***/ 117 public void addNewsgroup(String newsgroup) 118 { 119 if (__newsgroupCount++ > 0) 120 __newsgroups.append(','); 121 __newsgroups.append(newsgroup); 122 } 123 124 /**** 125 * Adds an arbitrary header field with the given value to the article 126 * header. These headers will be written after the From, Newsgroups, 127 * and Subject fields when the SimpleNNTPHeader is convertered to a string. 128 * An example use would be: 129 * <pre> 130 * header.addHeaderField("Organization", "Foobar, Inc."); 131 * </pre> 132 * <p> 133 * @param headerField The header field to add, not including the colon. 134 * @param value The value of the added header field. 135 ***/ 136 public void addHeaderField(String headerField, String value) 137 { 138 __headerFields.append(headerField); 139 __headerFields.append(": "); 140 __headerFields.append(value); 141 __headerFields.append('\n'); 142 } 143 144 145 /**** 146 * Returns the address used in the <code> From: </code> header field. 147 * <p> 148 * @return The from address. 149 ***/ 150 public String getFromAddress() 151 { 152 return __from; 153 } 154 155 /**** 156 * Returns the subject used in the <code> Subject: </code> header field. 157 * <p> 158 * @return The subject. 159 ***/ 160 public String getSubject() 161 { 162 return __subject; 163 } 164 165 /**** 166 * Returns the contents of the <code> Newsgroups: </code> header field. 167 * <p> 168 * @return The comma-separated list of newsgroups to which the article 169 * is being posted. 170 ***/ 171 public String getNewsgroups() 172 { 173 return __newsgroups.toString(); 174 } 175 176 /**** 177 * Converts the SimpleNNTPHeader to a properly formatted header in 178 * the form of a String, including the blank line used to separate 179 * the header from the article body. 180 * <p> 181 * @return The article header in the form of a String. 182 ***/ 183 public String toString() 184 { 185 StringBuffer header = new StringBuffer(); 186 187 header.append("From: "); 188 header.append(__from); 189 header.append("\nNewsgroups: "); 190 header.append(__newsgroups.toString()); 191 header.append("\nSubject: "); 192 header.append(__subject); 193 header.append('\n'); 194 if (__headerFields.length() > 0) 195 header.append(__headerFields.toString()); 196 header.append('\n'); 197 198 return header.toString(); 199 } 200 }

This page was automatically generated by Maven