Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JavaMail 1.6.2 Source Code Files
JavaMail Source Code Files are provided in the source package file, httpcomponents-client-5.2-src.zip.
You can browse JavaMail Source Code files below:
✍: FYIcenter.com
⏎ com/sun/mail/util/QPDecoderStream.java
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://oss.oracle.com/licenses/CDDL+GPL-1.1 * or LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ package com.sun.mail.util; import java.io.*; /** * This class implements a QP Decoder. It is implemented as * a FilterInputStream, so one can just wrap this class around * any input stream and read bytes from this filter. The decoding * is done as the bytes are read out. * * @author John Mani */ public class QPDecoderStream extends FilterInputStream { protected byte[] ba = new byte[2]; protected int spaces = 0; /** * Create a Quoted Printable decoder that decodes the specified * input stream. * @param in the input stream */ public QPDecoderStream(InputStream in) { super(new PushbackInputStream(in, 2)); // pushback of size=2 } /** * Read the next decoded byte from this input stream. The byte * is returned as an <code>int</code> in the range <code>0</code> * to <code>255</code>. If no byte is available because the end of * the stream has been reached, the value <code>-1</code> is returned. * This method blocks until input data is available, the end of the * stream is detected, or an exception is thrown. * * @return the next byte of data, or <code>-1</code> if the end of the * stream is reached. * @exception IOException if an I/O error occurs. */ @Override public int read() throws IOException { if (spaces > 0) { // We have cached space characters, return one spaces--; return ' '; } int c = in.read(); if (c == ' ') { // Got space, keep reading till we get a non-space char while ((c = in.read()) == ' ') spaces++; if (c == '\r' || c == '\n' || c == -1) // If the non-space char is CR/LF/EOF, the spaces we got // so far is junk introduced during transport. Junk 'em. spaces = 0; else { // The non-space char is NOT CR/LF, the spaces are valid. ((PushbackInputStream)in).unread(c); c = ' '; } return c; // return either <SPACE> or <CR/LF> } else if (c == '=') { // QP Encoded atom. Decode the next two bytes int a = in.read(); if (a == '\n') { /* Hmm ... not really confirming QP encoding, but lets * allow this as a LF terminated encoded line .. and * consider this a soft linebreak and recurse to fetch * the next char. */ return read(); } else if (a == '\r') { // Expecting LF. This forms a soft linebreak to be ignored. int b = in.read(); if (b != '\n') /* Not really confirming QP encoding, but * lets allow this as well. */ ((PushbackInputStream)in).unread(b); return read(); } else if (a == -1) { // Not valid QP encoding, but we be nice and tolerant here ! return -1; } else { ba[0] = (byte)a; ba[1] = (byte)in.read(); try { return ASCIIUtility.parseInt(ba, 0, 2, 16); } catch (NumberFormatException nex) { /* System.err.println( "Illegal characters in QP encoded stream: " + ASCIIUtility.toString(ba, 0, 2) ); */ ((PushbackInputStream)in).unread(ba); return c; } } } return c; } /** * Reads up to <code>len</code> decoded bytes of data from this input stream * into an array of bytes. This method blocks until some input is * available. * <p> * * @param buf the buffer into which the data is read. * @param off the start offset of the data. * @param len the maximum number of bytes read. * @return the total number of bytes read into the buffer, or * <code>-1</code> if there is no more data because the end of * the stream has been reached. * @exception IOException if an I/O error occurs. */ @Override public int read(byte[] buf, int off, int len) throws IOException { int i, c; for (i = 0; i < len; i++) { if ((c = read()) == -1) { if (i == 0) // At end of stream, so we should i = -1; // return -1 , NOT 0. break; } buf[off+i] = (byte)c; } return i; } /** * Skips over and discards n bytes of data from this stream. */ @Override public long skip(long n) throws IOException { long skipped = 0; while (n-- > 0 && read() >= 0) skipped++; return skipped; } /** * Tests if this input stream supports marks. Currently this class * does not support marks */ @Override public boolean markSupported() { return false; } /** * Returns the number of bytes that can be read from this input * stream without blocking. The QP algorithm does not permit * a priori knowledge of the number of bytes after decoding, so * this method just invokes the <code>available</code> method * of the original input stream. */ @Override public int available() throws IOException { // This is bogus ! We don't really know how much // bytes are available *after* decoding return in.available(); } /**** begin TEST program public static void main(String argv[]) throws Exception { FileInputStream infile = new FileInputStream(argv[0]); QPDecoderStream decoder = new QPDecoderStream(infile); int c; while ((c = decoder.read()) != -1) System.out.print((char)c); System.out.println(); } *** end TEST program ****/ }
⏎ com/sun/mail/util/QPDecoderStream.java
Or download all of them as a single archive file:
File name: javax.mail-1.6.2-sources.jar File size: 851487 bytes Release date: 2018-08-29 Download
⇒ Download and Install javax.mail-1.5.4.jar
⇐ Download and Install javax.mail-1.6.2.jar
2016-01-07, 9816👍, 0💬
Popular Posts:
iText is an ideal library for developers looking to enhance web- and other applications with dynamic...
ZooKeeper is a centralized service for maintaining configuration information, naming, providing dist...
maven-core-3.5.4.jar is the JAR file for Apache Maven 3.5.4 Core module. Apache Maven is a software ...
How to download and install ojdbc5.jar for Oracle 11g R1? ojdbc5.jar for Oracle 11g R1 is a Java 5 J...
Jetty provides an HTTP server, HTTP client, and javax.servlet container. These components are open s...