001 /****************************************************************
002 * Licensed to the Apache Software Foundation (ASF) under one *
003 * or more contributor license agreements. See the NOTICE file *
004 * distributed with this work for additional information *
005 * regarding copyright ownership. The ASF licenses this file *
006 * to you under the Apache License, Version 2.0 (the *
007 * "License"); you may not use this file except in compliance *
008 * with the License. You may obtain a copy of the License at *
009 * *
010 * http://www.apache.org/licenses/LICENSE-2.0 *
011 * *
012 * Unless required by applicable law or agreed to in writing, *
013 * software distributed under the License is distributed on an *
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
015 * KIND, either express or implied. See the License for the *
016 * specific language governing permissions and limitations *
017 * under the License. *
018 ****************************************************************/
019
020 package org.apache.james.mime4j.stream;
021
022
023 import java.io.InputStream;
024
025 /**
026 * Raw MIME entity. Such entities will not be parsed into elements
027 * by the parser. They are meant to be consumed as a raw data stream
028 * by the caller.
029 */
030 public class RawEntity implements EntityStateMachine {
031
032 private final InputStream stream;
033
034 private EntityState state;
035
036 RawEntity(InputStream stream) {
037 this.stream = stream;
038 this.state = EntityState.T_RAW_ENTITY;
039 }
040
041 public EntityState getState() {
042 return state;
043 }
044
045 /**
046 * This method has no effect.
047 */
048 public void setRecursionMode(RecursionMode recursionMode) {
049 }
050
051 public EntityStateMachine advance() {
052 state = EntityState.T_END_OF_STREAM;
053 return null;
054 }
055
056 /**
057 * Returns raw data stream.
058 */
059 public InputStream getContentStream() {
060 return stream;
061 }
062
063 /**
064 * This method has no effect and always returns <code>null</code>.
065 */
066 public BodyDescriptor getBodyDescriptor() {
067 return null;
068 }
069
070 /**
071 * This method has no effect and always returns <code>null</code>.
072 */
073 public RawField getField() {
074 return null;
075 }
076
077 /**
078 * This method has no effect and always returns <code>null</code>.
079 */
080 public String getFieldName() {
081 return null;
082 }
083
084 /**
085 * This method has no effect and always returns <code>null</code>.
086 */
087 public String getFieldValue() {
088 return null;
089 }
090
091 /**
092 * @see org.apache.james.mime4j.stream.EntityStateMachine#getDecodedContentStream()
093 */
094 public InputStream getDecodedContentStream() throws IllegalStateException {
095 throw new IllegalStateException("Raw entity does not support stream decoding");
096 }
097
098 }