1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 * 19 */ 20 package org.apache.mina.filter.codec.textline; 21 22 import java.nio.charset.Charset; 23 24 import org.apache.mina.common.BufferDataException; 25 import org.apache.mina.filter.codec.ProtocolCodecFactory; 26 import org.apache.mina.filter.codec.ProtocolDecoder; 27 import org.apache.mina.filter.codec.ProtocolEncoder; 28 29 /** 30 * A {@link ProtocolCodecFactory} that performs encoding and decoding between 31 * a text line data and a Java string object. This codec is useful especially 32 * when you work with a text-based protocols such as SMTP and IMAP. 33 * 34 * @author The Apache Directory Project (mina-dev@directory.apache.org) 35 * @version $Rev: 555855 $, $Date: 2007-07-13 12:19:00 +0900 (Fri, 13 Jul 2007) $ 36 */ 37 public class TextLineCodecFactory implements ProtocolCodecFactory { 38 private final TextLineEncoder encoder; 39 40 private final TextLineDecoder decoder; 41 42 /** 43 * Creates a new instance with the current default {@link Charset}. 44 */ 45 public TextLineCodecFactory() { 46 this(Charset.defaultCharset()); 47 } 48 49 /** 50 * Creates a new instance with the specified {@link Charset}. 51 */ 52 public TextLineCodecFactory(Charset charset) { 53 encoder = new TextLineEncoder(charset, LineDelimiter.UNIX); 54 decoder = new TextLineDecoder(charset, LineDelimiter.AUTO); 55 } 56 57 public ProtocolEncoder getEncoder() { 58 return encoder; 59 } 60 61 public ProtocolDecoder getDecoder() { 62 return decoder; 63 } 64 65 /** 66 * Returns the allowed maximum size of the encoded line. 67 * If the size of the encoded line exceeds this value, the encoder 68 * will throw a {@link IllegalArgumentException}. The default value 69 * is {@link Integer#MAX_VALUE}. 70 * <p> 71 * This method does the same job with {@link TextLineEncoder#getMaxLineLength()}. 72 */ 73 public int getEncoderMaxLineLength() { 74 return encoder.getMaxLineLength(); 75 } 76 77 /** 78 * Sets the allowed maximum size of the encoded line. 79 * If the size of the encoded line exceeds this value, the encoder 80 * will throw a {@link IllegalArgumentException}. The default value 81 * is {@link Integer#MAX_VALUE}. 82 * <p> 83 * This method does the same job with {@link TextLineEncoder#setMaxLineLength(int)}. 84 */ 85 public void setEncoderMaxLineLength(int maxLineLength) { 86 encoder.setMaxLineLength(maxLineLength); 87 } 88 89 /** 90 * Returns the allowed maximum size of the line to be decoded. 91 * If the size of the line to be decoded exceeds this value, the 92 * decoder will throw a {@link BufferDataException}. The default 93 * value is <tt>1024</tt> (1KB). 94 * <p> 95 * This method does the same job with {@link TextLineDecoder#getMaxLineLength()}. 96 */ 97 public int getDecoderMaxLineLength() { 98 return decoder.getMaxLineLength(); 99 } 100 101 /** 102 * Sets the allowed maximum size of the line to be decoded. 103 * If the size of the line to be decoded exceeds this value, the 104 * decoder will throw a {@link BufferDataException}. The default 105 * value is <tt>1024</tt> (1KB). 106 * <p> 107 * This method does the same job with {@link TextLineDecoder#setMaxLineLength(int)}. 108 */ 109 public void setDecoderMaxLineLength(int maxLineLength) { 110 decoder.setMaxLineLength(maxLineLength); 111 } 112 }