source: contrib/MailArchiver/sources/vendor/mime4j/custom/core/src/main/java/org/apache/james/mime4j/stream/EntityStateMachine.java @ 6785

Revision 6785, 4.0 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado codigo do MailArchiver?. Documentação na subpasta DOCS.

Line 
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
20package org.apache.james.mime4j.stream;
21
22import org.apache.james.mime4j.MimeException;
23
24import java.io.IOException;
25import java.io.InputStream;
26
27/**
28 * Represents the interal state of a MIME entity, which is being retrieved
29 * from an input stream by a MIME parser.
30 */
31public interface EntityStateMachine {
32
33    /**
34     * Return the current state of the entity.
35     *
36     * @see EntityState
37     *
38     * @return current state
39     */
40    EntityState getState();
41   
42    /**
43     * Sets the current recursion mode.
44     * The recursion mode specifies the approach taken to parsing parts.
45     * {@link RecursionMode#M_RAW} mode does not parse the part at all.
46     * {@link RecursionMode#M_RECURSE} mode recursively parses each mail
47     * when an <code>message/rfc822</code> part is encounted;
48     * {@link RecursionMode#M_NO_RECURSE} does not.
49     *
50     * @see RecursionMode
51     *
52     * @param recursionMode
53     */
54    void setRecursionMode(RecursionMode recursionMode);
55   
56    /**
57     * Advances the state machine to the next state in the
58     * process of the MIME stream parsing. This method
59     * may return an new state machine that represents an embedded
60     * entity, which must be parsed before the parsing process of
61     * the current entity can proceed.
62     *
63     * @return a state machine of an embedded entity, if encountered,
64     * <code>null</code> otherwise.
65     * 
66     * @throws IOException if an I/O error occurs.
67     * @throws MimeException if the message can not be processed due
68     *  to the MIME specification violation.
69     */
70    EntityStateMachine advance() throws IOException, MimeException;
71   
72    /**
73     * Returns description of the entity body.
74     *
75     * @return body description
76     *
77     * @throws IllegalStateException if the body description cannot be
78     *  obtained at the current stage of the parsing process.
79     */
80    BodyDescriptor getBodyDescriptor() throws IllegalStateException;
81   
82    /**
83     * Returns content stream of the entity body.
84     *
85     * @return input stream
86     *
87     * @throws IllegalStateException if the content stream cannot be
88     *  obtained at the current stage of the parsing process.
89     */
90    InputStream getContentStream() throws IllegalStateException;
91   
92    /**
93     * Returns the decoded content stream of the entity body.
94     *
95     * @return input stream
96     *
97     * @throws IllegalStateException if the content stream cannot be
98     *  obtained at the current stage of the parsing process.
99     */
100    InputStream getDecodedContentStream() throws IllegalStateException;
101 
102    /**
103     * Returns current header field.
104     *
105     * @return header field
106     *
107     * @throws IllegalStateException if a header field cannot be
108     *  obtained at the current stage of the parsing process.
109     */
110    RawField getField() throws IllegalStateException;
111   
112}
Note: See TracBrowser for help on using the repository browser.